]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
Squashed 'dts/upstream/' changes from fe2d6c49bb4e..d08867ef8f12
authorTom Rini <trini@konsulko.com>
Wed, 30 Jul 2025 14:23:25 +0000 (08:23 -0600)
committerTom Rini <trini@konsulko.com>
Wed, 30 Jul 2025 14:23:25 +0000 (08:23 -0600)
d08867ef8f12 Merge tag 'v6.16-dts-raw'
0a3935a7ac7e Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
cdbf9e831b32 Merge tag 'soc-fixes-6.16-3' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
bad311fb385a arm64: dts: rockchip: Drop netdev led-triggers on NanoPi R5S
2e218e73258a Merge tag 'sunxi-clk-fixes-for-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into clk-fixes
0d793561b36b Merge tag 'v6.16-rc7-dts-raw'
4afd44a0f9e1 Merge tag 'char-misc-6.16-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
d4258ca2506f Merge tag 'sunxi-fixes-for-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into arm/fixes
6f58a4a3d85b Merge tag 'soc-fixes-6.16-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
7d36fa2aead7 Merge tag 'v6.16-rc6-dts-raw'
5b4fe5bc4d6c Merge tag 'clk-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
658c2ac70a6b Merge tag 'qcom-arm64-fixes-for-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/fixes
30434c1bbe5b Merge tag 'v6.16-rockchip-dtsfixes1' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into arm/fixes
fe1c74e923db Merge tag 'imx-fixes-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes
fc87372bbb95 Merge tag 'net-6.16-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
95306cebd27f arm64: dts: allwinner: a523: Rename emac0 to gmac0
87991de983b4 dt-bindings: net: sun8i-emac: Rename A523 EMAC0 to GMAC0
660bbdcb1908 arm64: dts: freescale: imx8mm-verdin: Keep LDO5 always on
2a8f1cf921d8 Merge tag 'v6.16-rc5-dts-raw'
7764f9945554 Merge tag 'i2c-for-6.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
f308bc1b45ec Merge tag 'soc-fixes-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
3801555e90ae Merge tag 'input-for-v6.16-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
f6493b7ab2e6 Merge tag 'iio-fixes-for-6.16a' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-linus
06e8c2fc200d Merge tag 'net-6.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
c5acde066c90 clk: sunxi-ng: v3s: Fix CSI SCLK clock name
3bfb31865adf Merge tag 'apple-soc-fixes-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/sven/linux into arm/fixes
ee3a6c0c6e28 dt-bindings: net: sophgo,sg2044-dwmac: Drop status from the example
3de3f2c47ebc dt-bindings: i2c: realtek,rtl9301: Fix missing 'reg' constraint
21a8d452d496 arm64: dts: imx95: Correct the DMA interrupter number of pcie0_ep
9767855abcf1 arm64: dts: rockchip: Add missing fan-supply to rk3566-quartz64-a
92b2acaf0da3 arm64: dts: rockchip: use cs-gpios for spi1 on ringneck
647bec67d41e Merge tag 'v6.16-rc4-dts-raw'
3de530f62c29 arm64: dts: add big-endian property back into watchdog node
70aadb6d7760 arm64: dts: imx95-15x15-evk: fix the overshoot issue of NETC
d3b30b770c70 arm64: dts: imx95-19x19-evk: fix the overshoot issue of NETC
87ec6dc7cb55 Merge tag 'tty-6.16-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
d1c317d2ce13 dt-bindings: iio: gyro: invensense,mpu3050: change irq maxItems
fe8a968606e7 dt-bindings: iio: adc: adi,ad7606: fix dt_schema validation warning
70aa5d0e1460 Merge tag 'devicetree-fixes-for-6.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
30f939ec9d1e dt-bindings: serial: 8250: Make clocks and clock-frequency exclusive
7c401dc8faf7 Merge tag 'v6.16-rc3-dts-raw'
84298fd5232d Merge tag 'i2c-for-6.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
5e306c8e57da dt-bindings: clock: mediatek: Add #reset-cells property for MT8188
9f63f409ab73 arm64: dts: rockchip: list all CPU supplies on ArmSoM Sige5
4e22da9b6577 arm64: dts: imx8mp-venice-gw74xx: fix TPM SPI frequency
d3fb320a33e9 arm64: dts: imx8mp-venice-gw73xx: fix TPM SPI frequency
e31af1649925 arm64: dts: imx8mp-venice-gw72xx: fix TPM SPI frequency
c2aa28307e3a arm64: dts: imx8mp-venice-gw71xx: fix TPM SPI frequency
90a33540cd99 Merge tag 'libnvdimm-fixes-6.16-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm
b8ab2abeeac6 dt-bindings: HID: i2c-hid: elan: Introduce Elan eKTH8D18
85773da82c5c Merge tag 'powerpc-6.16-3' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux
cb5c58a1e4b6 Merge tag 'v6.16-rc2-dts-raw'
ac5a2455698d arm64: dts: apple: Move touchbar mipi {address,size}-cells from dtsi to dts
bc677b407179 arm64: dts: apple: Drop {address,size}-cells from SPI NOR
76c8cfce5e1f arm64: dts: apple: t8103: Fix PCIe BCM4377 nodename
f0db656aa694 powerpc: dts: mpc8315erdb: Add GPIO controller node
96311d89661c powerpc/microwatt: Fix model property in device tree
2b4fde2f5082 dt-bindings: i2c: nvidia,tegra20-i2c: Specify the required properties
095eda05803e dt-bindings: serial: Convert altr,uart-1.0 to DT schema
db0e58d2587f dt-bindings: serial: Convert altr,juart-1.0 to DT schema
d2c031826ad8 dt-bindings: pmem: Convert binding to YAML
693df0922817 Merge tag 'v6.16-rc1-dts-raw'
42bf1c74586e arm64: dts: qcom: x1e80100: describe uefi rtc offset
07c8ad44a26d arm64: dts: qcom: sc8280xp-x13s: describe uefi rtc offset
ee54a18d8a5b dt-bindings: soc: fsl,ls1028a-reset: Drop extra "/" in $id
0c4780dea8a9 arm64: dts: rockchip: Add cd-gpios for sdcard detect on Cool Pi 4B
96e8f4d737e7 arm64: dts: rockchip: Add cd-gpios for sdcard detect on Cool Pi CM5
fa6ea8235d1b arm64: dts: rockchip: Adjust the HDMI DDC IO driver strength for rk3588
f1f137de95a6 arm64: dts: rockchip: fix rk3576 pcie1 linux,pci-domain
a4d276ce3997 pinctrl: MAINTAINERS: Drop bouncing Jianlong Huang
f2276a9a3306 Merge tag 'loongarch-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
9b7f7912690b Merge tag 'riscv-for-linus-6.16-mw1' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux
34a79d8b450a Merge tag 'spi-v6.16-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
60656d9d69c7 Merge tag 'pwm/for-6.16-rc1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux
185483e5516d Merge tag 'usb-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
82b0ede70e81 Merge tag 'tty-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
cf5586288846 Merge tag 'char-misc-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc
70afb5f7dba1 Merge tag 'mips_6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux
fdbd471f36e9 LoongArch: dts: Add PWM support to Loongson-2K2000
3ced8eecbb60 LoongArch: dts: Add PWM support to Loongson-2K1000
fbe4122cb758 LoongArch: dts: Add PWM support to Loongson-2K0500
ea388cd12b48 dt-bindings: drm/bridge: ti-sn65dsi83: drop $ref to fix lvds-vod* warnings
7103b4c36a4a Merge tag 'riscv-mw2-6.16-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/alexghiti/linux into for-next
9a6b386a2d3e Merge tag 'riscv-mw1-6.16-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/alexghiti/linux into for-next
4e717f475d40 Merge tag 'rtc-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux
08614ae8e2cb Merge tag 'dmaengine-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine
b8aa7fef75df Merge tag 'phy-for-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy
1b1aad416ff8 Merge tag 'pci-v6.16-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci
aba43883f85b Merge branch 'pci/dt-bindings'
1d90b503befe Merge branch 'pci/controller/qcom'
0db0a94747d9 Merge tag 'leds-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/leds
9bf6649192bc Merge tag 'mfd-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
0107bcabb83c Merge tag 'ata-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux
af3695e9189a Merge tag 'hwmon-for-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
2b4267b37eda Merge tag 'hyperv-next-signed-20250602' of git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux
fed506f23c59 Merge tag 'input-for-v6.16-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
26c047f1d621 Merge tag 'mtd/for-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux
509d8a0be181 Merge tag 'rproc-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux
213c5dbadd23 Merge tag 'mailbox-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/jassibrar/mailbox
77b1744dd134 Merge tag 'nand/for-6.16' into mtd/next
69598f8cf6f4 dt-bindings: pwm: adi,axi-pwmgen: Fix clocks
418d565e162f dt-bindings: rtc: rzn1: add optional second clock
7e286e009f74 Merge tag 'linux-watchdog-6.16-rc1' of git://www.linux-watchdog.org/linux-watchdog
e54e07e995ad Merge tag 'i3c/for-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux
b77068b989d1 Merge tag 'for-linus' of https://github.com/openrisc/linux
538862aba33e dt-bindings: watchdog: renesas,wdt: Document RZ/V2N (R9A09G056) support
a8ad8f16aa05 dt-bindings: watchdog: samsung-wdt: Add exynos990-wdt compatible
51eb468dec31 Merge tag 'mm-nonmm-stable-2025-05-31-15-28' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
07ddd9da3372 Merge tag 'soc-newsoc-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
d9e9df4c73ea Merge tag 'soc-dt-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
e32b012ba92c Merge tag 'soc-arm-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
8229dffd6155 Merge tag 'soc-drivers-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
92ddbc7b281f Merge tag 'iommu-updates-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/iommu/linux
60fccc768ca3 Merge tag 'i2c-for-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
de3468345344 Merge tag 'pinctrl-v6.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl
64d64658bb1d Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
2feab0192b3d Merge tag 'renesas-dts-for-v6.16-tag5' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
d2e6c3b1a961 Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
799cac52d435 Merge tag 'devicetree-for-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
7bb3a108ef22 dt-bindings: mailbox: qcom,apcs: Add separate node for clock-controller
939cb0c4baa1 Merge branches 'clk-amlogic', 'clk-allwinner', 'clk-rockchip' and 'clk-qcom' into clk-next
1142409d3ba1 Merge branches 'clk-socfpga', 'clk-sophgo', 'clk-thead' and 'clk-samsung' into clk-next
baaeae2a216c Merge branches 'clk-bindings', 'clk-renesas', 'clk-spacemit' and 'clk-cleanup' into clk-next
ce2790c97a29 Merge tag 'net-next-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
b7b077d37b30 Merge tag 'drm-next-2025-05-28' of https://gitlab.freedesktop.org/drm/kernel
9671e900d11e Merge tag 'media/v6.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
ceab2a443756 dt-bindings: timer: Add fsl,vf610-pit.yaml
797ede01deb9 dt-bindings: gpu: mali-bifrost: Add compatible for RZ/G3E SoC
9e6cc5046d38 ASoC: dt-bindings: qcom,sm8250: Add Fairphone 5 sound card
c0d1d4762e35 dt-bindings: net: dsa: mediatek,mt7530: Add airoha,an7583-switch
85d3dd3767d7 Merge tag 'thermal-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
608dc836c43c Merge tag 'mmc-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
e709800437f0 Merge tag 'pmdomain-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/linux-pm
2fed8c22fca0 Merge tag 'for-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply
841871381e3f Merge tag 'spi-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
82e042806351 Merge tag 'regulator-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator
6cd98d149a4e Merge tag 'gpio-updates-for-v6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux
c56d7645f65d Merge tag 'sound-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
531f5a82239b Merge tag 'pwm/for-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ukleinek/linux
c5c642e59f80 dt-bindings: arm/cpus: Allow 2 power-domains entries
1f34e1ba0664 dt-bindings: usb: dwc3-xilinx: allow dma-coherent
7fe9ca816df0 media: dt-bindings: sony,imx219: Allow props from video-interface-devices
23e1a9da2b61 dt-bindings: soundwire: qcom: Document v2.1.0 version of IP block
dc18bda804b0 dt-bindings: watchdog: fsl-imx-wdt: add compatible string fsl,ls1021a-wdt
39e0723837f5 dt-bindings: pinctrl: amlogic,pinctrl-a4: Add missing constraint on allowed 'group' node properties
52320e279b5f Merge tag 'timers-clocksource-2025-05-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
4ac72745a3ba Merge tag 'irq-msi-2025-05-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
eabba266a125 Merge tag 'irq-drivers-2025-05-25' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
cfeb2af0f1dc spi: dt-bindings: spi-sg2044-nor: Add SOPHGO SG2042
3fe54a460693 dt-bindings: mailbox: qcom: Add the SM7150 APCS compatible
d48dd7367ff4 dt-bindings: mailbox: add Sophgo CV18XX series SoC
7205fdc68aac Merge tag 'v6.16-p1' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
78be8e64e1d5 Merge tag 'linux-can-next-for-6.16-20250522' of git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next
c268694ae6c1 dt-bindings: net: airoha: Add EN7581 memory-region property
4f5aa39b37b3 arm64: dts: renesas: rzg3e-smarc-som: Reduce I2C2 clock frequency
b33d0aa6f5f2 dt-bindings: rtc: add schema for NXP S32G2/S32G3 SoCs
a11101f2861b dt-bindings: at91rm9260-rtt: add microchip,sama7d65-rtt
0868d96a7d71 dt-bindings: rtc: at91rm9200: add microchip,sama7d65-rtc
32d48c35b490 dt-bindings: rtc: qcom-pm8xxx: add uefi-variable offset
538b161c06d8 dt-bindings: i3c: silvaco,i3c-master: add i.MX94 and i.MX95 I3C
8d0721592b6a dt-bindings: watchdog: Add rk3562 compatible
7e2f745f8729 dt-bindings: watchdog: fsl,scu-wdt: Document imx8qm
46093162d96a dt-bindings: watchdog: Add NXP Software Watchdog Timer
b2ba88747136 Merge tag 'asoc-v6.16-2' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
277fcfcc8dce dt-bindings: microsoft,vmbus: Add interrupt and DMA coherence properties
93eb157cdee2 ASoC: codecs: add support for ES8375
62137585c9f1 Merge tag 'i2c-host-6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-mergewindow
07176cad5d48 Merge branches 'fixes', 'apple/dart', 'arm/smmu/updates', 'arm/smmu/bindings', 'fsl/pamu', 'mediatek', 'renesas/ipmmu', 's390', 'intel/vt-d', 'amd/amd-vi' and 'core' into next
e17bfdf2bd3d ASoC: dt-bindings: Add Everest ES8375 audio CODEC
b8f581eae5d9 dt-bindings: i2c: i2c-wmt: Convert to YAML
89a9fc8a198e dt-bindings: mfd: syscon: Add mediatek,mt8365-infracfg-nao
cf5bbfd397e6 dt-bindings: mfd: Correct indentation and style in DTS example
563f0fcfdb0f dt-bindings: mfd: Drop unrelated nodes from DTS example
1edb48c66ec4 dt-bindings: mfd: syscon: Add qcom,apq8064-sps-sic
9b2ea6c9e8cb dt-bindings: mfd: syscon: Add qcom,apq8064-mmss-sfpb
29ee27ad1c0a dt-bindings: mfd: syscon: Add mt7988-topmisc
c75d8d1f7422 dt-bindings: mfd: mediatek,mt8195-scpsys: Add support for MT6893
37027ad45e6d dt-bindings: mfd: samsung,s2mps11: add s2mpg10
0a34ed586984 dt-bindings: mfd: syscon: Add microchip,sama7d65-secumod
903f759ee35d dt-bindings: mfd: syscon: atmel,sama5d2-secumod: Convert to yaml
be643f887bf8 dt-bindings: mfd: atmel: Add microchip,sama7d65-gpbr
d35666a54bce dt-bindings: mmc: sdhci-of-dwcmhsc: Allow use of a power-domain
9c4b88c5a89e Merge tag 'wireless-next-2025-05-22' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
1b4f682e3ad4 Merge tag 'for-net-next-2025-05-22' of git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth-next
b21424815167 Merge tag 'asoc-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next
dd6fc25d89c7 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
88b634bfddd2 Merge tag 'icc-6.16-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/djakov/icc into char-misc-next
635c310eb96e Merge tag 'coresight-next-v6.16' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/coresight/linux into char-misc-next
c9cd65d9ea51 Merge branches 'ib-firmware-mfd-6.16', 'ib-mfd-clocksource-pwm-6.16', 'ib-mfd-gpio-nvmem-6.16', 'ib-mfd-regulator-6.16' and 'ib-mfd-regulator-6.16-1' into ibs-for-mfd-merged
2c559dd38fb0 Merge tag 'iio-for-6.16a-take2' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jic23/iio into char-misc-next
89c022fde09d Add Tegra264 support in AHUB drivers
ad5d21e87116 dt-bindings: display: rockchip: Convert cdn-dp-rockchip.txt to yaml
e34c1605234f Merge tag 'davinci-updates-for-v6.16-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into soc/arm
ca95dc05b5bb Merge tag 'juno-updates-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into soc/dt
9bab5690961c dt-bindings: ASoC: Document Tegra264 APE support
3fac990c1607 dt-bindings: ASoC: admaif: Add missing properties
2ff27434f054 dt-bindings: mfd: brcm,bcm59056: Add compatible for BCM59054
d2bb71f7f921 dt-bindings: mfd: brcm,bcm59056: Convert to YAML
508b29e71313 ASoC: dt-bindings: audio-graph-card2: reference audio-graph routing property
026c9a82d4d6 dt-bindings: leds: Add Texas Instruments TPS6131x flash LED driver
5aab6ddffa44 dt-bindings: net: Document support for Aeonsemi PHYs
c66ed7b8b5f8 Merge tag 'qcom-arm64-for-6.16-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt
2c15df445738 Merge tag 'qcom-arm32-for-6.16-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt
7d52cefecf33 Merge tag 'mtk-dts64-for-v6.16-2' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/dt
c3be03f1576b Merge tag 'v6.16-rockchip-dts32-2' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
151e84ca25b1 Merge tag 'v6.16-rockchip-dts64-3' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
fd61f1d659e9 Merge tag 'v6.16-rockchip-dts64-2' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
69ecc61139f5 Merge tag 'mvebu-dt64-6.16-1' of https://git.kernel.org/pub/scm/linux/kernel/git/gclement/mvebu into soc/dt
755e06a92789 Merge tag 'renesas-dts-for-v6.16-tag4' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
03424c08167f Merge tag 'renesas-dts-for-v6.16-tag3' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
224238999a2c Merge tag 'riscv-dt-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux into soc/dt
ef9c1679cc0a Merge tag 'microchip-dt64-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into soc/dt
45f7c4fc1a32 Merge tag 'at91-dt-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/at91/linux into soc/dt
2f4d88f59336 Merge tag 'sunxi-dt-for-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into soc/dt
5ce4d3de1bab Merge tag 'stm32-dt-for-v6.16-1' of https://git.kernel.org/pub/scm/linux/kernel/git/atorgue/stm32 into soc/dt
d89aa840ef5d Merge tag 'spacemit-dt-for-6.16-1' of https://github.com/spacemit-com/linux into soc/dt
43d0dd81da74 Merge tag 'qcom-arm32-for-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt
325cd9e9946a Merge tag 'dt-vt8500-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt into soc/dt
09c407adcd2c Merge tag 'qcom-arm64-for-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/dt
9fc38b83cdf5 Merge tag 'nuvoton-arm-6.16-devicetree' of https://git.kernel.org/pub/scm/linux/kernel/git/joel/bmc into soc/dt
c83799c8dd90 Merge tag 'qcom-drivers-for-6.16-2' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
e0314147cea5 Merge tag 'riscv-cache-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/conor/linux into soc/drivers
b1f49e53cf77 Merge tag 'samsung-drivers-6.16-2' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/drivers
3b55c18b3508 arm64: dts: nuvoton: Add pinctrl
deb09c527dc0 dt-bindings: spi: samsung: add exynosautov920-spi compatible
66dd7fd01067 mailmap: update and consolidate Casey Connolly's name and email
a0fb0d3f5f30 Merge tag 'riscv-sophgo-soc-for-v6.16' of https://github.com/sophgo/linux into soc/drivers
4160f8827e4d Merge tag 'qcom-drivers-for-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
bb77a5a73912 Merge tag 'soc-drivers-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt into soc/drivers
8707811d045c Merge tag 'amlogic-driver-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into soc/drivers
1e7fa6c4dbaa Merge tag 'dt64-cleanup-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-dt into soc/dt
e2e43e44fc51 Merge tag 'amlogic-arm64-dt-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into soc/dt
73195a6e0c5c Merge tag 'amlogic-arm-dt-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/amlogic/linux into soc/dt
38aa5a686d0e Merge tag 'samsung-dt64-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/dt
5d33e21e66f0 Merge tag 'reset-for-v6.16' of git://git.pengutronix.de/pza/linux into soc/drivers
3e9d465085a9 ARM: dts: samsung: sp5v210-aries: Align wifi node name with bindings
0b927692a7bd Merge tag 'ti-k3-dt-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux into soc/dt
0d52eb1cf5e4 arm64: dts: blaize-blzp1600: Enable GPIO support
da83afa6eb07 Merge tag 'thead-dt-for-v6.16' of https://github.com/pdp7/linux into soc/dt
4acee1d7632f dt-bindings: clock: socfpga: convert to yaml
e950e3eb3a33 dt-bindings: gpio: vf610: add ngpios and gpio-reserved-ranges
6f5a37dc8f30 ASoC: dt-bindings: audio-graph-card2: add missing mic-det-gpios
c04f34769343 dt-bindings: net: bluetooth: nxp: Add support for host-wakeup
541687515c1a dt-bindings: iio: adc: Add ROHM BD79100G
bb454172d88f dt-bindings: iio: adc: add NCT7201 ADCs
2d2b2b5c0772 dt-bindings: trivial-devices: Document SEN0322
8bec7a21e263 dt-bindings: iio: adc: mcp3911: add reset-gpios
ca406ea016be dt-bindings: iio: dac: Add adi,ad3530r.yaml
5fe995b1dd53 dt-bindings: iio: adc: Add compatible for Dimensity 1200 MT6893
1edc97a95aa5 dt-bindings: iio: dac: ad7293: add vrefin support
082ad88205a7 dt-bindings: Add device tree support for Winsen MHZ19B CO2 sensor
85963b0bd856 dt-bindings: Add Winsen to the vendor prefixes
c046c1cfd311 dt-bindings: spmi: Add Apple SPMI controller
92648c8bb3a5 dt-bindings: can: renesas,rcar-canfd: Document RZ/G3E support
a315f55a2a76 dt-bindings: can: renesas,rcar-canfd: Simplify the conditional schema
cf60fa765e1b dt-bindings: spmi: Add Apple SPMI NVMEM
2e56f235875c Merge tag 'mux-drv-6.16' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/krzk/linux into char-misc-next
41d62a413c79 dt-bindings: serial: 8250_omap: Drop redundant properties
6266de5456c9 dt-bindings: serial: Convert socionext,milbeaut-usio-uart to DT schema
b1248495c539 dt-bindings: serial: Convert microchip,pic32mzda-uart to DT schema
7a584be8cc34 dt-bindings: serial: Convert arm,sbsa-uart to DT schema
7faba0d1c0e1 dt-bindings: serial: Convert snps,arc-uart to DT schema
5d9cace6931e dt-bindings: serial: Convert marvell,armada-3700-uart to DT schema
b11585afcde7 dt-bindings: serial: Convert lantiq,asc to DT schema
2ee62910d9da dt-bindings: serial: Convert cirrus,ep7209-uart to DT schema
076f1b9065fd dt-bindings: serial: Convert arm,mps2-uart to DT schema
0f5b4990e744 dt-bindings: serial: Convert nxp,lpc3220-hsuart to DT schema
4604628e13ff dt-bindings: serial: Convert cnxt,cx92755-usart to DT schema
1be5ca8fbeae dt-bindings: serial: atmel,at91-usart: add microchip,sama7d65-usart
75cc729209d8 dt-bindings: usb: ti,usb8041: Add binding for TI USB8044 hub controller
c8b951038c12 dt-bindings: usb: samsung,exynos-dwc3: add dt-schema ExynosAutov920
214f164d27c6 dt-bindings: usb: Add Parade PS8833 Type-C retimer variant
8ec32a7db2e9 scsi: ufs: qcom: dt-bindings: Document the SM8750 UFS Controller
69025409db1d dt-bindings: display: bridge: renesas,dsi: allow properties from dsi-controller
486cad5cf1af dt-bindings: trivial-devices: Add VZ89TE to trivial
b0b6d2e9f637 arm64: dts: rockchip: move rk3562 pinctrl node outside the soc node
d6d0b4dfd181 arm64: dts: rockchip: fix rk3562 pcie unit addresses
95d9d7ed4bf1 arm64: dts: rockchip: move rk3528 pinctrl node outside the soc node
1bb1fbbea578 arm64: dts: rockchip: remove a double-empty line from rk3576 core dtsi
f0317857788b arm64: dts: rockchip: move rk3576 pinctrl node outside the soc node
83e4382f7a80 arm64: dts: rockchip: fix rk3576 pcie unit addresses
c4d3574fd109 arm64: dts: rockchip: Drop assigned-clock* from cpu nodes on rk3588
57e8cb7db7e9 arm64: dts: rockchip: Add missing SFC power-domains to rk3576
b6cea1360aa8 spi: dt-bindings: Add rk3528-spi compatible
34e62490c1c3 Revert "arm64: dts: mediatek: mt8390-genio-common: Add firmware-name for scp0"
23224a425b5f arm64: dts: mediatek: mt8188: Address binding warnings for MDP3 nodes
161f225efa42 arm64: dts: mt6359: Rename RTC node to match binding expectations
887334da0795 arm64: dts: mt8365-evk: Add goodix touchscreen support
6acb2267910a arm64: dts: mediatek: mt8188: Add missing #reset-cells property
4792760f558d arm64: dts: airoha: en7581: Add PCIe nodes to EN7581 SoC evaluation board
b6d6f3110d36 arm64: dts: airoha: en7581: Add gpio-ranges property for gpio controller
572c9e06138f arm64: dts: mediatek: mt7988a-bpi-r4: configure spi-nodes
1b9defdec732 arm64: dts: mediatek: mt7988a-bpi-r4: Add fan and coolingmaps
5269d9f97b76 arm64: dts: mediatek: mt7988: add phy calibration efuse subnodes
de8fba00158e arm64: dts: mediatek: mt7988: move uart0 and spi1 pins to soc dtsi
2046f03225a8 arm64: dts: mediatek: mt7988: add spi controllers
190bdc8a1f3d arm64: dts: mediatek: mt7988a-bpi-r4: enable xsphy
7a7fefa74dda arm64: dts: mediatek: mt7988: Add xsphy for ssusb0/pcie2
748391bdc918 arm64: dts: mediatek: mt7988a-bpi-r4: allow hw variants of bpi-r4
9bd2134f30ff dt-bindings: arm: mediatek: add bpi-r4 2g5 phy variant
6fb595f7e057 Add sound card support for QCS9100 and QCS9075
0cac869da752 arm64: dts: renesas: white-hawk-ard-audio: Fix TPU0 groups
114fba940bdd mips: dts: Add EcoNet DTS with EN751221 and SmartFiber XP8421-B board
30d15ab14519 dt-bindings: vendor-prefixes: Add SmartFiber
824fd090ff69 dt-bindings: mips: Add EcoNet platform binding
d5b777cdf13c mips: dts: pic32: pic32mzda: Rename the sdhci nodename to match with common mmc-controller binding
38f9e24fec25 arm64: dts: qcom: sm4450: Add RPMh power domains support
9b5728807d08 arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp altmode support
7e66fc1ced1e arm64: dts: qcom: ipq5424: Enable PCIe PHYs and controllers
6c037567bdce arm64: dts: qcom: ipq5424: Add PCIe PHYs and controller nodes
57668bababda arm64: dts: qcom: sc7280: Mark FastRPC context banks as dma-coherent
3e567e1e43b4 arm64: dts: qcom: sdx75-idp: Enable QPIC BAM & QPIC NAND support
aa2605ef1c0c arm64: dts: qcom: sdx75: Add QPIC NAND support
becd21cdde7d arm64: dts: qcom: sdx75: Add QPIC BAM support
339faffccdd0 arm64: dts: qcom: qcm2290: Add crypto engine
be5a2cb0e4d4 arm64: dts: qcom: x1e80100-vivobook-s15: Add bluetooth
1b9b8c4d0807 arm64: dts: qcom: x1e80100: Add PCIe lane equalization preset properties
d1065386a278 arm64: dts: qcom: qcs615: Fix up UFS clocks
24d341363edf arm64: dts: qcom: sa8775p: Clean up the PSCI PDs
25e8d99a99ac arm64: dts: qcom: msm8996-oneplus: Add SLPI VDD_PX
708f2ebe5562 arm64: dts: qcom: sm6350-pdx213: Wire up USB regulators
ae9cc53d8e50 arm64: dts: qcom: msm8998-yoshino: Add QUSB2PHY VDD supply
a14bc1f54f72 arm64: dts: qcom: msm8998-mtp: Add QUSB2PHY VDD supply
8a32261a7a9d arm64: dts: qcom: msm8998-fxtec: Add QUSB2PHY VDD supply
421e97a3fd6c arm64: dts: qcom: qcs615: Remove disallowed property from AOSS_QMP node
c891929b43f6 arm64: dts: qcom: msm8998: Remove mdss_hdmi_phy phandle argument
e1906f10fb90 arm64: dts: qcom: sdm845: Add specific APPS RSC compatible
57034f8ab737 arm64: dts: qcom: sc7180: Add specific APPS RSC compatible
2b09cf544e89 arm64: dts: qcom: ipq5332-rdp441: Enable PCIe phys and controllers
9e039129755d arm64: dts: qcom: ipq5332: Add PCIe related nodes
f4173e14cb38 arm64: dts: qcom: ipq9574: Add MHI to pcie nodes
f3bc67041b0a arm64: dts: qcom: sar2130p: add display nodes
5c82bf82ae12 arm64: dts: qcom: sdm845-starqltechn: add modem support
20f31a3e411b arm64: dts: qcom: sdm845-starqltechn: add graphics support
eafd56e51f9c arm64: dts: qcom: sdm845-starqltechn: add initial sound support
60ed1a6b1df9 arm64: dts: qcom: qrb2210-rb1: add Bluetooth support
e600d195af05 dt-bindings: i2c: i2c-rk3x: Add compatible string for RK3528
ba298e1880ec dt-bindings: i2c: renesas,riic: Document RZ/V2N (R9A09G056) support
8360480c58d7 dt-bindings: i2c: dw: Add Sophgo SG2044 SoC I2C controller
519a8fc26117 dt-bindings: i2c: dw: merge duplicate compatible entry.
a5b8efc7c924 dt-bindings: i2c: i2c-mt65xx: Add MediaTek Dimensity 1200 MT6893
c7e668fbc28e dt-bindings: net: wireless: ath12k: describe firmware-name property
c315c2d590f0 dt-bindings: timer: renesas,tpu: remove binding documentation
2e0c91fb13ae Merge branch 'icc-sa8775p' into icc-next
fb0b120a1a93 dt-bindings: mmc: spacemit,sdhci: add support for K1 SoC
46ff3a1b29bc ASoC: dt-bindings: qcom,sm8250: Add QCS9100 and QCS9075 sound card
d1d279316629 dt-binding: mmc: microchip,sdhci-pic32: convert text based binding to json schema
330730b5c105 dt-bindings: crypto: Convert Marvell CESA to DT schema
e2659dcdb3ea dt-bindings: crypto: Convert img,hash-accelerator to DT schema
4dc2e127ef91 dt-bindings: crypto: Convert hisilicon,hip0{6,7}-sec to DT schema
44772d6d4e9b dt-bindings: crypto: Convert brcm,spum-crypto to DT schema
fbb6c9a494af dt-bindings: crypto: Convert axis,artpec6-crypto to DT schema
c017f54c9fff dt-bindings: crypto: Convert amd,ccp-seattle-v1a to DT schema
a5f94755bfb6 dt-bindings: crypto: Drop obsolete mediatek,eip97-crypto
ff768caf62eb dt-bindings: crypto: fsl,sec-v4.0: Add fsl,sec-v6.0
6ecbc066dc7c Merge tag 'drm-msm-next-2025-05-16' of https://gitlab.freedesktop.org/drm/msm into drm-next
9dfb31b362db riscv: dts: sophgo: switch precise compatible for existed clock device for CV18XX
85e7467e1300 riscv: dts: sophgo: Add initial device tree of Sophgo SRD3-10
83177f084b2f dt-bindings: riscv: sophgo: Add SG2044 compatible string
3737ab2125be dt-bindings: interrupt-controller: Add Sophgo SG2044 PLIC
247d63c217bc dt-bindings: interrupt-controller: Add Sophgo SG2044 CLINT mswi
f0df16d747de riscv: dts: sopgho: use SOC_PERIPHERAL_IRQ to calculate interrupt number
809b2feac3f8 riscv: dts: sophgo: rename header file cv18xx.dtsi to cv180x.dtsi
3f8df5f3e748 riscv: dts: sophgo: Move riscv cpu definition to a separate file
2909054d6f9d riscv: dts: sophgo: Move all soc specific device into soc dtsi file
f4cdf8f5f17b riscv: sophgo: dts: Add spi controller for SG2042
c2b7b3a675c7 riscv: dts: sophgo: sg2042: add pinctrl support
d05f1cff48c5 ARM: dts: qcom: apq8064-ifc6410: drop HDMI HPD GPIO
7a6c138888cf arm64: dts: qcom: qcm2290: fix (some) of QUP interconnects
adc6b59b4259 arm64: dts: qcom: sc8280xp-crd: Enable SLPI
ec0bf0004515 arm64: dts: qcom: sc8280xp-lenovo-thinkpad-x13s: enable sensors DSP
0f644dd61ebb arm64: dts: qcom: sc8280xp: Add SLPI
92734dba91d4 arm64: dts: qcom: sc8280xp: Fix node order
2e29d8db414b arm64: dts: qcom: x1e80100: Enable cpufreq
59bd0aec0418 arm64: dts: qcom: x1e80100: Add cpucp mailbox and sram nodes
6528ca226950 arm64: dts: qcom: x1e80100-hp-x14: drop bogus USB retimer
b15ca38a9a5a arm64: dts: qcom: x1e78100-t14s: Enable audio headset support
a187fa6211ad arm64: dts: qcom: x1e78100-t14s: enable SDX62 modem
5eca7d1cfd49 dt-bindings: PCI: microchip,pcie-host: Fix DMA coherency property
50f1a27c303c dt-bindings: timer: renesas,ostm: Document RZ/V2N (R9A09G056) support
8d256f3ddec5 dt-bindings: thermal: qcom-tsens: Add ipq5018 compatible
7be116f73307 dt-bindings: thermal: Add support for Airoha EN7581 thermal sensor
cc1a22604a95 dt-bindings: timer: Convert marvell,armada-370-timer to DT schema
ea4284f3e172 dt-bindings: timer: Convert ti,keystone-timer to DT schema
4f1bf0aa2ecb dt-bindings: timer: Convert st,spear-timer to DT schema
494bc2733ec5 dt-bindings: timer: Convert socionext,milbeaut-timer to DT schema
a2e0a62b5750 dt-bindings: timer: Convert snps,arc-timer to DT schema
46d4eaf6b0dc dt-bindings: timer: Convert snps,archs-rtc to DT schema
935c813b69af dt-bindings: timer: Convert snps,archs-gfrc to DT schema
5f8cc6ccdcfa dt-bindings: timer: Convert lsi,zevio-timer to DT schema
ef36916d6a28 dt-bindings: timer: Convert jcore,pit to DT schema
878db709baf4 dt-bindings: timer: Convert img,pistachio-gptimer to DT schema
c032acacb214 dt-bindings: timer: Convert ezchip,nps400-timer to DT schema
1b65ea760f37 dt-bindings: timer: Convert cirrus,clps711x-timer to DT schema
f460f99b561c dt-bindings: timer: Convert altr,timer-1.0 to DT schema
e5d2349b1506 dt-bindings: timer: Add ESWIN EIC7700 CLINT
440820d62a31 dt-bindings: timer: Add EcoNet EN751221 "HPT" CPU Timer
bf84d1e94975 dt-bindings: timer: Convert arm,mps2-timer to DT schema
bcc8b8e14160 dt-bindings: timer: Add Sophgo SG2044 ACLINT timer
93db5ef1eaf2 dt-bindings: timer: Convert cnxt,cx92755-timer to DT schema
9460d854813b dt-bindings: timer: Convert csky,gx6605s-timer to DT schema
28a94c60f1d9 dt-bindings: timer: Convert csky,mptimer to DT schema
c9ae39b1b998 dt-bindings: timer: Convert marvell,orion-timer to DT schema
c0c401e88d14 dt-bindings: timer: Convert fsl,gtm to YAML
96d7ce4f7338 dt-bindings: timer: Add NXP System Timer Module
67b135f96793 Merge branch 'for-linus' into for-next
737898027ddf ARM: dts: microchip: sama7g54_curiosity: Add fixed-partitions for spi-nor flash
c86ffc0d331c ARM: dts: microchip: sama7d65: Add RTT timer to curiosity board
cb9109d2f17f ARM: dts: microchip: sama7d65: Add RTT and GPBR Support for sama7d65 SoC
cb1ae1d11442 ARM: dts: microchip: sama7d65: Add SRAM and DRAM components support
a5bda086b593 ARM: dts: microchip: sama7d65_curiosity: add EEPROM
621ce651bf39 ARM: dts: microchip: sama7d65: Add MCP16502 to sama7d65 curiosity
30bf5da5dd65 ARM: dts: microchip: sama7d65: Enable GMAC interface
00eda56f3bad ARM: dts: microchip: sama7d65: Add FLEXCOMs to sama7d65 SoC
cd6e1758eecc ARM: dts: microchip: sama7d65: Add gmac interfaces for sama7d65 SoC
5e46b349a198 Merge tag 'v6.15-rc6' into next
12821e764fcc Merge tag 'mediatek-drm-next-20250515' of https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux into drm-next
f21637ac3d69 riscv: dts: starfive: jh7110-common: bootph-pre-ram hinting needed by boot loader
382ce3ced12b riscv: dts: starfive: jh7110-common: add eeprom node to i2c5
e5e233a1b36f riscv: dts: starfive: jh7110-common: qspi flash setting read-delay 2 cycles max 100MHz
796fcc4bd000 riscv: dts: starfive: jh7110-common: add CPU BUS PERH QSPI clocks to syscrg
3a25610392e1 riscv: dts: starfive: jh7110-common: use macros for MMC0 pins
8d3efdc1a649 riscv: dts: starfive: fml13v01: enable USB 3.0 port
23fae8676f65 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
0cf0323d1114 arm64: dts: rockchip: Improve LED config for NanoPi R5S
e3bece005d7b arm64: dts: rockchip: add px30-pp1516 base dtsi and board variants
6a9591a44535 dt-bindings: arm: rockchip: add PX30-PP1516 boards from Theobroma Systems
3e6efd7e76f8 arm64: dts: rockchip: add px30-cobra base dtsi and board variants
b42058e5589c dt-bindings: arm: rockchip: add PX30-Cobra boards from Theobroma Systems
76d0d8e00c9a arm64: dts: rockchip: move reset to dedicated eth-phy node on ringneck
cb54a264ecdb arm64: dts: rockchip: add basic mdio node to px30
0a0ebebfdd45 arm64: dts: rockchip: disable unrouted USB controllers and PHY on RK3399 Puma with Haikou
97640da1f41d arm64: dts: rockchip: disable unrouted USB controllers and PHY on RK3399 Puma
0fe42d171081 arm64: dts: rockchip: fix internal USB hub instability on RK3399 Puma
53aacaed0ad1 dt-bindings: usb: cypress,hx3: Add support for all variants
17b25bb5d028 dt-bindings: ata: Convert arasan,cf-spear1340 to DT schema
a942b710d148 dt-bindings: ata: Convert marvell,orion-sata to DT schema
2b89ce177fad dt-bindings: ata: Convert cavium,ebt3000-compact-flash to DT schema
7452325fd0c4 dt-bindings: ata: Convert apm,xgene-ahci to DT schema
5c3af2fd178e dt-bindings: ata: Convert st,ahci to DT schema
0ed8fb4eda2a ARM: dts: rockchip: add rk3036 usb2phy nodes and enable them on kylin
76b476eca710 arm64: dts: rockchip: move rk3528 i2c+uart aliases to board files
19b80e137230 dt-bindings: Document Tegra264 HDA Support
ea2c684c09e7 dt-bindings: Update Tegra194 and Tegra234 HDA bindings
c1909afcb360 ASoC: codecs: add support for ES8389
8426194407bf spi: dt-bindings: tegra: Document IOMMU property for Tegra234 QSPI
62ad37f8f2ed dt-bindings: net: snps,dwmac: Align mdio node in example with bindings
ef92e3eda5a9 media: dt-bindings: renesas,vsp1: add top-level constraints
95ec73c1eddb media: dt-bindings: renesas,fcp: add top-level constraints
b0b60170175f arm64: dts: qcom: x1e80100-hp-elitebook-ultra-g1q: DT for HP EliteBook Ultra G1q
c7583d9b7c0c dt-bindings: arm: qcom: Document HP EliteBook Ultra G1q
76902454839f arm64: dts: qcom: x1e80100-hp-omnibook-x14: add sound label
a955543d1653 arm64: dts: qcom: sm8650: add the missing l2 cache node
cc5e19202270 ARM: dts: qcom: apq8064: link LVDS clocks
da97b5b4917b arm64: dts: qcom: x1e001de-devkit: Enable support for both Type-A USB ports
d45699c17e6e arm64: dts: qcom: Add industrial mezzanine support for qcs6490-rb3gen2
9b7d10ecf824 arm64: dts: qcom: x1e80100-hp-omnibook-x14: Enable SMB2360 0 and 1
0f8fa5904528 ARM: dts: qcom-msm8960: add missing clocks to the timer node
5f6bbd1d3884 arm64: dts: qcom: ipq5018: enable the download mode support
0bf354f3bdd0 dt-bindings: mfd: qcom,tcsr: Add compatible for ipq5018
6f60724b4f2e arm64: dts: qcom: msm8998-lenovo-miix-630: add Venus node
78729fd6dfe3 arm64: dts: qcom: ipq5018: Enable PCIe
d2aedac00e9c arm64: dts: qcom: ipq5018: Add PCIe related nodes
559cb4221c84 arm64: dts: qcom: sm8350: Fix typo in pil_camera_mem node
94419a80d052 arm64: dts: qcom: x1e80100-romulus: Enable DP over Type-C
f44415787e7f dt-bindings: cache: add QiLai compatible to ax45mp
08e9a9a39b30 ARM: dts: davinci: da850-evm: Increase fifo threshold
ad280853f61b dt-bindings: gpio: tegra186: Add gpio-ranges
7b998eb79596 dt-bindings: mmc: vt8500-sdmmc: Convert to YAML
d5a8ccb27d8c dt-bindings: mmc: sdhci-msm: Add the SM7150 compatible
fd1a8c37a25c dt-bindings: mmc: fsl,esdhc: add compatible string fsl,ls1021a-esdhc
77ecc38be615 dt-bindings: mmc: mtk-sd: Add support for Dimensity 1200 MT6893
2c24ea1a68a1 dt-bindings: mmc: sdhci-of-dwcmhsc: Add Sophgo SG2044 support
2b3a0861f554 dt-bindings: mmc: arasan,sdhci: Add Renesas RZ/N1D
03a4c81a9ab7 dt-bindings: mmc: renesas,sdhi: Document RZ/V2N support
52e04e847a22 dt-bindings: mmc: marvell,xenon-sdhci: Drop requiring 2 clocks
163995fb1db9 dt-bindings: mmc: marvell,xenon-sdhci: Add reference to sdhci-common.yaml
50c1b5b51bd9 dt-bindings: mmc: marvell,xenon-sdhci: Allow "dma-coherent" and "iommus"
6b9ef3e93796 dt-bindings: mmc: Remove redundant sdhci.txt
ea090fe3f0ba arm64: dts: renesas: r9a09g057: Add DMAC nodes
2dc3ede3ee99 dt-bindings: dma: rz-dmac: Document RZ/V2H(P) family of SoCs
f17786beeb4b dt-bindings: dma: rz-dmac: Restrict properties for RZ/A1H
4062957c0797 arm64: dts: allwinner: a100: add Liontron H-A133L board support
6cd646345b08 dt-bindings: Document Tegra264 ADMA support
c751179c1fed ASoC: dt-bindings: mediatek: Simplify mediatek,clk-provider
d133a86545cd regulator: dt-bindings: mt6357: Drop fixed compatible requirement
465ea6ad77e4 riscv: dts: renesas: Add specific RZ/Five cache compatible
40fb609df22a dt-bindings: phy: rockchip,inno-usb2phy: add rk3562
3a0a0b51136f dt-bindings: phy: rockchip,inno-usb2phy: add rk3036 compatible
8ee5033b766d dt-bindings: phy: renesas,usb2-phy: Document RZ/V2H(P) SoC
9b528f755a22 dt-bindings: phy: renesas,usb2-phy: Add clock constraint for RZ/G2L family
d24fabd489af dt-bindings: phy: samsung,usb3-drd-phy: add exynos2200 support
9fdcbbd17f0c dt-bindings: phy: add exynos2200 eusb2 phy support
3529480b0e97 dt-bindings: phy: rockchip: Convert RK3399 PCIe PHY to schema
40cec851b166 dt-bindings: phy: imx8mq-usb: add imx95 tuning support
7fff9434c126 dt-bindings: phy: imx8mq-usb: fix fsl,phy-tx-vboost-level-microvolt property
ee3f5c78f48f ASoC: dt-bindings: Add Everest ES8389 audio CODEC
00b2fda0a367 dt-bindings: phy: mediatek,tphy: Add support for MT6893
65a55e49f6ac dt-bindings: phy: mediatek,dsi-phy: Add support for MT6893
276d6f9a15b2 ARM: dts: stm32: add initial support for stm32mp157-ultra-fly-sbc board
57ea261308f9 dt-bindings: arm: stm32: Document Ultratronik's Fly board DT binding
44704b414013 dt-bindings: vendor-prefixes: Add Ultratronik
1595ef915c5e arm64: dts: st: use lptimer3 as tick broadcast source on stm32mp257f-ev1
f0c546bfa99d arm64: dts: st: add low-power timer nodes on stm32mp251
1ffad119ccb4 arm64: dts: st: Add SPI NOR flash support on stm32mp257f-ev1 board
12747b4ee44b arm64: dts: st: Add ospi port1 pinctrl entries in stm32mp25-pinctrl.dtsi
02caa1aece88 arm64: dts: st: Add OMM node on stm32mp251
19c508dc3d58 ARM: dts: stm32: support STM32h747i-disco board
9d5ec2c9c5d5 ARM: dts: stm32: add an extra pin map for USART1 on stm32h743
59621a6472cd ARM: dts: stm32: add pin map for UART8 controller on stm32h743
8fe35c381c7c ARM: dts: stm32: add uart8 node for stm32h743 MCU
aae9a0192918 dt-bindings: clock: stm32h7: rename USART{7,8}_CK to UART{7,8}_CK
06f64674b332 dt-bindings: arm: stm32: add compatible for stm32h747i-disco board
9a72c83f2e67 ARM: dts: stm32h7-pinctrl: add _a suffix to u[s]art_pins phandles
f907d6456095 ARM: dts: st: stm32: Align wifi node name with bindings
11b819c7a67a ARM: dts: stm32: add low power timer on STM32F746
9c62520ce1f6 ARM: dts: stm32: add vrefint support to adc on stm32mp13
1f4bfaf76020 ARM: dts: stm32: add vrefint calibration on stm32mp13
24225621dc54 dt-bindings: phy: rockchip: Convert RK3399 Type-C PHY to schema
a74d58d14616 dt-bindings: phy: cadence-torrent: enable PHY_TYPE_USXGMII
0cdc2d006c41 dt-bindings: phy: mtk-xs-phy: support type switch by pericfg
54599aec7dc4 dt-bindings: phy: mtk-xs-phy: Add mt7988 compatible
bc3951af24ec dt-bindings: ata: Convert ti,dm816-ahci to DT schema
c52df73fb82d riscv: dts: spacemit: add gpio LED for system heartbeat
9ea19a5fd9a0 riscv: dts: spacemit: add gpio support for K1 SoC
99f3d360eac3 riscv: dts: spacemit: Acquire clocks for UART
4a6e0a0058b8 riscv: dts: spacemit: Acquire clocks for pinctrl
76ca3d9c3343 riscv: dts: spacemit: Add clock tree for SpacemiT K1
c439ada53241 dt-bindings: trivial-devices: Add Maxim max30208
094f9976968a dt-bindings: soc: fsl,qman-fqd: Fix reserved-memory.yaml reference
7346cb46c9cc dt-bindings: interrupt-controller: Convert ti,omap-intc-irq to DT schema
1a3c8332700b dt-bindings: interrupt-controller: Convert ti,omap4-wugen-mpu to DT schema
16a954b6f7cd dt-bindings: interrupt-controller: Convert ti,keystone-irq to DT schema
f140b56fbd3c dt-bindings: interrupt-controller: Convert technologic,ts4800-irqc to DT schema
a36fcbda86fe dt-bindings: interrupt-controller: Convert st,spear3xx-shirq to DT schema
fca0cfe246ea dt-bindings: interrupt-controller: Convert snps,dw-apb-ictl to DT schema
a129aba3d807 dt-bindings: interrupt-controller: Convert snps,archs-intc to DT schema
3c46f013a4cb dt-bindings: interrupt-controller: Convert snps,archs-idu-intc to DT schema
6d2c252561ae dt-bindings: interrupt-controller: Convert snps,arc700-intc to DT schema
4bd22a347e0c dt-bindings: interrupt-controller: Convert qca,ar7100-misc-intc to DT schema
758a06785fa1 dt-bindings: interrupt-controller: Convert qca,ar7100-cpu-intc to DT schema
e8586aed8d6c dt-bindings: interrupt-controller: Convert marvell,odmi-controller to DT schema
cd31b6552214 dt-bindings: interrupt-controller: Convert marvell,cp110-icu to DT schema
486280047d47 dt-bindings: interrupt-controller: Convert marvell,ap806-sei to DT schema
257773207f9b dt-bindings: interrupt-controller: Convert marvell,ap806-gicp to DT schema
ccf7d0237412 dt-bindings: interrupt-controller: Convert marvell,armada-8k-pic to DT schema
9c0f9b138b59 dt-bindings: interrupt-controller: Convert lsi,zevio-intc to DT schema
6e6f1ad3f4ef dt-bindings: interrupt-controller: Convert jcore,aic to DT schema
68c1ed5d2aae dt-bindings: interrupt-controller: Convert img,pdc-intc to DT schema
ed32c7530696 dt-bindings: interrupt-controller: Convert google,goldfish-pic to DT schema
72cb10cd21c0 dt-bindings: interrupt-controller: Convert ezchip,nps400-ic to DT schema
52170bfc0584 dt-bindings: interrupt-controller: Convert csky,mpintc to DT schema
66d63b28d3a5 dt-bindings: interrupt-controller: Convert csky,apb-intc to DT schema
566f66349efe dt-bindings: interrupt-controller: Convert cirrus,ep7209-intc to DT schema
e1db76de5df2 dt-bindings: interrupt-controller: Convert brcm,bcm6345-l1-intc to DT schema
9f589c30f9b4 dt-bindings: interrupt-controller: Convert arm,nvic to DT schema
73718cb7e2b8 dt-bindings: interrupt-controller: Convert amazon,al-fic to DT schema
b023286f3b16 dt-bindings: interrupt-controller: Convert al,alpine-msix to DT schema
0379a7325124 dt-bindings: interrupt-controller: Convert abilis,tb10x-ictl to DT schema
9dfa70d6da10 dt-bindings: interrupt-controller: Convert microchip,pic32mzda-evic to DT schema
e2c7df57fcc2 dt-bindings: interrupt-controller: Convert chrp,open-pic to DT schema
a5aa7aa29361 dt-bindings: interrupt-controller: Convert cdns,xtensa-{mx,pic} to DT schema
8c61a1524b88 dt-bindings: interrupt-controller: Convert ti,cp-intc to DT schema
fd1686389af0 dt-bindings: interrupt-controller: Convert aspeed,ast2xxx-scu-ic to DT schema
5b9b0407663f dt-bindings: interrupt-controller: Convert aspeed,ast2400-i2c-ic to DT schema
f9bbcc9b6c01 dt-bindings: interrupt-controller: Convert faraday,ftintc010 to DT schema
7294b1050582 dt-bindings: interrupt-controller: Convert arm,versatile-fpga-irq to DT schema
649b5c8621b8 dt-bindings: interrupt-controller: Convert marvell,orion-bridge-intc to DT schema
734c54291c99 dt-bindings: interrupt-controller: Convert brcm,bcm2835-armctrl-ic to DT schema
664ccaddb8c7 dt-bindings: interrupt-controller: Convert cnxt,cx92755-ic to DT schema
0ea75feee1fc dt-bindings: Move altr,msi-controller to interrupt-controller directory
6495e4ed6240 dt-bindings: display: msm: correct example in SM8350 MDSS schema
5b9ad5a2dfdd ARM: dts: rockchip: Sonoff-iHost: correct IO domain voltages
9769e597df87 ARM: dts: rockchip: Sonoff-iHost: adjust SDIO for stability
cfc9b15d5a11 arm64: dts: qcom: qcs615: add QCrypto nodes
9c0b672d1a26 ARM: dts: qcom: apq8064: move replicator out of soc node
b8fdb42c3ef8 ARM: dts: qcom: apq8064: use new compatible for SPS SIC device
ff32b336f170 ARM: dts: qcom: apq8064: use new compatible for SFPB device
6bc1bbe5e284 ARM: dts: qcom: apq8064 merge hw splinlock into corresponding syscon device
97c58abad644 ARM: dts: qcom: apq8064: add missing clocks to the timer node
588277158131 ARM: dts: qcom: apq8064-lg-nexus4-mako: Enable WiFi
c38f33d12773 dt-bindings: remoteproc: qcom,sm8150-pas: Add missing SC8180X compatible
0e18b8f3302e dt-bindings: remoteproc: qcom,sm8350-pas: Add SC8280XP
8b2b4a3d2f48 arm64: dts: qcom: qcm6490-fairphone-fp5: Add DisplayPort sound support
d4442f6cb5b5 arm64: dts: qcom: sa8775p: Add default pin configurations for QUP SEs
d80b5d5eb446 arm64: dts: qcom: sm8550: add iris DT node
440474042b22 arm64: dts: qcom: sm8750: Add LLCC node
52b421406179 dt-bindings: cache: Convert marvell,tauros2-cache to DT schema
c9a46662587b dt-bindings: cache: Convert marvell,{feroceon,kirkwood}-cache to DT schema
c5ded6da00b3 Merge tag 'ib-mfd-gpio-nvmem-v6.16' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd into gpio/for-next
4c5098982fc0 dt-bindings: pinctrl: qcom: correct gpio-ranges in examples for qcs8300
e5f1fdf5993a dt-bindings: pinctrl: qcom: correct gpio-ranges in examples for qcs615
d4bb52b1a986 dt-bindings: mfd: stm32-lptimer: Add support for stm32mp25
625ca4337c13 dt-bindings: arm: sunxi: Add Liontron H-A133L board name
f04a227e17cd dt-bindings: vendor-prefixes: Add Liontron name
bfe02c5509da ARM: dts: bananapi: add support for PHY LEDs
c38080e2bde0 arm64: dts: exynos: gs101: add pmu-intr-gen syscon node
aaaa3d2d975d dt-bindings: soc: samsung: exynos-pmu: gs101: add google,pmu-intr-gen phandle
60e3d8f854d2 dt-bindings: soc: google: Add gs101-pmu-intr-gen binding documentation
de42c4f36861 Merge 6.15-rc6 into usb-next
07f7e9376270 dt-bindings: vertexcom-mse102x: Fix IRQ type in example
58b1a45e9a93 dt-bindings: net: renesas-gbeth: Add support for RZ/V2N (R9A09G056) SoC
52ca9c9ddc70 dt-bindings: cache: qcom,llcc: Document SM8750 LLCC block
025a2913e06b arm64: dts: fvp: Add ETE and TRBE nodes for Rev C model
5ad508ce1d56 arm64: dts: arm: Drop the clock-frequency property from timer nodes
25d74c506801 arm64: dts: fvp: Reserve 64MB for the FF-A firmware in memory map
9e9e8b5cf5a6 arm64: dts: fvp: Add CPU idle states for Rev C model
f473d29f366e arm64: dts: fvp: Add system timer for broadcast during CPU idle
007cc6992f97 dt-bindings: hwmon: Add bindings for mpq8785 driver
76523dbde424 dt-bindings: Add SQ52206 to ina2xx devicetree bindings
6c8240f637d2 dt-bindings: display/msm: hdmi: Fix constraints on additional 'port' properties
85f8e9ee5faf dt-bindings: display/msm/hdmi: drop obsolete GPIOs from schema
fdfcf09cd00d dt-bindings: allwinner: add H616 DE33 clock binding
b972073fb318 dt-bindings: cache: add specific RZ/Five compatible to ax45mp
0298beca0879 Merge tag 'imx-dt64-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
f2bb39101a3b Merge tag 'imx-dt-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
6c162beac92a Merge tag 'imx-bindings-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into soc/dt
3ee6d99dd050 Merge tag 'omap-for-v6.16/dt-signed' of https://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap into soc/dt
3f5fa91e9e2d ARM: dts: vt8500: list all four timer interrupts
1f83cca57612 ARM: dts: vt8500: add DT nodes for the system config ID register
6c470fc07949 ARM: dts: vt8500: Add VIA APC Rock/Paper board
febd1ce7bd7c dt-bindings: arm: vt8500: Add VIA APC Rock/Paper boards
95f9c7c6dc87 Merge branch 'arm32-for-6.15' into arm32-for-6.16
c8676402f0c1 arm64: dts: qcom: sdm845-xiaomi-beryllium-ebbg: introduce touchscreen support
ab71f552530b arm64: dts: qcom: sdm845-xiaomi-beryllium-tianma: introduce touchscreen support
d3b7b1cd4294 arm64: dts: qcom: sdm845-xiaomi-beryllium-common: add touchscreen related nodes
be86327be1f6 arm64: dts: qcom: qcs8300: add the pcie smmu node
d1df8506d7f8 dt-bindings: arm: qcom,ids: add SoC ID for SM8750
aa1565085185 arm64: dts: qcom: x1e80100-*: Drop useless DP3 compatible override
13c97c62e922 ARM: dts: qcom: msm8226-motorola-falcon: specify vddio_disp output voltage
133d8def9bb5 ARM: dts: qcom: msm8226-motorola-falcon: limit TPS65132 to 5.4V
891fc76ba245 ARM: dts: qcom: msm8226-motorola-falcon: add I2C clock frequencies
e69bb23d6f80 ARM: dts: qcom: msm8226-motorola-falcon: add clocks, power-domain to simpleFB
9fe2e9dfcb24 arm64: dts: rockchip: drop wrong spdif clock from edp1 on rk3588
5141e453466a arm64: dts: rockchip: Add RK3562 evb2 devicetree
20bdf0cc35a8 arm64: dts: rockchip: add core dtsi for RK3562 SoC
e228bf1a80cf dt-bindings: input: convert dlg,da7280.txt to dt-schema
3958d8fa0b1f arm64: dts: qcom: msm8953: Add interconnects
fe42f0e4c34a arm64: dts: qcom: msm8953: Add uart_5
574d98f8dc8f arm64: dts: qcom: sm8350: Use q6asm defines for reg
1ece6dc8a89e arm64: dts: qcom: sm7325-nothing-spacewar: Use q6asm defines for reg
0c54cbe1b4a1 arm64: dts: qcom: sdm850*: Use q6asm defines for reg
90aef0299579 arm64: dts: qcom: sdm845*: Use q6asm defines for reg
b7b96192306a arm64: dts: qcom: sc7280: Use q6asm defines for reg
f61e104f90f9 arm64: dts: qcom: sc7180-acer-aspire1: Use q6asm defines for reg
7630b69ba5ed arm64: dts: qcom: qrb5165-rb5: Use q6asm defines for reg
e10687993363 arm64: dts: qcom: msm8996*: Use q6asm defines for reg
34723a48b744 arm64: dts: qcom: msm8953: Use q6asm defines for reg
f836b37531ba arm64: dts: qcom: msm8916-modem-qdsp6: Use q6asm defines for reg
d20576ba16ab arm64: dts: qcom: apq8096-db820c: Use q6asm defines for reg
4fe4605f0189 arm64: dts: qcom: qcm6490-fairphone-fp5: Hook up DisplayPort over USB-C
19532936991f arm64: dts: qcom: qcm6490-fairphone-fp5: Add OCP96011 audio switch
4816893c07b5 arm64: dts: qcom: qcm6490-fairphone-fp5: Add PTN36502 redriver
e21032020eb3 dt-bindings: clock: add SM6350 QCOM video clock bindings
963a57d1a640 arm64: dts: qcom: sm6350: Align reg properties with latest style
a6498df45f67 arm64: dts: qcom: sc7280: Stop setting dmic01 pinctrl for va-macro
f575876f8adf arm64: dts: qcom: x1e80100: Add OPPs up to Turbo L3 for GPU
28999942677d arm64: dts: qcom: x1e80100: Add ACD levels for GPU
134ab78d697d spi: dt-bindings: nuvoton,wpcm450-fiu: Drop unrelated nodes from DTS example
6c96065aa8cb spi: dt-bindings: fsl,dspi: Fix example indentation
b2c36c9410e6 dt-bindings: arm: rockchip: Add rk3562 evb2 board
1a6745865a66 dt-bindings: soc: rockchip: Add rk3562 syscon compatibles
11bb268f9698 dt-bindings: rockchip: pmu: Add rk3562 compatible
c6c0fbd0b465 arm64: dts: rockchip: Enable Ethernet controller on Radxa E20C
882f3957a39f arm64: dts: rockchip: Add GMAC nodes for RK3528
878d50ae8ece Merge tag 'tegra-for-6.16-arm-dt' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
9935f8964201 Merge tag 'tegra-for-6.16-arm64-dt' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
27648c567dd3 dt-bindings: PCI: Convert v3,v360epc-pci to DT schema
720f8541f5da dt-bindings: clock: sun50i-h616-ccu: Add LVDS reset
6f75843afb57 dt-bindings: gpu: mali-bifrost: Add compatible for RZ/V2N SoC
eb155080b68f dt-bindings: soc: qcom: qcom,rpm: add missing clock/-names properties
b9554cc578d9 dt-bindings: soc: qcom,rpm: add missing clock-controller node
599b2c9eda58 Merge tag 'tegra-for-6.16-dt-bindings' of https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into soc/dt
ae1e35821ad4 Merge tag 'memory-controller-drv-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl into soc/drivers
9cb0a9935a2e Merge tag 'memory-controller-drv-renesas-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl into soc/drivers
e3b2e5a3cafd Merge tag 'scmi-updates-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/sudeep.holla/linux into soc/drivers
593a164161fe Merge tag 'mtk-soc-for-v6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/mediatek/linux into soc/drivers
6ac9a220784a Merge tag 'samsung-drivers-6.16' of https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux into soc/drivers
1e29760150ff Merge tag 'v6.16-rockchip-dts32-1' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
3af4a1919ecf Merge tag 'v6.16-rockchip-dts64-1' of https://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/dt
7da1d84ce8a9 Merge tag 'asahi-soc-dt-6.16' of https://github.com/AsahiLinux/linux into soc/dt
859f06fdd36e Merge tag 'arm-soc/for-6.16/devicetree-arm64' of https://github.com/Broadcom/stblinux into soc/dt
9b1d4cdc396e Merge tag 'arm-soc/for-6.16/devicetree' of https://github.com/Broadcom/stblinux into soc/dt
ea0f80a223b4 Merge tag 'renesas-dts-for-v6.16-tag2' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
2754fead3c67 Merge tag 'renesas-dts-for-v6.16-tag1' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
ee1cbe4b8690 Merge tag 'renesas-dt-bindings-for-v6.16-tag1' of https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
9172333f1c36 Merge tag 'socfpga_dts_updates_for_v6.15' of https://git.kernel.org/pub/scm/linux/kernel/git/dinguyen/linux into soc/dt
65945ed4ecf7 ARM: dts: vt8500: use correct ohci/ehci node names
db3d273ea6dd ARM: dts: ti: omap: use correct ohci/ehci node names
29098c0b2750 ARM: dts: st: use correct ohci/ehci node names
f2573fbf2983 ARM: dts: nxp: lpc: use correct ohci/ehci node names
6818afe8c49c ARM: dts: marvell: use correct ohci/ehci node names
73262063f45d arm64: dts: rockchip: add Rock 5B+
7909790b5192 dt-bindings: arm: rockchip: Add Radxa ROCK 5B+
4238190b0f49 arm64: dts: rockchip: move rock 5b to include file
ef9fc0fca3cc arm64: dts: rockchip: Add rk3399-evb-ind board
24335e68a617 dt-bindings: arm: rockchip: Add rk3399 industry evaluation board
a5d824bc4857 arm64: dts: rockchip: Enable HDMI audio on Sige5
5915b8ba5ff7 arm64: dts: rockchip: Add analog audio on RK3576 Sige5
cfa4fa721fc4 arm64: dts: rockchip: Add RK3576 HDMI audio
cd275a639ae9 arm64: dts: rockchip: Add RK3576 SAI nodes
66849b21618c arm64: dts: rockchip: Enable SD-card interface on Radxa E20C
4674d377180c arm64: dts: rockchip: Add SDMMC/SDIO controllers for RK3528
24c4ac403174 Merge branch 'v6.16-shared/clkids' into v6.16-armsoc/dts64
1f0210a2d1c9 ARM: dts: amlogic: meson8-fernsehfee3: Describe regulators
f2d00ba732ef ARM: dts: amlogic: Add TCU Fernsehfee 3.0
503326d77770 dt-bindings: arm: amlogic: Add TCU Fernsehfee 3.0 board
049bdf8c194c dt-bindings: vendor-prefixes: Add TC Unterhaltungselektronik AG
b987dfc06d4e dt-bindings: reset: Add compatible for Amlogic A4/A5 Reset Controller
ad8117c16a75 ARM: dts: mxs: use padconfig macros
3c692a3cd472 arm64: dts: freescale: Add PHYTEC phyBOARD-Nash-i.MX93 support
44179fccbf35 bindings: arm: fsl: Add PHYTEC phyBOARD-Nash-i.MX93 board
58b8e29378d4 arm64: dts: freescale: imx8mp-toradex-smarc: use generic gpio node name
955a4e348a47 arm64: dts: freescale: imx8mp-toradex-smarc: add gpio expander
1a275a3d9d35 arm64: dts: freescale: imx8mp-toradex-smarc: add embedded controller
1783722ca70f arm64: dts: freescale: imx8mp-toradex-smarc: add fan PWM configuration
f2e560c30759 arm64: dts: imx93-tqma9352-mba91xxca: disable Open Drain for MDIO
49e05d4dcb41 dt: bindings: arm: add bindings for TQMa95xxSA
c4ede310e854 arm64: dt: imx95: Add TQMa95xxSA
3f51af4e9314 ARM: dts: imx7d: update opp-table voltages
faa7b0f09960 dt-bindings: mfd: Add max77759 binding
adb36b1583dc dt-bindings: nvmem: Add max77759 binding
626e4d4c2dd1 dt-bindings: gpio: Add max77759 binding
59579e8080e7 ARM: dts: nxp: Align wifi node name with bindings
a57498324c33 arm64: dts: imx: Align wifi node name with bindings
dda8571e68ba arm64: dts: freescale: add initial device tree for TQMa8XxS
420ccf352c88 dt-bindings: arm: add TQMa8XxS boards
2c22f0454dbc arm64: dts: imx8mp-tqma8mpql-mba8mp-ras314: Add Raspberry Pi Camera V2 overlay
8e30973098b1 arm64: dts: freescale: Add minimal dts support for imx943 evk
b7f8b9829627 arm64: dts: freescale: Add basic dtsi for imx943
b171f67469ba dt-bindings: arm: fsl: add i.MX943 EVK board
51a46f724ce6 arm64: dts: ti: k3-j722s-evm: Add overlay for TEVI OV5640
0b98d867cbe7 arm64: dts: ti: k3-j722s-evm: Add overlay for quad IMX219
f02ee6932e03 arm64: dts: ti: j722s-evm: Add MUX to control CSI2RX
5015bfcb82cc arm64: dts: ti: j722s-evm: Add DT nodes for power regulators
ec097bc51325 arm64: dts: ti: k3-am62a-phycore-som: Reserve main_timer2 for C7x DSP
b8c5a617d6bc arm64: dts: ti: k3-am62a-phycore-som: Reserve main_rti4 for C7x DSP
3031c3fe18db arm64: dts: ti: k3-am62a-phycore-som: Enable Co-processors
739cbc1d54d9 arm64: dts: ti: k3-am62-phycore-som: Enable Co-processors
c02b9c9cefdf arm64: dts: ti: k3-am62x-phyboard-lyra-gpio-fan: Update cooling maps
a615712406dd arm64: dts: ti: k3-am62a: Enable CPU freq throttling on thermal alert
e39e8901b8f9 arm64: dts: ti: k3-j721e-common-proc-board: Enable OSPI1 on J721E
74294f5566ae arm64: dts: imx8-colibri: Add PCIe support
62b02d402a77 arm64: dts: freescale: imx93-phyboard-segin: Order node alphabetically
a6acee4ac52a arm64: dts: freescale: imx93-phyboard-segin: Add EQOS Ethernet
1d0d44116304 arm64: dts: freescale: imx93-phyboard-segin: Add I2S audio
f0fea5510d92 arm64: dts: freescale: imx93-phyboard-segin: Add USB support
a2cf356b1399 arm64: dts: freescale: imx93-phyboard-segin: Add CAN support
7a1af769f159 arm64: dts: freescale: imx93-phyboard-segin: Add RTC support
f7809266a2ee arm64: dts: freescale: imx93-phyboard-segin: Set CMD/DATA SION bit to fix ERR052021
7206d2882315 arm64: dts: freescale: imx93-phyboard-segin: Fix SD-card pinctrl
b2469f6146c6 arm64: dts: freescale: imx93-phyboard-segin: Disable SD-card write-protect
5b40838286a0 arm64: dts: freescale: imx93-phyboard-segin: Drop eMMC no-1-8-v flag
073a3258de8c arm64: dts: freescale: imx93-phycore-som: Add eMMC no-1-8-v by default
745f39b81f20 arm64: dts: freescale: imx93-phycore-som: Enhance eMMC pinctrl
6b1bf8706c84 arm64: dts: freescale: imx93-phycore-som: Disable LED pull-up
767f031ca462 arm64: dts: freescale: imx93-phycore-som: Add EEPROM support
d562521d7664 arm64: dts: freescale: imx93-phycore-som: Add PMIC support
744b873154a9 media: dt-bindings: Add amlogic,c3-isp.yaml
1f1824e8d41c media: dt-bindings: Add amlogic,c3-mipi-adapter.yaml
2a83b3a89adf media: dt-bindings: Add amlogic,c3-mipi-csi2.yaml
bfb60c429ab7 Add RZ/G3E xSPI support
6bc5ca9e9e31 arm64: dts: add imx8mp-libra-rdk-fpsc LVDS panel overlay
bb5fe43bf772 arm64: dts: add imx8mp-libra-rdk-fpsc board
6d47c5101c87 dt-bindings: arm: add imx8mp-libra-rdk-fpsc
34d5fc0c469e arm64: tegra: Wire up CEC to devkits
b4122e423095 arm64: tegra: Add CEC controller on Tegra210
81403688d54d arm64: tegra: Add fallback CEC compatibles
860a0306e7cb media: dt-bindings: Document Tegra186 and Tegra194 cec
814cf0ca9673 ARM: tegra: apalis-eval: Remove pcie-switch node
7336f5eff07b arm64: tegra: Add uartd serial alias for Jetson TX1 module
773a698cffd0 arm64: tegra: Bump #address-cells and #size-cells on Tegra186
6eb9ab33c1ca arm64: tegra: p2180: Explicitly enable GPU
97a72f63b02b arm64: tegra: p3310: Explicitly enable GPU
dc394ae50b15 arm64: tegra: Add DMA properties for Tegra186 and Tegra194 UARTs
0c8116fdf82b arm64: tegra: Drop remaining serial clock-names and reset-names
cf8710c05237 arm64: tegra: Enable PWM fan on the Jetson TX2 Devkit
10909b6e7512 arm64: tegra: Enable PWM fan on the Jetson TX1 Devkit
6c62747d11ae ARM: tegra: Add device-tree for ASUS Transformer Pad LTE TF300TL
45ff634f62bd dt-bindings: arm: tegra: Add Asus Transformer Pad TF300TL
17f175deb9ee dt-bindings: arm: tegra: Group Tegra30 based ASUS Transformers
45c2549c2180 dt-bindings: interrupt-controller: Convert nvidia,tegra20-ictlr to DT schema
f732c059581d arm64: tegra: Add I2C aliases for Tegra234
2275ec7fcdcb arm64: tegra: Configure QSPI clocks and add DMA
5bbc2a8c5070 dt-bindings: dma: nvidia,tegra20-apbdma: convert text based binding to json schema
2af32339da6c ARM: tegra: Rename the apbdma nodename to match with common dma-controller binding
5604f94f1d7b dt-bindings: clock: rk3036: add SCLK_USB480M clock-id
f929318ed0ef ARM: dts: renesas: r9a06g032-rzn1d400-eb: Enable USB host port
358563053427 ARM: dts: renesas: r9a06g032-rzn1d400-db: Add pinmux for the CPLD
075b685b47f4 arm64: dts: renesas: white-hawk-single: Improve Ethernet TSN description
9e2e4c5571be ARM: dts: renesas: r9a06g032-rzn1d400-db: Enable USB device port
b0a3caca0471 ARM: dts: renesas: r9a06g032-rzn1d400-eb: Describe 9-pin D-sub serial port
e4e1d7312e3a arm64: dts: renesas: beacon-renesom: Align wifi node name with bindings
f0ce8327c980 arm64: dts: renesas: rzg2l-smarc: Enable GPT on carrier board
e2a02100e30b arm64: dts: renesas: r9a07g054: Add GPT support
b745dbf0e8d0 arm64: dts: renesas: r9a07g044: Add GPT support
02e6b1b121fc arm64: dts: renesas: sparrow-hawk: Add MSIOF Sound support
9d4b51f0467a ARM: dts: renesas: r9a06g032-rzn1d400-eb: Add GMAC1 port
0522e8351f89 Merge tag 'renesas-r9a09g047-dt-binding-defs-tag3' into renesas-clk-for-v6.16
01db475996bf dt-bindings: clock: renesas,r9a09g047-cpg: Add XSPI and GBETH PTP core clocks
9aab5b0dd0ce dt-bindings: riscv: Add xsfvfwmaccqqq ISA extension description
871364b29b15 dt-bindings: riscv: Add xsfvfnrclipxfqf ISA extension description
f6dd93536c85 dt-bindings: riscv: Add xsfvqmaccdod and xsfvqmaccqoq ISA extension description
01794edd9948 dt-bindings: clock: Add GRF clock definition for RK3528
dd0175a5cb33 arm64: dts: rockchip: Move rk3568 PCIe3 MSI to use GIC ITS
49deec21e26c arm64: dts: rockchip: Update eMMC for NanoPi R5 series
e9d28cbe7969 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
a33a192ad701 dt-bindings: display: panel: Add Novatek NT37801
76b3a3804dd7 dt-bindings: display: panel: convert truly,nt35597.txt to dt-schema
14bbe9563987 ARM: dts: am335x: Set wakeup-source for UART0
46060816b6be dt-bindings: mux: add optional regulator binding to gpio mux
0a5ec97f672c riscv: dts: thead: Add device tree VO clock controller
5a3d46ddd366 dt-bindings: clock: thead: Add TH1520 VO clock controller
0bac955e720a dt-bindings: arm: qcom: Add SM7150 Google Pixel 4a
e5487155fa85 ARM: dts: qcom: ipq4019: Drop redundant CPU "clock-latency"
3b45cd0540a8 dt-bindings: PCI: pci-ep: Add support for iommu-map and msi-map
85e37e6a8a00 arm64: dts: allwinner: a100: set maximum MMC frequency
71610c8f6573 dt-bindings: memory-controllers: Add STM32 Octo Memory Manager controller
4a6f85f46c97 arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-rock3c
27cb7181fa25 arm64: dts: qcom: msm8939: Drop generic UART pinctrl templates
0299a80853e3 arm64: dts: qcom: msm8916: Drop generic UART pinctrl templates
f7626223fbef arm64: dts: qcom: msm8916-motorola: Use UART1 console pinctrl
bc047fb23c7e arm64: dts: qcom: msm8919/39: Use UART2 console pinctrl where appropriate
82a1d0626f30 arm64: dts: qcom: msm8916/39: Introduce new UART console pinctrl
9671fb87cd7a arm64: dts: qcom: msm8916/39: Move UART pinctrl to board files
7ae4d81f0acd arm64: dts: qcom: x1e80100: Fix PCIe 3rd controller DBI size
21a18efb9369 arm64: dts: qcom: x1e/x1p: Add EL2 overlay for WoA devices
b08db9175aea arm64: dts: qcom: x1e80100: Add PCIe IOMMU
aa60c3acb06a arm64: dts: qcom: sc8280xp: Add EL2 overlay for WoA devices
83b237618bf2 arm64: dts: qcom: sc8280xp: Add PCIe IOMMU
665f9564abc0 arm64: dts: qcom: sc7180: Add EL2 overlay for WoA devices
87b448b47006 dt-bindings: interrupt-controller: Convert openrisc,ompic to DT schema
a2901e9860d9 Merge tag 'wireless-next-2025-05-06' of https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next
90076255cd0e This patch set did some clean up and add runtime pm
2a73fae0eef7 dt-bindings: soc: sophgo: add RTC support for Sophgo CV1800 series
db6d6e0cc454 dt-bindings: clock: sophgo: add clock controller for SG2044
4f7b03443bcf dt-bindings: soc: sophgo: Add SG2044 top syscon device
411ad66f6c87 dt-bindings: clock: sophgo: Use precise compatible for CV1800 series SoC
e6cfd7fc83e3 dt-bindings: clock: Drop st,stm32h7-rcc.txt
c05f831cb19b dt-bindings: clock: convert bcm2835-aux-clock to yaml
3eb3880ced4d dt-bindings: clock: Drop maxim,max77686.txt
d11740d0cb1c arm64: dts: qcom: x1e001de-devkit: Fix pin config for USB0 retimer vregs
a3c4d35cf2d0 arm64: dts: qcom: x1e001de-devkit: Describe USB retimers resets pin configs
e8a588366b40 arm64: dts: qcom: x1e80100-qcp: Fix vreg_l2j_1p2 voltage
b2fd69366c77 arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: Fix vreg_l2j_1p2 voltage
73d93d5bd92c arm64: dts: qcom: x1e80100-hp-omnibook-x14: Fix vreg_l2j_1p2 voltage
b1458d47b907 arm64: dts: qcom: x1e80100-asus-vivobook-s15: Fix vreg_l2j_1p2 voltage
3d4bc8f706a7 arm64: dts: qcom: x1e001de-devkit: Fix vreg_l2j_1p2 voltage
02a3d15ce9d1 arm64: dts: qcom: x1-crd: Fix vreg_l2j_1p2 voltage
f50e1070cfe1 arm64: dts: qcom: sc7280: add UFS operating points
36a66deea079 dt-bindings: arm: qcom: Add Asus Zenbook A14
388cf04293fc arm64: dts: qcom: qcs8300: Add cpufreq scaling node
2770dfb61311 arm64: dts: qcom: sda660-ifc6560: Fix dt-validate warning
ff4c18346f89 arm64: dts: qcom: sdm660-lavender: Add missing USB phy supply
41ddc955d99c arm64: dts: qcom: sdm630: Add modem metadata mem
5e1d302c47f2 arm64: dts: ipq6018: drop standalone 'smem' node
935bb6b903f7 dt-bindings: input: touchscreen: edt-ft5x06: use unevaluatedProperties
19170f83f4d6 dt-bindings: interrupt-controller: Convert opencores,or1k-pic to DT schema
a813b7184209 dt-bindings: media: convert imx.txt to yaml format
f036436d4e3a arm64: dts: ti: k3-j721s2: Add GPU node
05217f9f363a arm64: dts: ti: k3-am62: New GPU binding details
e3b4871cc54c arm64: dts: ti: k3-am62-main: Add PRUSS-M node
f21fd9e2b809 arm64: dts: ti: k3-am64: Reserve timers used by MCU FW
7554d6edc067 arm64: dts: ti: k3-am62a7-sk: Reserve main_rti4 for C7x DSP
9c7c2c426a28 arm64: dts: ti: k3-am62a7-sk: Reserve main_timer2 for C7x DSP
4dc654f3ea4f arm64: dts: ti: k3-am62x-sk-common: Enable IPC with remote processors
ccd74102c419 arm64: dts: ti: k3-am62p5-sk: Enable IPC with remote processors
2cf6f198463c arm64: dts: ti: k3-am62a7-sk: Enable IPC with remote processors
d115e1eada3e arm64: dts: ti: k3-am62a-main: Add C7xv device node
87d1a5e90b69 arm64: dts: ti: k3-am62a-wakeup: Add R5F device node
349f1d769bb6 arm64: dts: ti: k3-am62a-mcu: Add R5F remote proc node
e74c39a60ea5 arm64: dts: ti: k3-am62-wakeup: Add wakeup R5F node
6c2036041051 arm64: dts: ti: k3-am62: Add ATCM and BTCM cbass ranges
776ccc66e63e arm64: dts: ti: k3-am625-beagleplay: Add required voltage supplies for TEVI-OV5640
ad3ac0dd79a7 arm64: dts: ti: k3-am625-beagleplay: Add required voltage supplies for OV5640
165924ec0e5a arm64: dts: ti: k3-am62x: Add required voltage supplies for TEVI-OV5640
57f7626a30df arm64: dts: ti: k3-am62x: Add required voltage supplies for OV5640
ea8502a760f3 arm64: dts: ti: k3-am62x: Add required voltage supplies for IMX219
5a11adf3759f arm64: dts: ti: k3-am62p5-sk: Add regulator nodes for AM62P
557dca1160b4 media: dt-bindings: sony,imx290: Update usage example
2f12e85b926d media: dt-bindings: sony,imx415: update maintainer e-mail address
465494fa972e arm64: dts: mt6359: Add missing 'compatible' property to regulators node
dadfed8c1931 arm/arm64: dts: mediatek: Add missing "#sound-dai-cells" to linux,bt-sco
5ae022ae9660 arm64: dts: mediatek: mt8390-genio-common: Set ssusb2 default dual role mode to host
6eba789bfdbd arm64: dts: mediatek: mt8395-genio-1200-evk: Disable unused backlight
4feac5571d3c arm64: dts: mediatek: mt6357: Drop regulator-fixed compatibles
856c2b05f9e9 arm64: dts: rockchip: Enable regulators for Radxa E20C
b7970c3a509b arm64: dts: rockchip: Add pwm nodes for RK3528
9537ebf0af18 media: dt-bindings: Add ST VD55G1 camera sensor
2270d79148b6 media: dt-bindings: Add ST VD56G3 camera sensor
1acf6a10e0c2 media: dt-bindings: Add OmniVision OV02C10
711f90dc2821 Merge drm/drm-next into drm-misc-next
1ea0f9e44221 BackMerge tag 'v6.15-rc5' into drm-next
0c67bd9ea5e2 AsoC: Phase out hybrid PCI devres
4249e9eeb523 arm64: dts: rockchip: Add onboard EEPROM for Radxa E20C
f1835c1d3102 arm64: dts: rockchip: Add I2C controllers for RK3528
9124dcd6b6ca dt-bindings: clock: rk3576: add IOC gated clocks
195ab4f8a4fd arm64: tegra: tegra210-p2894: Align GPIO hog node name with preferred style
9b87fa574f97 arm64: dts: bcm: Add reference to RPi 2 (2nd rev)
7fc72ab2aa49 ARM: dts: bcm: Add support for Raspberry Pi 2 (2nd rev)
8d7e910606f3 dt-bindings: arm: bcm2835: Add Raspberry Pi 2 (2nd rev)
79860f59b8ce dt-bindings: reset: sophgo: Add SG2044 bindings.
0f5d34937143 dt-bindings: reset: Document RZ/V2H(P) USB2PHY reset
25cfcb091747 arm64: dts: rockchip: add RK3576 RNG node
7500df32a633 arm64: dts: amlogic: Add A5 Reset Controller
06a6f9e68bb5 arm64: dts: amlogic: Add A4 Reset Controller
5526b16a2902 arm64: dts: amlogic: add support for xiaomi-aquaman/Mi TV Stick
41bcfded41fb dt-bindings: arm: amlogic: add S805Y and Mi TV Stick
89e5c3f0d82f arm64: dts: amlogic: gxl: set i2c bias to pull-up
42dec1aa5d48 dt-bindings: rng: rockchip,rk3588-rng: add rk3576-rng compatible
b47e9a75a1f5 arm64: dts: renesas: r9a09g047e57-smarc: Enable CAN Transceiver
4f4bdff8036a arm64: dts: renesas: r9a09g047e57-smarc: Enable CANFD
4948f0e037d7 arm64: dts: renesas: r9a09g047: Add CANFD node
ca3cc0b21e41 arm64: dts: rockchip: Switch to undeprecated qcom,calibration-variant on RK3399
b6eaa60c5b68 arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-quartz64-b
a811ecd47f98 arm64: dts: rockchip: Add phy-supply to gmac0 on NanoPi R5S
92db0f57859b ARM: dts: rockchip: enable Mali gpu on rk3066 marsboard
af638cbdc9f4 ARM: dts: rockchip: enable hdmi on rk3066 marsboard
e5ed6360a0bb Revert "ARM: dts: rockchip: drop grf reference from rk3036 hdmi"
e8e08fa436aa ARM: dts: rockchip: Add ref clk for hdmi
8f6e1742dc0d dt-bindings: display: panel: Add BOE TD4320
fe3f772e4234 Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux v6.15-rc5
295a83cac5a6 dt-bindings: hwinfo: Add VIA/WonderMedia SoC identification
dfebd1da805d dt-bindings: opp: Add v2-qcom-adreno vendor bindings
008f0861616f dt-bindings: display: rockchip,inno-hdmi: Document GRF for RK3036 HDMI
b6f43ec6014d dt-bindings: display: rockchip,inno-hdmi: Fix Document of RK3036 compatible
e066fecec49c dt-bindings: display: ltk500hd1829: add port property
aac56bec913a dt-bindings: display: ltk050h3146w: add port property
2679eb9c1099 arm64: dts: allwinner: t527: add EMAC0 to Avaota-A1 board
a84e9b1ef511 arm64: dts: allwinner: a527: add EMAC0 to Radxa A5E board
d67d653027ac arm64: dts: allwinner: a523: Add EMAC0 ethernet MAC
2c2285f92bd4 dt-bindings: sram: sunxi-sram: Add A523 compatible
906efd1c226c dt-bindings: pwm: add support for MC33XS2410
c45f7825b9a3 arm64: dts: ti: k3-am65-main: Add missing taps to sdhci0
abfe507190c9 arm64: dts: ti: k3-am62p-j722s-common-main: Set eMMC clock parent to default
05be23aa2598 arm64: dts: ti: k3-am62a-main: Set eMMC clock parent to default
d7281ad6c7f0 arm64: dts: ti: k3-am62-main: Set eMMC clock parent to default
5d554875ee67 arm64: dts: ti: am62p-verdin: Add ivy
5910df5fae25 arm64: dts: ti: am62p-verdin: Add yavia
c56788f3dc13 arm64: dts: ti: am62p-verdin: Add mallow
26225792edf9 arm64: dts: ti: am62p-verdin: Add dahlia
d2963aa25b8d arm64: dts: ti: Add Toradex Verdin AM62P
9f3a0c2c8544 dt-bindings: arm: ti: Add Toradex Verdin AM62P
0e1a2f9ae270 arm64: dts: ti: k3-j784s4-j742s2-evm-common: Enable ACSPCIE0 output for PCIe1
38b84d8c08ed arm64: dts: ti: k3-j784s4-j742s2-main-common: Add ACSPCIE0 node
db5f03dc9cc5 arm64: dts: ti: k3-j784s4-j742s2-main-common: Switch to 64-bit address space for PCIe0 and PCIe1
15243bd3bb0f arm64: dts: ti: k3-j722s-main: Switch to 64-bit address space for PCIe0
1ccd5d5c0b25 arm64: dts: ti: k3-j721s2-main: Switch to 64-bit address space for PCIe1
b45b19421146 arm64: dts: ti: k3-j721e-main: Switch to 64-bit address space for PCIe0 and PCIe1
c58f019a0643 arm64: dts: ti: k3-j721e: Add ranges for PCIe0 DAT1 and PCIe1 DAT1
ac9f688b927f arm64: dts: ti: k3-j7200-main: Switch to 64-bit address space for PCIe1
8c1c5e3952fe arm64: dts: ti: k3-am64-main: Switch to 64-bit address space for PCIe0
9bd6216a75f9 arm64: dts: ti: k3-am6*: Remove disable-wp for eMMC
9391e35a9961 arm64: dts: ti: k3-am62*: Add non-removable flag for eMMC
efc9013586bd arm64: dts: ti: k3-am6*: Add boot phase flag to support MMC boot
20228e421df8 dt-bindings: media: renesas,isp: Add ISP core function block
0d57e67f6fd1 dt-bindings: media: qcom,sm8550-iris: document QCS8300 IRIS accelerator
929624534b09 dt-bindings: media: qcom,sm8550-iris: document SM8650 IRIS accelerator
dfd2223ffa4c dt-bindings: arm: psci: change labels to lower-case in example
733d55025477 dt-bindings: net: via-rhine: Convert to YAML
2e15a84f751b dt-bindings: display: msm: document DSI controller and phy on SA8775P
f7cce69098b3 dt-bindings: msm: dsi-controller-main: document the SA8775P DSI CTRL
0dfaeb000391 dt-bindings: display: msm-dsi-phy-7nm: document the SA8775P DSI PHY
afd72e545768 dt-bindings: display: msm: sm8350-mdss: Describe the CPU-CFG icc path
4a36951513b4 dt-bindings: display/msm: Add Qualcomm SAR2130P
4efeb8748c14 dt-bindings: net: sun8i-emac: Add A523 EMAC0 compatible
e5b81042e489 dt-bindings: display/msm: qcom,sc7280-dpu: describe SAR2130P
92699890681b dt-bindings: display/msm: dsi-phy-7nm: describe SAR2130P
01da1f48bd4a dt-bindings: display/msm: dsi-controller-main: describe SAR2130P
e50e3900c247 dt-bindings: display/msm: dp-controller: describe SAR2130P
50b4d3ab2f90 dt-bindings: display: msm: mdp4: add LCDC clock and PLL source
dc3117f0d58a dt-bindings: msm: qcom,mdss: Document interconnect paths
675f0bfb1706 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
84a58e460c62 dt-bindings: power: supply: Document Maxim MAX8971 charger
6bbc7ffdc64a spi: dt-bindings: spi-qpic-snand: Add IPQ5018 compatible
626cc8b07ead ARM: dts: omap4: panda: cleanup bluetooth
bcf5e5f95ba9 ARM: dts: omap4: panda: fix resources needed for Wifi
52e01741cd60 dt-bindings: usb: realtek,rts5411: Adapt usb-hub.yaml
dc73d9f2d3be dt-bindings: usb: Add binding for PS5511 hub controller
9dac5fe200f7 dt-bindings: usb: Introduce usb-hub.yaml
9f2adf2c7968 arm64: dts: rockchip: fix usb-c port functionality on rk3588-nanopc-t6
6c497c6eba1d arm64: dts: exynos: add initial support for Samsung Galaxy J6
e046936b0e72 arm64: dts: exynos: add initial support for Samsung Galaxy A2 Core
6948e73799e5 arm64: dts: exynos: add initial support for Samsung Galaxy J7 Prime
9c3c04c2d87b arm64: dts: exynos: add initial devicetree support for exynos7870
551070b23bf8 dt-bindings: arm: samsung: add compatibles for exynos7870 devices
e12137fe5717 arm64: dts: rockchip: Enable bluetooth of AP6611s on OrangePI5 Max/Ultra
feb54a4cfc60 dt-bindings: memory: Document RZ/G3E support
151b9911dfff arm64: dts: apple: Add PMIC NVMEM
1034cfa91f13 ASoC: codec: twl4030: Convert to GPIO descriptors
a781ea3fe6f5 dt-bindings: crypto: fsl,sec-v4.0-mon: Add "power-off-time-sec"
7d7e67ac6cb8 dt-bindings: reset: syscon-reboot: add google,gs101-reboot
8feed3b94fdd spi: axi-spi-engine: offload instruction optimization
2c42fa887eba arm64: dts: exynosautov920: add cpucl1/2 clock DT nodes
99c94468b170 dt-bindings: clock: exynosautov920: add cpucl1/2 clock definitions
e0d9b0f244f9 dt-bindings: hwmon: Add Sophgo SG2044 external hardware monitor support
1991cce4d18b dt-bindings: power: supply: Document Pegatron Chagall fuel gauge
a3572ed09649 dt-bindings: vendor-prefixes: add prefix for Pegatron Corporation
0bf560ff10e1 arm64: dts: rockchip: add SATA nodes to RK3576
6e434b1b73aa dt-bindings: clock: convert vf610-clock.txt to yaml format
1f0623137e5a dt-bindings: arm: arm,coresight-static-replicator: add optional clocks
107b934a7fb5 dt-bindings: mtd: qcom,nandc: Document the SDX75 NAND controller
bf701761289b dt-bindings: power: reset: add toradex,smarc-ec
3f3c4e59f9ba dt-bindings: interconnect: sm8650: document the MASTER_APSS_NOC
d9188b52a9dc dt-bindings: interconnect: Correct indentation and style in DTS example
b31830e88153 arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3588-rock-5b
7a4bb5be4074 arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-pinetab2
104277ae91b0 arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3399-rockpro64
4078c21208d8 arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3328-rock64
852abcba0fe4 arm64: dts: rockchip: Add vcc supply to spi flash on rk3399-roc-pc
c88c9d3b42f7 arm64: dts: rockchip: enable pcie on Sige5
bbbd016dd1ad arm64: dts: rockchip: Add HDMI support for roc-rk3576-pc
f5b1563af154 arm64: dts: rockchip: Enable HDMI0 audio output for Indiedroid Nova
4a9ca88961e2 arm64: dts: rockchip: Add rk3588 evb2 board
0ee39726af75 dt-bindings: arm: rockchip: Add rk3588 evb2 board
677235aee353 arm64: dts: rockchip: Add pcie1 slot for rk3576 evb1 board
921916e138df arm64: dts: rockchip: Enable eDP display for Cool Pi GenBook
719b9d6deca7 arm64: dts: rockchip: Add eDP1 dt node for rk3588
5999cea2c433 arm64: dts: rockchip: enable HDMI out audio on Khadas Edge2
7079948ecc6f arm64: dts: rockchip: Add HDMI & VOP2 to Khadas Edge2
763e2383f0a8 arm64: dts: rockchip: Add bluetooth support to Khadas Edge2
46e308df7a7f arm64: dts: rockchip: add overlay for tiger-haikou video-demo adapter
86fd593d347f dt-bindings: mtd: convert vf610-nfc to yaml format
42bcbd1ec509 dt-bindings: ata: rockchip-dwc-ahci: add RK3576 compatible
9d3907b0dc81 Merge 6.15-rc4 into usb-next
69c335bc812d Merge 6.15-rc4 into tty-next
96bd6de45bb5 dt-bindings: mtd: Add Loongson-1 NAND Controller
7466915999d4 arm64: dts: allwinner: a64: Add WiFi/BT header on SOPINE Baseboard
1dc8db0178a9 arm64: dts: allwinner: a64: Add WiFi/BT header on PINE A64
1cd3a1d2b00d arm64: dts: allwinner: correct the model name for Radxa Cubie A5E
600ef18c9822 ARM: dts: allwinner: Align wifi node name with bindings
1914fe32e80a arm64: dts: allwinner: Align wifi node name with bindings
c022a034b1d6 arm64: dts: allwinner: h616: enable Mali GPU for all boards
e9933d2fb4d7 arm64: dts: allwinner: h616: Add Mali GPU node
803a02505b52 arm64: dts: allwinner: h700: Add hp-det-gpios for Anbernic RG35XX
bf34e9d35324 arm64: dts: allwinner: h5/h6: Drop spurious 'clock-latency-ns' properties
3f45bf7f52f0 arm/arm64: dts: allwinner: Use preferred node names for cooling maps
3a879d878553 arm64: dts: allwinner: h616: add YuzukiHD Chameleon support
0b9e163070f5 dt-bindings: arm: sunxi: Add YuzukiHD Chameleon board name
91ad117321c0 arm64: dts: allwinner: a523: add Radxa A5E support
69f8fbcdd27d dt-bindings: power: supply: bq24190: Add BQ24193 compatible
c7f9db5b72c6 dt-bindings: reset: atmel,at91sam9260-reset: add microchip,sama7d65-rstc
4107b274a54e dt-bindings: power: supply: Correct indentation and style in DTS example
0def74e690b2 arm64: dts: exynosautov920: add cpucl0 clock DT nodes
21de0b373e61 dt-bindings: clock: exynosautov920: add cpucl0 clock definitions
bb8a9492ece1 MIPS: Loongson64: Add missing '#interrupt-cells' for loongson64c_ls7a
4da20eae1087 mips: dts: realtek: Add MDIO controller
693da0a03149 arm64: dts: allwinner: a523: add X96Q-Pro+ support
ebcb8469ef43 arm64: dts: allwinner: a523: add Avaota-A1 router support
ddd2264cb891 ARM: dts: rockchip: Drop redundant CPU "clock-latency"
98a69848d374 arm64: dts: rockchip: add dsi controller nodes on rk3588
3e476fb13a10 arm64: dts: rockchip: add mipi dcphy nodes to rk3588
32be2a8c8e02 dt-bindings: PCI: qcom: Add MHI registers for IPQ9574
9cafacd8c4c9 ASoC: add Renesas MSIOF sound driver
5acc974247a4 dt-bindings: renesas,sh-msiof: Add MSIOF I2S Sound support
81e1bd55f661 arm64: dts: ti: k3-am625-sk: Enable PWM
16c71470bff1 arm64: dts: ti: k3-am62a7-sk: Enable PWM
716448152383 arm64: dts: ti: k3-am62p5-sk: Enable PWM
c94675306a28 arm64: dts: ti: Add basic support for phyBOARD-Izar-AM68x
c388cf2e36b8 dt-bindings: arm: ti: Add bindings for PHYTEC AM68x based hardware
43874d152bfe arm64: dts: ti: k3-j784s4-j742s2-main-common: Fix length of serdes_ln_ctrl
241109b8c8f6 arm64: dts: ti: am65x: Add missing power-supply for Rocktech-rk101 panel
22b82bf80770 arm64: dts: ti: k3-am65-main: Add system controller compatible
9680a390671a dt-bindings: mfd: ti,j721e-system-controller: Add compatible string for AM654
8e985cb49182 arm64: dts: ti: k3-j721e-common-proc-board-infotainment: Update to comply with device tree schema
25240cd26ef5 riscv: dts: thead: Introduce reset controller node
40f6c8eba924 media: dt-bindings: Document Tegra186 and Tegra194 cec
8d47ce901c2c dt-bindings: serial: amlogic,meson-uart: Add compatible string for S6/S7/S7D
16cb9f9e498a dt-bindings: serial: mediatek,uart: Add compatible for MT6893
6e6039994c8b dt-bindings: usb: usb-switch: Allow data-lanes property in port
a8fc1dcece74 dt-bindings: usb: generic-ehci: Add VIA/WonderMedia compatible
932da7a8df7b dt-bindings: usb: usb-device: relax compatible pattern to a contains
772b2e8cb9dd dt-bindings: usb: renesas,usbhs: Add RZ/V2H(P) SoC support
b0282744d363 Merge tag 'ath-next-20250418' of git://git.kernel.org/pub/scm/linux/kernel/git/ath/ath into wireless-next
f1ded0dfbccb media: dt-bindings: Convert Analog Devices ad5820 to DT schema
ae47e78ed52c media: dt-bindings: Add OmniVision OV02E10
79596bb37f98 media: dt-bindings: ti,ds90ub960: Allow setting serializer address
e48c94010dd5 media: dt-bindings: media: i2c: align filenames format with standard
d4b3524bf7a6 arm64: dts: imx8mq-evk: add pcie[0,1]-ep nodes
af70c3ed355a arm64: dts: imx8mq: add pcie0-ep node
b3f9adea45f5 arm64: dts: imx8mm-evk: add pcie0-ep node and apply pcie0-ep overlay file
67af22b950f2 arm64: dts: imx95: add pcie1 ep overlay file and create pcie-ep dtb files
be98b5a4b268 arm64: dts: imx8: use common imx-pcie0-ep.dtso to enable PCI ep function
72cb1708ae6b arm64: dts: imx8dxl-evk: Add pcie0-ep node and use unified pcie0 label
d1bf4f7b077e arm64: dts: imx8dxl-ss-hsio: correct irq number for imx8dxl
58861f28ee1d arm64: dts: imx8: create unified pcie0 and pcie0_ep label for all chips
e90c11e7667e arm64: dts: imx8-apalis: Add PCIe and SATA support
c0b02f0c33c7 Revert "arm64: dts: imx93-tqma9352-mba93xxla: enable Open Drain for MDIO"
5906f9c2d71a Revert "arm64: dts: imx93-tqma9352-mba93xxca: enable Open Drain for MDIO"
42b2289cec15 arm64: dts: imx8mp-beacon: Enable RTC interrupt and wakeup-source
d5bc51143411 arm64: dts: imx8mn-beacon: Enable RTC interrupt and wakeup-source
d9b339df2d8d arm64: dts: imx8mm-beacon: Enable RTC interrupt and wakeup-source
4e9004d5ecaa arm64: dts: imx8mn-beacon: Configure Ethernet PHY reset and GPIO IRQ
88dcf5d7f9c7 arm64: dts: imx8mm-beacon: Configure Ethernet PHY reset and GPIO IRQ
4258324f7cad arm64: dts: imx8mn-beacon: Set SAI5 MCLK direction to output for HDMI audio
957674dfa0b4 arm64: dts: imx8mm-beacon: Set SAI5 MCLK direction to output for HDMI audio
3825ee8ab2fe arm64: dts: imx8mp-beacon: Fix RTC capacitive load
6c24afc09355 arm64: dts: imx8mn-beacon: Fix RTC capacitive load
002e93c2520b arm64: dts: imx8mm-beacon: Fix RTC capacitive load
fdcb73bb223c arm64: add initial device tree for TQMa93xx/MBa91xxCA
e6d059456914 dt-bindings: arm: add MBa91xxCA Mainboard for TQMa93xxCA/LA SOM
6e3150878b7f arm64: dts: freescale: add Toradex SMARC iMX8MP
6a14e799ccce dt-bindings: arm: fsl: add Toradex SMARC iMX8MP SoM and carrier
0b198af79fa2 arm64: dts: s32gxxxa-rdb: Add PCA85073A RTC module over I2C0
e01c88e81a57 arm64: dts: imx95-15x15-evk: enable USB2.0 node
2956a2fad59b arm64: dts: imx95-19x19-evk: enable USB2.0 node
b57e40b4b93e arm64: dts: imx95: add USB2.0 nodes
8912cf0407cd ARM: dts: imx6q-apalis: remove pcie-switch node
42c8e16469f9 arm64: dts: imx8mp: Add device tree for Nitrogen8M Plus ENC Carrier Board
36e551b010e9 dt-bindings: arm: fsl: Add Boundary Device Nitrogen8M Plus ENC Carrier Board
6472a607374f dt-bindings: net: brcm,unimac-mdio: Add asp-v3.0
ec5333381e64 dt-bindings: net: brcm,asp-v2.0: Add asp-v3.0
e7636d5ce4c2 dt-bindings: net: brcm,unimac-mdio: Remove asp-v2.0
ac81b792e66f dt-bindings: net: brcm,asp-v2.0: Remove asp-v2.0
b523691f91fc dt-bindings: power: qcom,rpmpd: Add SM4450 compatible
e77a87a724fa dt-bindings: pwm: vt8500-pwm: Convert to YAML
0fb0156996ae dt-bindings: pwm: mediatek,pwm-disp: Add compatible for MT6893
0badf787ac7e dt-bindings: mfd: bd96802: Add ROHM BD96806
cb95b5d3c057 dt-bindings: mfd: bd96801: Add ROHM BD96805
1fbf3128a581 dt-bindings: mfd: Add ROHM BD96802 PMIC
5966dca99c06 dt-bindings: regulator: Add ROHM BD96802 PMIC
ae31878acd85 dt-bindings: power: Add Allwinner H6/H616 PRCM PPU
f4a58e101181 dt-bindings: gpu: Add 'resets' property for GPU initialization
3dce8ed7efbf arm64: dts: renesas: r8a779h0: Add ISP core function block
7ab5541f5631 arm64: dts: renesas: r8a779g0: Add ISP core function block
7c5f77250e86 arm64: dts: renesas: r8a779a0: Add ISP core function block
72a455b37dc7 arm64: dts: renesas: r8a779g3: Add Retronix R-Car V4H Sparrow Hawk board support
8cfc94f50e33 dt-bindings: soc: renesas: Document Retronix R-Car V4H Sparrow Hawk board support
e92bf5beb087 dt-bindings: vendor-prefixes: Add Retronix Technology Inc.
575112a9940a arm64: dts: mediatek: Add MT8186 Ponyta Chromebooks
9be55ad24aee dt-bindings: arm: mediatek: Add MT8186 Ponyta Chromebook
47f7ec1e89b3 arm64: dts: mediatek: mt8186-corsola: make SDIO card removable
d5854c28c729 dt-bindings: interrupt-controller: via,vt8500-intc: Convert to YAML
240e1020a18e dt-bindings: arm/cpus: allow up to 3 interconnects entries
c230496b1449 dt-bindings: display: Add Sitronix ST7571 LCD Controller
0b90b9d75595 dt-bindings: hwmon: ti,tmp102: document optional V+ supply property
26de36c3334a dt-bindings: hwmon: pmbus: add lt3074
d2fcc47c99f6 dt-bindings: hwmon: amc6821: add fan and PWM output
83785e4a4d68 dt-bindings: wireless: qcom,wcnss: Use wireless-controller.yaml
a62d4dcab2d7 dt-bindings: wireless: silabs,wfx: Use wireless-controller.yaml
5afb07ef0f59 dt-bindings: wireless: bcm4329-fmac: Use wireless-controller.yaml schema
9477f2559b7e dt-bindings: net: Add generic wireless controller
66bcd13cf8a7 dt-bindings: net: Add network-class schema for mac-address properties
8afa56eb8b9b dt-bindings: dma: fsl-edma: increase maxItems of interrupts and interrupt-names
cfbc26c13ea3 dt-bindings: dma: qcom,bam: Document dma-coherent property
7474a36b64bb dt-bindings: soc: qcom,rpmh-rsc: Limit power-domains requirement
207d29dd5aa7 dt-bindings: power: rockchip: Add support for RK3562 SoC
1f4f5e6d471c Add RK3576 SAI Audio Controller Support
f3bb7170abd4 arm64: dts: mediatek: mt8395-nio-12l: Enable Audio DSP and sound card
11ee3efc86c9 arm64: dts: mediatek: mt8390-genio-common: Add Display on DSI0
69d9b1270387 arm64: dts: mediatek: mt8395-genio-1200-evk: Add display on DSI0
13816981f2f2 arm64: dts: freescale: imx8mm-verdin: Add EEPROM compatible fallback
7ca80da3dbc5 arm64: dts: freescale: imx8mp-verdin: Add EEPROM compatible fallback
8927d1c11a35 arm64: dts: mt8183: Add port node to mt8183.dtsi
8d696ebbe281 ARM: dts: ls1021a-tqmals1021a: change sound card model name
fc79cde19de2 ARM: dts: ls1021a-tqmals1021a: Add overlay for CDTech DC44 RGB display
1a279450be52 ARM: dts: ls1021a-tqmals1021a: Add overlay for CDTech FC21 RGB display
891d4f7327ed ARM: dts: ls1021a-tqmals1021a: Add LVDS overlay for Tianma TM070JVGH33
d313da9895c1 ARM: dts: ls1021a-tqmals1021a: Add HDMI overlay
d2014560f7a9 ARM: dts: ls1021a-tqmals1021a: Add vcc-supply for spi-nor
d0573667ab9f ARM: dts: ls1021a-tqmals1021a: Fix license
15f3dec744dc ARM: dts: imx: Drop redundant CPU "clock-latency"
37bf4d2bccdf arm64: dts: imx: Drop redundant CPU "clock-latency"
7eaf105a0367 dt-bindings: pinctrl: convert fsl,imx7ulp-pinctrl.txt to yaml format
accab92f7c4f media: dt-bindings: renesas,rzg2l-cru: Document Renesas RZ/G3E SoC
948ceb8e33d1 media: dt-bindings: renesas,rzg2l-csi2: Document Renesas RZ/G3E CSI-2 block
6914e693d51d media: dt-bindings: renesas,rzg2l-csi2: Document Renesas RZ/V2H(P) SoC
eb4dda012b0d media: dt-bindings: media: renesas,fcp: Document RZ/V2H(P) SoC
a7f4d9c91d74 media: dt-bindings: media: renesas,vsp1: Document RZ/V2H(P)
01687fc2770e arm64: dts: imx8qm-mek: consolidate reserved-memory
1a3288716f35 dt-bindings: pinctrl: spacemit: add clock and reset property
9ebe2fd36cd6 dt-bindings: power: mediatek: Support Dimensity 1200 MT6893 MTCMOS
eede67deb547 dt-bindings: PCI: qcom: Add IPQ5018 SoC
1bd879b82bec dt-bindings: PCI: Remove obsolete .txt docs
a59cf6bd0a89 dt-bindings: PCI: Convert marvell,armada8k-pcie to schema
62bb3eef59ee dt-bindings: PCI: Convert Marvell EBU to schema
be24a3971fd2 dt-bindings: PCI: sifive,fu740-pcie: Fix include placement in DTS example
a3908fe56239 dt-bindings: PCI: Correct indentation and style in DTS example
159e9454d956 dt-bindings: PCI: dwc: rockchip: Add rk3562 support
ef0f37ca5ff5 dt-bindings: PCI: dw: rockchip: Add rk3576 support
ebc2179ccf8f dt-bindings: net: Document support for Renesas RZ/V2H(P) GBETH
472799cc1133 dt-bindings: net: dwmac: Increase 'maxItems' for 'interrupts' and 'interrupt-names'
1997420be337 dt-bindings: net: dp83822: add constraints for mac-termination-ohms
e706611ad55b dt-bindings: net: ethernet-phy: add property mac-termination-ohms
10faeaae6517 dt-bindings: iio: imu: icm42600: add interrupt naming support
d2b5833dde70 dt-bindings: ROHM BD79104 ADC
050b648678c0 dt-bindings: iio: adc: adi,ad7606: add SPI offload properties
61c34bb63511 dt-bindings: iio: adc: ad7380: add AD7389-4
520f1aa3afd9 dt-bindings: Add ROHM BD7970x variants
9db7709f449c dt-bindings: ROHM BD79124 ADC/GPO
484465e0026d dt-bindings: iio: filter: Add lpf/hpf freq margins
c0d5d6f0abd0 dt-bindings: iio: adc: amlogic,meson-saradc: Add GXLX SoC compatible
10988aac05c5 dt-bindings: iio: light: bh1750: Add reset-gpios property
c9f357746caa dt-bindings: iio: Use unevaluatedProperties for SPI devices
aad2a4aba149 dt-bindings: iio: Correct indentation and style in DTS example
7c7b549aa38c dt-bindings: display: imx: convert fsl,tcon.txt to yaml format
22d2cf8b3f78 dt-bindings: fsl: convert m4if.txt and tigerp.txt to yaml format
e07e2c2f96fe dt-bindings: display: imx: convert ldb.txt to yaml format
a9b92e46c884 dt-bindings: powerpc: Convert fsl/pmc.txt to YAML
ca4517cfee45 dt-bindings: virtio: pci-iommu: Add ref to pci-device.yaml
86b145f94994 dt-bindings: backlight: add TI LP8864/LP8866 LED-backlight drivers
c2ba19c59cef dt-bindings: display: imx: convert fsl-imx-drm.txt to yaml format
fb650bd91b53 dt-bindings: interrupt-controller: Add missed fsl tzic controller
1f5c4df2e936 dt-bindings: remove RZ/N1S bindings
335c675342f4 dt-bindings: Remove obsolete numa.txt
855e8fcacd8e dt-bindings: Remove obsolete cpu-topology.txt
195c40fcc4b6 dt-bindings: counter: Convert ftm-quaddec.txt to yaml format
417caeebdd6c dt-bindings: cpufreq: Drop redundant Mediatek binding
f6548c04b52e dt-bindings: arm/cpus: Add power-domains constraints
2ddae0f8d5fe dt-bindings: arm/cpus: Add missing properties
28a210612928 dt-bindings: Reference opp-v1 schema in CPU schemas
fe6dc7443d31 dt-bindings: arm/cpus: Re-wrap 'description' entries
c64045034fdf dt-bindings: arm/cpus: Add schemas for "enable-method" dependencies
df668f6655f1 ASoC: dt-bindings: add schema for rockchip SAI controllers
1d48e25ced56 arm64: dts: add support for S7D based Amlogic BM202
0c1264e70500 arm64: dts: add support for S7 based Amlogic BP201
593f1d88b3b7 arm64: dts: add support for S6 based Amlogic BL209
410b38d60404 dt-bindings: arm: amlogic: add S7D support
2ca205bee2ea dt-bindings: arm: amlogic: add S7 support
20f8de3f09b1 dt-bindings: arm: amlogic: add S6 support
3c7e8180dc78 ASoC: dt-bindings: fsl,mqs: Document audio graph port
a80240369b3a arm64: dts: mediatek: mt8390-genio-common: Add firmware-name for scp0
1755d247e0e6 arm64: dts: mediatek: mt8188: Describe SCP as a cluster with two cores
17a60804ef13 dt-bindings: soc: amlogic: S4 supports clk-measure
8c786a9d5d99 dt-bindings: soc: amlogic: C3 supports clk-measure
11eee42e07c5 arm64: dts: amlogic: S4: Add clk-measure controller node
532a71d8ed7f arm64: dts: amlogic: C3: Add clk-measure controller node
44fcfeee7cf3 arm64: dts: rockchip: Add rk3576 pcie nodes
671d11c0c112 arm64: dts: rockchip: Enable HDMI audio outputs for Cool Pi CM5 EVB
5d9a0d8efcc1 arm64: dts: rockchip: Enable HDMI1 on Cool Pi CM5 EVB
edcac1a68928 arm64: dts: rockchip: Rename hdmi-con to hdmi0-con for Cool Pi CM5 EVB
6164d1b5f147 arm64: dts: rockchip: Enable eDP0 display on RK3588S EVB1 board
7a5418e7cb3b arm64: dts: rockchip: Add eDP0 node for RK3588
49ec37e83ae2 Merge tag 'renesas-r9a09g057-dt-binding-defs-tag3' into renesas-clk-for-v6.16
45233ddb59b5 dt-bindings: clock: renesas,r9a09g057-cpg: Add USB2 PHY and GBETH PTP core clocks
bad521c00e8d arm64: dts: renesas: rzg3e-smarc-som: Enable Mali-G52
ec4f1ea3a42a arm64: dts: renesas: r9a09g047: Add Mali-G52 GPU node
28fa85b6d9f9 arm64: dts: renesas: rzg3e-smarc-som: Add RAA215300 pmic support
f8d7d5853e29 arm64: dts: renesas: rzg3e-smarc-som: Add I2C2 device pincontrol
a03e6f70cfb9 dt-bindings: soc: renesas: Add Renesas RZ/T2H (R9A09G077) SoC
ed79e930a772 arm64: dts: exynos: Add DT node for all UART ports
e27cacd3b8c5 arm64: dts: amlogic: Drop redundant CPU "clock-latency"
3b88cda61806 arm64: dts: amlogic: gxlx-s905l-p271: add saradc compatible
4fe442ce931a arm64: dts: amlogic: a1: enable UART RX and TX pull up by default
96a635366da2 arm64: dts: amlogic: axg: enable UART RX and TX pull up by default
2c676fabc600 arm64: dts: amlogic: g12: enable UART RX and TX pull up by default
b9f6d24ba1a8 arm64: dts: amlogic: gxl: enable UART RX and TX pull up by default
744536cebfea arm64: dts: amlogic: gxbb: enable UART RX and TX pull up by default
62731c5b2949 arm64: dts: amlogic: a4: add pinctrl node
08023b0f21ab ARM: dts: amlogic: meson8b: enable UART RX and TX pull up by default
84e4059661d3 ARM: dts: amlogic: meson8: enable UART RX and TX pull up by default
7fffb9023d36 arm64: dts: imx8mp-evk: Enable DSP node for remoteproc usage
02671eee212b arm64: dts: imx8mp: Add DSP clocks
d87bc6cce59c arm64: dts: imx8mp: Configure dsp node for rproc usage
7aaa6e97a546 arm64: dts: imx8mp: Add mu2 root clock
9a7ac78ffb7a arm64: dts: imx8mp: Use resets property
36a025b9b2cb ARM: dts: imx51-digi-connectcore-som: Fix MMA7455 compatible
9dc44c77abcf ARM: dts: nxp: Align NAND controller node name with bindings
30c126d6dbab ARM: dts: imx: Fix the iim compatible string
4a9140955168 ARM: dts: imx31/imx6: Use flash as the NOR node name
86a6c4e28468 arm64: dts: imx: add imx95 dts for sof
60488f92956c arm64: dts: imx8mq: Add linux,pci-domain into pcie-ep node
6c877f641153 arm64: dts: imx8mm-phyboard-polis-peb-av-10: Set lvds-vod-swing
51f47e7c0b4c arm64: dts: qcom: qdu1000: Add snps,dis_u3_susphy_quirk
ef6bc0bf348e arm64: dts: qcom: qcs615: Add snps,dis_u3_susphy_quirk
cf3e5871d878 arm64: dts: qcom: sm8450: Add snps,dis_u3_susphy_quirk
074247f3be2b arm64: dts: qcom: sm8350: Add snps,dis_u3_susphy_quirk
7406a3e0937d arm64: dts: qcom: sm8150: Add snps,dis_u3_susphy_quirk
614a08df6a4a arm64: dts: ti: k3-j784s4-j742s2-evm: Add overlay to enable USB0 Type-A
094cbe1a912d arm64: dts: ti: k3-am67a-beagley-ai: Add bootph for main_gpio1
a63b4daf4b79 dt-bindings: display: rockchip: analogix-dp: Add support for RK3588
e4c693434b30 dt-bindings: display: rockchip: analogix-dp: Add support to get panel from the DP AUX bus
d1e65709163b arm64: dts: qcom: x1e80100-hp-omnibook-x14: Remove invalid bt-en-sleep node
2cb79ee30004 Merge branch 'arm32-for-6.15' into arm64-for-6.16
43b365ed3fc7 dt-bindings: pci: apple,pcie: Add t6020 compatible string
7a1b30bb0eea dt-bindings: PCI: qcom,pcie-sc8180x: Add 'global' interrupt
ade654bc2d03 dt-bindings: PCI: qcom: Allow IPQ6018 to use 8 MSI and one 'global' interrupt
5d87250e09fd dt-bindings: PCI: qcom: Allow IPQ8074 to use 8 MSI and one 'global' interrupt
4fa9a33a89aa dt-bindings: PCI: qcom: Allow MSM8998 to use 8 MSI and one 'global' interrupt
87908d20f9b5 dt-bindings: PCI: qcom: Add 'global' interrupt for SDM845 SoC
77377b0980f6 dt-bindings: PCI: qcom,pcie-sc7280: Add 'global' interrupt
95050a994ec3 dt-bindings: PCI: qcom,pcie-sa8775p: Add 'global' interrupt
4d5a69cb16bf dt-bindings: PCI: qcom,pcie-sm8350: Add 'global' interrupt
46e0cc9c1aa9 dt-bindings: PCI: qcom,pcie-sm8250: Add 'global' interrupt
ba7c1c776905 dt-bindings: PCI: qcom,pcie-sm8150: Add 'global' interrupt
70aa3043231a dt-bindings: misc: Describe TI FPC202 dual port controller
da01ee99aa22 arm64: dts: ti: Add k3-am62-pocketbeagle2
de444d92c16f dt-bindings: arm: ti: Add PocketBeagle2
4a5c06ef7268 arm64: dts: ti: k3-am625-verdin: Add EEPROM compatible fallback
85889ab7cccb arm64: dts: ti: k3-am62p-j722s: Add rng node
99c4e495818d arm64: dts: ti: k3-am64: Add PCIe ctrl node to main_conf region
05c44f561285 arm64: dts: ti: k3-j721s2: Add PCIe ctrl node to scm_conf region
9d8a3b7ffe5b arm64: dts: ti: k3-j7200: Add PCIe ctrl node to scm_conf region
d93d024659d6 arm64: dts: ti: k3-j721e: Add PCIe ctrl node to scm_conf region
a98c73a3f45f dt-bindings: soc: ti: ti,j721e-system-controller: Add PCIe ctrl property
5c346d01e6e2 arm64: dts: ti: k3-am62x: Rename I2C switch to I2C mux in OV5640 overlay
8ea0ac26429e arm64: dts: ti: k3-am62x: Rename I2C switch to I2C mux in IMX219 overlay
cb6797019f26 arm64: dts: ti: k3-am62x: Remove clock-names property from IMX219 overlay
15eccb1baa91 arm64: dts: ti: k3-j721e-sk: Add requiried voltage supplies for IMX219
3aa414595924 arm64: dts: ti: k3-j721e-sk: Remove clock-names property from IMX219 overlay
889f193469ef arm64: dts: ti: k3-am68-sk: Fix regulator hierarchy
9a5103dd484c arm64: dts: ti: k3-j721e-sk: Add DT nodes for power regulators
541f9536e43a arm64: dts: ti: k3-j722s-evm: Drop redundant status within serdes0/serdes1
a82340293539 arm64: dts: ti: k3-j722s-main: Don't disable serdes0 and serdes1
69db838227f8 arm64: dts: ti: k3-j722s-main: Disable "serdes_wiz0" and "serdes_wiz1"
50ace9c7fca6 arm64: dts: ti: k3-j722s-evm: Enable "serdes_wiz0" and "serdes_wiz1"
c68fb8dfcecc arm64: dts: ti: k3-j784s4-evm-usxgmii-exp1-exp2: drop pinctrl-names
f7e7b4782d11 spi: dt-bindings: Fix description mentioning a removed property
40b5957489e6 Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
a76293f399ef dt-bindings: display: panel: Add Visionox G2647FB105
31bf80b7e095 dt-bindings: display: panel: Add Himax HX8279/HX8279-D DDIC panels
3d0544beaaa9 dt-bindings: vendor-prefixes: Add Shenzhen Aoly Technology Co., Ltd.
aadceed2b38f dt-bindings: display: simple: Add Tianma P0700WXF1MBAA panel
a7ec818fd1b6 dt-bindings: dma: Add Arm DMA-350
b3e59c644dfa ASoC: mt8195: Add support for MT8395 Radxa NIO 12L
1e0a96627fed dt-bindings: iommu: mediatek: Add binding for MT6893 MM IOMMU
58366e7824fc dt-bindings: gpio: spacemit: add support for K1 SoC
af0ce3f46116 ASoC: dt-bindings: mt8195: add missing audio routing and link-name
3f5cd90ccdf5 ASoC: dt-bindings: mt8195: add compatible mt8195_mt6359
ea716e20528e dt-bindings: pwm: Add RZ/G2L GPT binding
103d3ddc2b21 dt-bindings: pinctrl: convert fsl,vf610-pinctrl.txt to yaml format
cd7fc0138a87 dt-bindings: pinctrl: mediatek: Add support for mt8196
e036f09b4726 dt-bindings: pinctrl: mediatek: Add support for MT6893
9ad102711159 dt-bindings: pinctrl: mediatek: Correct indentation and style in DTS example
a3f46993c1d8 dt-bindings: pinctrl: mediatek: Drop unrelated nodes from DTS example
5aaff15d6d3c dt-bindings: display: mediatek: Add binding for MT8195 HDMI-TX v2
09efe288b44d dt-bindings: display: mediatek: Add binding for HDMIv2 DDC
ef5598e4b3d3 dt-bindings: clock: spacemit: Add spacemit,k1-pll
65c5c58321a4 dt-bindings: soc: spacemit: Add spacemit,k1-syscon
5d45a2a0a682 arm64: dts: qcom: sdm670: add camss and cci
98e1d9e9dd0e arm64: dts: mediatek: mt8196: Add pinmux macro header file
0124ced0cefe arm64: dts: mediatek: Add MT6893 pinmux macro header file
b4f4a5903e9f arm64: dts: mediatek: mt7622: Align GPIO hog name with bindings
27ba1cca68e2 arm64: dts: exynos: update all samsung,mode constants
c212190a0719 arm64: dts: qcom: sm8750-qrd: Enable modem
0c0d0f9db397 arm64: dts: qcom: sm8750-mtp: Enable modem
2dbfda4a1fca arm64: dts: qcom: sm8750: Add Modem / MPSS
dbdccf6854da arm64: dts: qcom: qcs6490-rb3gen2: Update the LPASS audio node
3ea9ff6b6b1f arm64: dts: qcom: qcm6490-idp: Update the LPASS audio node
515c678e4680 arm64: dts: qcom: sa8775p: Remove cdsp compute-cb@10
a797c39416e5 arm64: dts: qcom: sa8775p: Remove extra entries from the iommus property
c7412fe27214 arm64: dts: qcom: sm8650: use correct size for VBIF regions
a9ead2dddaf4 arm64: dts: qcom: sm8550: use correct size for VBIF regions
2684f559cb43 arm64: dts: qcom: sm8450: use correct size for VBIF regions
4d3789d6ba95 arm64: dts: qcom: sm8350: use correct size for VBIF regions
848bec2a462d arm64: dts: qcom: sm8250: use correct size for VBIF regions
8e40db4bb6bb arm64: dts: qcom: sm8150: use correct size for VBIF regions
5a868a02e7cf arm64: dts: qcom: sm6350: use correct size for VBIF regions
dffd3d4bcc12 arm64: dts: qcom: sm6125: use correct size for VBIF regions
cb1203e882d8 arm64: dts: qcom: sm6115: use correct size for VBIF regions
ba2eaf6365b2 arm64: dts: qcom: sdm845: use correct size for VBIF regions
30d1db2367db arm64: dts: qcom: sdm670: use correct size for VBIF regions
b9b2eed490b9 arm64: dts: qcom: sc8280xp: use correct size for VBIF regions
deb12da90a9f arm64: dts: qcom: sc8180x: use correct size for VBIF regions
eedd6875af28 arm64: dts: qcom: sc7280: use correct size for VBIF regions
dc88454477ff arm64: dts: qcom: sc7180: use correct size for VBIF regions
9835c454bf62 arm64: dts: qcom: sa8775p: use correct size for VBIF regions
b4368defbe1e arm64: dts: qcom: qcm2290: use correct size for VBIF regions
ebb5589fdeaa arm64: dts: qcom: msm8998: use correct size for VBIF regions
3ce4be3b9d8e arm64: dts: qcom: sa8775p: mark MDP interconnects as ALWAYS on
43adeccee9db arm64: dts: qcom: sc7280: Use the header with DSI phy clock IDs
c2b74a5ab3ec arm64: dts: qcom: sdm660-xiaomi-lavender: Add missing SD card detect GPIO
81d7bb6bfb24 ASoC: Add codec driver for Cirrus Logic CS48L32 DSP
4da4895ae7c6 arm64: dts: apple: Add SPMI controller nodes
7dd41ba7ca89 ASoC: dt-bindings: Add Cirrus Logic CS48L32 audio DSP
ba0f5e8a4bbb dt-bindings: usb: Introduce qcom,snps-dwc3
f7e8d13af32d dt-bindings: usb: samsung,exynos-dwc3: add exynos2200 compatible
376d95f4fcfd dt-bindings: net: wireless: Add Realtek RTL8188ETV USB WiFi
1393ec501aad dt-bindings: gpu: img: Add BXS-4-64 devicetree bindings
04e4825e5e66 dt-bindings: gpu: img: Future-proofing enhancements
f61cd93fb04d dt-bindings: interconnect: Add EPSS L3 compatible for SA8775P
48d0f5c99b80 arm64: dts: mediatek: mt8195: Add power domain for dp_intf0
fd5871672cfb dt-bindings: pinctl: amlogic,pinctrl-a4: Add compatible string for A5
80d9fbe4ae24 arm64: dts: mediatek: mt8188: Add all Multimedia Data Path 3 nodes
519c51530765 dt-bindings: media: mediatek: mdp3: Add compatibles for MT8188 MDP3
86930b41fb55 dt-bindings: display: mediatek: Add compatibles for MT8188 MDP3
23020928772e dt-bindings: memory: mtk-smi: Add support for MT6893
32ce7f7677ee ARM: dts: qcom: sdx55/sdx65: Fix CPU power-domain-names
489603d7ae76 arm64: dts: qcom: msm8992-lg-h815: Fix CPU node "enable-method" property dependencies
1acb8a3afec9 arm64: dts: qcom: msm8939: Fix CPU node "enable-method" property dependencies
58430ce78a75 arm64: dts: qcom: qdu1000: Fix qcom,freq-domain
51c305a0eec9 arm64: dts: qcom: Remove unnecessary MM_[UD]L audio routes
0ddb3701d5a2 arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: enable MICs LDO
d2d340219d57 arm64: dts: qcom: remove max-speed = 1G for RGMII for ethernet
2e97866fef19 riscv: dts: thead: Introduce power domain nodes with aon firmware
3203bed54904 dt-bindings: net: ti: k3-am654-cpsw-nuss: evaluate fixed-link property
57d708a99684 dt-bindings: net: ethernet-controller: add 5000M speed to fixed-link
4c7f11603555 dt-bindings: interrupt-controller: Add Sophgo SG2044 MSI controller
be5c965c1e13 arm64: dts: marvell: Drop unused "pinctrl-names"
970715b11ece Add support for Loongson-1 AC97
9c7b95fb32ec dt-bindings: soc: mediatek: dvfsrc: Add support for MT6893
09a106a121fc arm64: dts: mediatek: mt8186: starmie: Fix external display
b4b6de803068 arm64: dts: mediatek: mt8195: Reparent vdec1/2 and venc1 power domains
d029a36da846 arm64: dts: mediatek: mt8390-genio-common: Fix pcie pinctrl dtbs_check error
72a769730bb5 arm64: dts: mediatek: mt8395-genio-1200-evk: Add scp firmware-name
ea454778c25d arm64: dts: mediatek: mt8395-nio-12l: Add scp firmware-name
3be6964ca5d7 arm64: dts: mediatek: mt8188: Fix IOMMU device for rdma0
b75a3a2e52bc dt-bindings: firmware: Add i.MX95 SCMI LMM and CPU protocol
4755ea6ea789 ARM: dts: renesas: r9a06g032-rzn1d400-eb: describe SD card port
e18bd34b9406 ARM: dts: renesas: r9a06g032: Describe SDHCI controllers
d8697a0b8be3 arm64: dts: renesas: Add initial device tree for RZ/V2N EVK
e31a92d550aa arm64: dts: renesas: Add initial SoC DTSI for RZ/V2N
6c01ced6fc08 Merge tag 'renesas-r9a09g056-dt-binding-defs-tag1' into renesas-dts-for-v6.16
be5c7945dfbc dt-bindings: pinctrl: renesas: Document RZ/V2N SoC
757f7c111e60 dt-bindings: clock: renesas: Document RZ/V2N SoC CPG
14a6a632f90b dt-bindings: soc: renesas: Document SYS for RZ/V2N SoC
7f01c2ee0bf2 dt-bindings: soc: renesas: Document Renesas RZ/V2N SoC variants and EVK
a5a215f049ad ARM: dts: renesas: r9a06g032-rzn1d400-db: Describe keys
1252dbd741d4 ARM: dts: renesas: r9a06g032-rzn1d400-eb: Describe I2C bus
eef897044665 ARM: dts: renesas: r9a06g032-rzn1d400-db: Describe I2C bus
5f148a8d8dfc ARM: dts: renesas: r9a06g032: Describe I2C controllers
f8ef11f15d0d ARM: dts: renesas: Add r9a06g032-rzn1d400-eb board device-tree
15c36ca1f1aa dt-bindings: pwm: Add Loongson PWM controller
f13ab79ad775 ASoC: dt-bindings: Add bindings for Richtek rt9123p
551439fc8917 ASoC: dt-bindings: Add bindings for Richtek rt9123
67b9a4a613e5 ASoC: dt-bindings: Add Realtek ALC203 Codec
cd0cbd25ba04 ASoC: dt-bindings: Add Loongson-1 AC97 Controller
d19f03845632 arm64: dts: apple: t8015: Add CPU caches
96e590bf75e3 arm64: dts: apple: t8012: Add CPU caches
f403b51db93d arm64: dts: apple: t8011: Add CPU caches
1ffd100554f7 arm64: dts: apple: t8010: Add CPU caches
ab70b5862bf9 arm64: dts: apple: s8001: Add CPU caches
1e80d37ce322 arm64: dts: apple: s800-0-3: Add CPU caches
7fc695068e5e arm64: dts: apple: t7001: Add CPU caches
d91d60a37dac arm64: dts: apple: t7000: Add CPU caches
446475ce91b6 arm64: dts: apple: s5l8960x: Add CPU caches
51ac91f86b5a arm64: dts: broadcom: bcm2712: Use "l2-cache" for L2 cache node names
3b1c9669fcb3 dt-bindings: serial: Add compatible for Renesas RZ/T2H SoC in sci
27b96d2832df dt-bindings: serial: 8250: support an optional second clock
9487008acf8e dt-bindings: serial: snps-dw-apb-uart: Simplify DMA-less RZ/N1 rule
c58e818dffba dt-bindings: usb: usbmisc-imx: add support for i.MX95 platform
925760feb157 dt-bindings: usb: chipidea: Add i.MX95 compatible string 'fsl,imx95-usb'
3f95cd9eb7ee dt-bindings: usb: smsc,usb3503: Correct indentation and style in DTS example
0c1b24f9cf87 dt-bindings: usb: dwc3: Allow connector in USB controller node
c4d9df4388d4 dt-bindings: usb: qcom,dwc3: Add SM8750 compatible
ab3e4701d6ae dt-bindings: phy: qcom: uniphy-pcie: Add ipq5018 compatible
962144dc8146 dt-bindings: media: add support for video hardware on QCS615 platform
2dfdfac83463 dt-bindings: media: qcom,sm8550-iris: document SA8775p IRIS accelerator
e4ad9ca4085b dt-bindings: media: Add qcom,x1e80100-camss
80ddf0af6187 dt-bindings: media: camss: Restrict bus-type property
c34ae9de8ac5 ASoC: dt-bindings: Update example for enabling USB offload on SM8250
1d86a3fe426b ASoC: dt-bindings: qcom,q6dsp-lpass-ports: Add USB_RX port
2a377d8f94b5 ALSA: Add USB audio device jack type
cf0cbf431777 ARM: dts: at91: at91sam9263: fix NAND chip selects
fbe5a79f2873 ARM: dts: at91: usb_a9g20: move wrong RTC node
066ddcdd974a ARM: dts: at91: calao_usb: simplify chosen node
81de6966411b ARM: dts: at91: usb_a9260: use 'stdout-path'
8161869d1b43 ARM: dts: at91: calao_usb: simplify memory node
3dd34def8029 ARM: dts: at91: usb_a9263: fix GPIO for Dataflash chip select
a3f21e5b3a39 ARM: dts: at91: usb_a9g20: add SPI EEPROM
35085606ce0f dt-bindings: phy: brcmstb-usb-phy: Add support for bcm74110
be4f0bbd2ad9 ARM: dts: nokia n900: remove useless io-channel-cells property
0b7ceacf9b52 dt-bindings: display: simple: Add NLT NL13676BC25-03F panel
a5339a602279 dt-bindings: vendor-prefixes: Add EcoNet
b382b0963bb2 dt-bindings: phy: samsung,usb3-drd-phy: add exynos7870-usbdrd-phy compatible
db1d9d73cbf8 dt-bindings: phy: rockchip: Add missing "phy-supply" property
ea31b71e8dc7 arm64: dts: rockchip: Move SHMEM memory to reserved memory on rk3588
752a63fbba9f arm64: dts: rockchip: Add UART DMA support for RK3528
2342a94e45da arm64: dts: rockchip: Add DMA controller for RK3528
955f7dfa8330 arm64: dts: rockchip: Add missing uart3 interrupt for RK3528
ae0c23f1d3bf arm64: dts: rockchip: Rename vcc3v3_pcie0 to vcc3v3_pcie1 for rk3576-evb1-v10
ff36044b88d2 dt-bindings: display: rockchip,vop: Drop assigned-clocks
177de0ee8887 dt-bindings: firmware: google,gs101-acpm-ipc: add PMIC child node
627460f28703 regulator: dt-bindings: adi,adp5055-regulator: Add adp5055 support
6fba86b23019 arm64: dts: qcom: sm8650: Use the header with DSI phy clock IDs
7cf8e450c836 arm64: dts: qcom: sm8550: Use the header with DSI phy clock IDs
611ef92fbe1e arm64: dts: qcom: sm8450: Use the header with DSI phy clock IDs
dbf9c8e23c16 arm64: dts: qcom: sm8350: Use the header with DSI phy clock IDs
60d462b300bd arm64: dts: qcom: sm8250: Use the header with DSI phy clock IDs
0161b8b428a5 arm64: dts: qcom: sm8150: Use the header with DSI phy clock IDs
00fcce9a5938 arm64: dts: qcom: sm6350: Use the header with DSI phy clock IDs
d00674635be1 arm64: dts: qcom: sm6125: Use the header with DSI phy clock IDs
734afb56dbec arm64: dts: qcom: sm6115: Use the header with DSI phy clock IDs
4c902aa0c3c8 arm64: dts: qcom: sdm845: Use the header with DSI phy clock IDs
2b72c350b768 arm64: dts: qcom: sdm670: Use the header with DSI phy clock IDs
0178dfa7f6b7 arm64: dts: qcom: sdm630: Use the header with DSI phy clock IDs
c7974eda5aee arm64: dts: qcom: sc8180x: Use the header with DSI phy clock IDs
bbd34acbea44 arm64: dts: qcom: sc7180: Use the header with DSI phy clock IDs
72fe36f8dbd7 arm64: dts: qcom: qcm2290: Use the header with DSI phy clock IDs
39411c953302 arm64: dts: qcom: msm8998: Use the header with DSI phy clock IDs
350d85710230 arm64: dts: qcom: msm8996: Use the header with DSI phy clock IDs
bcabc03510bb arm64: dts: qcom: msm8976: Use the header with DSI phy clock IDs
ebfed549cc2d arm64: dts: qcom: msm8953: Use the header with DSI phy clock IDs
f204d52efc5f arm64: dts: qcom: msm8939: Use the header with DSI phy clock IDs
33ad178a48de arm64: dts: qcom: msm8917: Use the header with DSI phy clock IDs
5bfc873d7def arm64: dts: qcom: msm8916: Use the header with DSI phy clock IDs
f8fe1b41ce57 ARM: dts: qcom: msm8974: Use the header with DSI phy clock IDs
f96c56c7a652 ARM: dts: qcom: msm8226: Use the header with DSI phy clock IDs
f4143e343821 arm64: dts: fsd: Add Ethernet support for PERIC Block of FSD SoC
91c650cbe054 arm64: dts: fsd: Add Ethernet support for FSYS0 Block of FSD SoC
c3b35fa8b9a4 ASoC: wcd938x: enable t14s audio headset
37fdec27303b ARM: dts: nuvoton: Add MMC Nodes
b28b0dcdee93 ARM: dts: nuvoton: Add OHCI node
129b618c0219 ARM: dts: nuvoton: Add UDC nodes
151b1957ef4f ARM: dts: nuvoton: Add EDAC node
5c9e6533646b ARM: dts: nuvoton: Align GPIO hog name with bindings
67dfb235fd15 Merge branch 'arm64-for-6.15' into arm64-for-6.16
7ec23a778f3d ARM: dts: Drop DTS for BCM59056 PMU
b443a6223701 ARM: dts: bcm2166x: Add bcm2166x-pinctrl DTSI
9b7546c46ae5 ARM: dts: bcm2166x-common: Add pinctrl node
d70d01b71b71 arm64: dts: broadcom: bcm2712-rpi-5-b: Enable PCIe DT nodes
66cd796ed18b arm64: dts: broadcom: bcm2712: Add PCIe DT nodes
eb4502801000 dt-bindings: cache: sifive,ccache0: Add ESWIN EIC7700 SoC compatibility
4a1378329189 dt-bindings: remoteproc: stm32-rproc: Add firmware-name property
2b4be4ef6b2e dt-bindings: arm: sunxi: Add new board names for A523 generation
b4a4490611e1 dt-bindings: vendor-prefixes: Add YuzukiHD name
247a3572abcf arm64: dts: allwinner: Add Allwinner A523 .dtsi file
82ae2cf2441d arm64: dts: microchip: sparx5: Fix CPU node "enable-method" property dependencies
640d7abca1ba dt-bindings: writing-schema: Explain sub-nodes with additionalProperties:true
d0e1f7ab79fe Merge drm/drm-next into drm-misc-next
9463aad4a8cb dt-bindings: Document Blaize BLZP1600 GPIO driver
1cd181f49a96 arm64: dts: renesas: Remove undocumented compatible micron,mt25qu512a
ad32dcce24ed arm64: dts: renesas: r8a779f4: Add UFS tuning parameters in E-FUSE
374d98a0c04e arm64: dts: renesas: r9a09g047: Add ICU node
f84a5fd28547 arm64: dts: renesas: r9a09g047e57-smarc: Enable SDHI1
6a8407e40474 arm64: dts: renesas: rzg3e-smarc-som: Add support to enable SD on SDHI0
0622623eda68 arm64: dts: renesas: rzg3e-smarc-som: Enable SDHI{0,2}
1963097f0f58 arm64: dts: renesas: r9a09g057: Add support for enabling SDHI internal regulator
260b2d4cff22 arm64: dts: renesas: r9a09g047: Add SDHI0-SDHI2 nodes
e9ca7811de33 dt-bindings: reset: Add T-HEAD TH1520 SoC Reset Controller
03493b4dcc7c dt-bindings: gpio: pca95xx: add Toradex ecgpiol16
f061f5b90a52 dt-bindings: gpio: Correct indentation and style in DTS example
56d2ab45bc92 dt-bindings: interrupt-controller: Add EcoNet EN751221 INTC
3a22dd525deb ARM: dts: rockchip: Add aliases for rk3036-kylin MMC devices
ce9f22f3ac6b arm64: dts: rockchip: Enable HDMI audio output for RK3588 Tiger Haikou
4d53761f203d arm64: dts: rockchip: Enable HDMI audio output for RK3588 Jaguar
05839dce445f arm64: dts: rockchip: Enable HDMI ports on ArmSoM W3
1a906b44673a arm64: dts: rockchip: aliase sdhci as mmc0 for rk3566 box demo
4cc0db11d181 arm64: dts: rockchip: Add gmac phy reset GPIO to QNAP TS433
df34889c120b arm64: dts: rockchip: Correct gmac phy address on QNAP TS433
c2599bd7ba60 arm64: dts: rockchip: enable HDMI sound on FriendlyElec NanoPC-T6
e0105bf99fc5 arm64: dts: rockchip: enable HDMI1 on FriendlyElec NanoPC-T6
993f067b157f arm64: dts: rockchip: Enable ufshc on rk3576 evb1 board
9503e1049d7d arm64: dts: rockchip: change rng reset id back to its constant value
6769059a9a92 dt-bindings: crypto: qcom-qce: document QCS615 crypto engine
8b630d3d0343 spi: dt-bindings: st,stm32mp25-ospi: Make "resets" a required property
41f5c2138eda ASoC: dt-bindings: fsl,mqs: Reference common DAI properties
aca7d7c8231d ASoC: dt-bindings: maxim,max98925: Fix include placement in DTS example
85cb1980874d ASoC: dt-bindings: wcd93xx: add bindings for audio mux controlling hp
bda617efa5fc dt-bindings: display: panel: samsung,atna40yk20: document ATNA40YK20
6567ff08e8a6 arm64: dts: socfpga: agilex: Add dma channel id for spi
74c2199c410b arm64: dts: socfpga: agilex5: add led and memory nodes
6314a862e1f0 arm64: dts: intel: socfpga_agilex: add frequencies to internal oscillators
b6d3a349163f ARM: dts: socfpga: Add basic support for Terrasic's de10-nano
edfe33549623 dt-bindings: altera: Add compatible for Terasic's DE10-nano
1848a10387d0 arm64: dts: socfpga: agilex5: add qspi flash node
ead0491aa20a dt-bindings: firmware: stratix10: Convert to json-schema
d2eb681bb33e dt-bindings: fpga: stratix10: Convert to json-schema
77eaed14fef5 arm64: dts: socfpga: agilex5: fix gpio0 address
d8b351236603 arm64: dts: socfpga: agilex5: add NAND daughter board
638d117a6307 dt-bindings: intel: document Agilex5 NAND daughter board
0b86dfc98961 dt-bindings: net: wireless: describe the ath12k AHB module for IPQ5332
31fe92148c84 dt-bindings: gpu: v3d: Add V3D driver maintainer as DT maintainer
3b8d3bd14126 dt-bindings: gpu: v3d: Add SMS register to BCM2712 compatible
e45f0f5ee9c5 dt-bindings: gpu: v3d: Add per-compatible register restrictions
146ae6a0cc6a arm64: dts: qcom: x1e001de-devkit: fix USB retimer reset polarity
3f64d8354c4d arm64: dts: qcom: qcs8300: Add RPMh sleep stats
110c25056755 arm64: dts: qcom: ipq9574: Add nsscc node
76e32ecd464a Merge branch '20250313110359.242491-1-quic_mmanikan@quicinc.com' into arm64-for-6.15
fe21f24088be arm64: dts: qcom: x1e80100: enable rtc
1f7bad44a3d1 arm64: dts: qcom: sc8280xp-x13s: switch to uefi rtc offset
1932030c0c07 arm64: dts: qcom: sm8650: Fix domain-idle-state for CPU2
061462bb07da ARM: dts: qcom: Initial dts for LG Nexus 4
3705995fb324 arm64: dts: qcom: sa8775p: Add LMH interrupts for cpufreq_hw node
ac0b8ef17d01 arm64: dts: qcom: qcs615: remove disallowed property in spmi bus node
31de34fe7762 arm64: dts: qcom: x1e80100-vivobook-s15: Enable micro-sd card reader
c8133dbde91d arm64: dts: qcom: x1e80100-vivobook-s15: Enable USB-A ports
7333726fee23 arm64: dts: qcom: ipq5424: enable GPIO based LEDs and Buttons
99e6dcb2c981 arm64: dts: qcom: sm7325-nothing-spacewar: Enable panel and GPU
d1449baefa9d ARM: dts: qcom: msm8226-samsung-matisse-common: Enable modem
218a51a4c950 ARM: dts: qcom: msm8926-htc-memul: Enable modem
ec85529af07e ARM: dts: qcom: Introduce dtsi for LTE-capable MSM8926
8927425afd18 ARM: dts: qcom: msm8226: Add BAM DMUX Ethernet/IP device
2a8d7e638921 ARM: dts: qcom: msm8226: Add modem remoteproc node
5303a947ab02 ARM: dts: qcom: msm8226: Add smsm node
2f298f8b4106 ARM: dts: qcom: msm8226: Add node for TCSR halt regs
ce1a1df49c35 arm64: dts: qcom: qcs6490-rb3gen2-vision-mezzanine: Add vision mezzanine
ef593efe4221 arm64: dts: qcom: sc7280: Add support for camss
81f54e00f40f arm64: dts: qcom: ipq9574: Fix USB vdd info
a2f9aa17c719 arm64: dts: qcom: qcm6490-idp: Update protected clocks list
f1964aec801b arm64: dts: qcom: x1e78100-t14s: fix missing HID supplies
efe9b44f4f23 arm64: dts: qcom: x1e80100-qcp: mark l12b and l15b always-on
65f57c317bff arm64: dts: qcom: x1e80100-yoga-slim7x: mark l12b and l15b always-on
4df0b435b8ce arm64: dts: qcom: x1e80100-hp-x14: mark l12b and l15b always-on
40cf0d330276 arm64: dts: qcom: x1e80100-dell-xps13-9345: mark l12b and l15b always-on
62a8ce218aa0 arm64: dts: qcom: x1e001de-devkit: mark l12b and l15b always-on
53e58f66f64f arm64: dts: qcom: x1e78100-t14s: mark l12b and l15b always-on
52f17b4830b6 arm64: dts: qcom: x1e80100-crd: mark l12b and l15b always-on
2e0f9145b47e arm64: dts: qcom: sc8280xp-crd: add support for volume-up key
8555fbf8367f arm64: dts: qcom: x1e80100-crd: Drop duplicate DMIC supplies
715f877e8303 arm64: dts: qcom: sc8280xp-x13s: Drop duplicate DMIC supplies
1991771e2f0d arm64: dts: qcom: x1e78100-t14s: Add OLED variant
2d3002b4a49d arm64: dts: qcom: x1e78100-t14s: Add LCD variant with backlight support
fb84b985b331 dt-bindings: arm: qcom: Document Lenovo ThinkPad T14s Gen 6 LCD and OLED
34f18fc9f9a9 arm64: dts: qcom: qcm6490-fairphone-fp5: Add touchscreen node
0fc33da859aa arm64: dts: qcom: sm8750: Correct clocks property for uart14 node
e392ce11427f arm64: dts: qcom: qcs6490-rb3gen2: Add orientation gpio
265874138759 arm64: dts: qcom: ipq5424: add reserved memory region for bootloader
3bb2a608664d arm64: dts: qcom: qcs8300: Add device node for gfx_smmu
4ea98a741024 arm64: dts: qcom: qcs8300-ride: Enable second USB controller on QCS8300 Ride
dc6e06f3ca59 arm64: dts: qcom: sm8250: Fix CPU7 opp table
2ea8db25021b arm64: dts: qcom: x1e80100-crd: add gpio-keys label for lid switch
05a7db3bd663 arm64: dts: qcom: x1e80100-crd: add support for volume-up key
804469542c98 arm64: dts: qcom: x1e001de-devkit: Drop clock-names from PS8830
cf004f327add arm64: dts: qcom: x1e80100-romulus: Drop clock-names from PS8830
ae4ea2fc84d5 arm64: dts: qcom: x1e80100-dell-xps13-9345: Drop clock-names from PS8830
8f90f22d05b4 arm64: dts: qcom: sc8180x: Rename AOSS_QMP to power-management
76cf4114ff7b arm64: dts: qcom: qcs615: Rename AOSS_QMP to power-management
b5c3438db8ee arm64: dts: qcom: sdx75: Rename AOSS_QMP to power-management
c7537e0429c8 arm64: dts: qcom: sdx75: Fix up the USB interrupt description
b0786b5d200c arm64: dts: qcom: ipq9574: Remove eMMC node
c1d9b6d09198 arm64: dts: qcom: ipq9574: Enable SPI NAND for ipq9574
494f401c3e8c arm64: dts: qcom: ipq9574: Add SPI nand support
0800cd2ac181 arm64: dts: qcom: sm6125: Initial support for xiaomi-ginkgo
44f77eafc733 dt-bindings: arm: qcom: Add Xiaomi Redmi Note 8
7076352823cc arm64: dts: qcom: sc7280: drop video decoder and encoder nodes
52bfe54b74fa arm64: dts: qcom: sa8775p: Add CTCU and ETR nodes
498de1e01884 arm64: dts: qcom: qrb5165-rb5: add compressed playback support
773069e8ecaf arm64: dts: qcom: sm8650: add PPI interrupt partitions for the ARM PMUs
07ddcafd37f3 arm64: dts: qcom: sm8650: switch to interrupt-cells 4 to add PPI partitions
652b5ebbff21 ARM: dts: qcom: msm8960: Add thermal sensor (tsens)
3278100c97aa arm64: dts: qcom: qcs615: add TRNG node
bb2b0cc8d9a8 arm64: dts: qcom: sm8750: Fix cluster hierarchy for idle states
c1a73ba7c1cf arm64: dts: qcom: sm8450: add PCIe EP device nodes
718439f6e82d arm64: dts: qcom: sar2130p: add PCIe EP device nodes
9cf55d5faba5 arm64: dts: qcom: Drop `tx-sched-sp` property
568f3c8b2b5d ARM: dts: qcom: msm8960: Add BAM
ab027c48e4ad arm64: dts: qcom: msm8917-xiaomi-riva: Add display backlight
2138fc94be48 arm64: dts: qcom: pm8937: Add LPG PWM driver
e91a4033e4ce arm64: dts: qcom: ipq9574: fix the msi interrupt numbers of pcie3
38691f9d0837 arm64: dts: qcom: ipq9574: Add missing properties for cryptobam
be1438b63f67 arm64: dts: qcom: sa8775p: Add missing properties for cryptobam
66b846921c08 arm64: dts: qcom: sm8650: Add missing properties for cryptobam
2dac12521235 arm64: dts: qcom: sm8550: Add missing properties for cryptobam
fdc35bd52bc8 arm64: dts: qcom: sm8450: Add missing properties for cryptobam
4a32c2aa8f4e arm64: dts: qcom: sm8350: Reenable crypto & cryptobam
52d68253ad12 arm64: dts: qcom: sm8750-qrd: Enable CDSP
c82aa2b08a97 arm64: dts: qcom: sm8750-mtp: Enable CDSP
5f73938ce2e7 arm64: dts: qcom: sm8750: Add CDSP
9cd9e329ed44 arm64: dts: qcom: sm8750-qrd: Enable ADSP
9f7809fb268c arm64: dts: qcom: sm8750-mtp: Enable ADSP
daf1a64625c6 arm64: dts: qcom: sm8750: Add LPASS macro codecs and pinctrl
ffabaffd686a arm64: dts: qcom: sm8750: Add IPCC, SMP2P, AOSS and ADSP
e4c81cca30eb arm64: dts: qcom: ipq5424: Enable MMC
add2c5457210 arm64: dts: qcom: sm8750: Add ICE nodes
732dd897ea8f arm64: dts: qcom: sm8750: Add TRNG nodes
918bf155967b arm64: dts: qcom: sm8750: Add QCrypto nodes
1b23fab56ee1 arm64: dts: qcom: Use recommended MBN firmware path
c08efec1e5aa dt-bindings: display: simple: Add POWERTIP PH128800T004-ZZA01 panel
0b314a523a02 arm64: dts: qcom: sdm845-starqltechn: add touchscreen support
53102db27a11 arm64: dts: qcom: sdm845-starqltechn: add display PMIC
ff7fcf3adb6f arm64: dts: qcom: sdm845-starqltechn: add max77705 PMIC
3548ab694bac arm64: dts: qcom: sdm845-starqltechn: add gpio keys
e999ae3e334e arm64: dts: qcom: sdm845-starqltechn: remove excess reserved gpios
eccbdc90a7a6 arm64: dts: qcom: sdm845-starqltechn: refactor node order
c40aa640a72e arm64: dts: qcom: sdm845-starqltechn: fix usb regulator mistake
53c6b51bd2f3 arm64: dts: qcom: sdm845-starqltechn: remove wifi
8016d08c4ee4 arm64: dts: qcom: sdm845: enable gmu
7558c172ac2c arm64: dts: qcom: x1e80100-t14s: Enable external DisplayPort support
c8b1cf4d58de arm64: dts: qcom: x1e80100-t14s: Describe the Parade PS8830 retimers
e8f48aa148c3 arm64: dts: qcom: x1e80100-crd: Enable external DisplayPort support
12953b040829 arm64: dts: qcom: x1e80100-crd: Describe the Parade PS8830 retimers
1c12f1a1c5e0 arm64: dts: qcom: x1e80100-romulus: Keep L12B and L15B always on
cd6009eec380 arm64: dts: qcom: sm8650: add all 8 coresight ETE nodes
08f0a5fbfb5c arm64: dts: qcom: x1e80100-qcp: Add WiFi/BT pwrseq
c86a96b79dc4 arm64: dts: qcom: sm8750: Add RPMh sleep stats
b6ad871ee6ae arm64: dts: qcom: Correct white-space style
80b421a10451 arm64: dts: qcom: sm8750: Change labels to lower-case
deee6d373e3f arm64: dts: qcom: sdm632-fairphone-fp3: Enable modem
e919ef3dc364 arm64: dts: qcom: sdm632-fairphone-fp3: Add firmware-name for adsp & wcnss
56e365fe287f arm64: dts: qcom: sdm632-fairphone-fp3: Add newlines between regulator nodes
50e52f7993e6 arm64: dts: qcom: sdm632-fairphone-fp3: Move status properties last
0f637990483d arm64: dts: qcom: qcs615: Add Command DB support
c2141cabcc17 arm64: dts: qcom: sm8250-elish: Switch to undeprecated qcom,calibration-variant
ec526e787936 arm64: dts: qcom: sc8280xp: Switch to undeprecated qcom,calibration-variant
5360722ae36a arm64: dts: qcom: sa8775p-ride: Switch to undeprecated qcom,calibration-variant
7f183e0e4b2a arm64: dts: qcom: qcm6490: Switch to undeprecated qcom,calibration-variant
20ccf83f7dc8 arm64: dts: qcom: sm8150-hdk: Switch to undeprecated qcom,calibration-variant
a2aae9258894 arm64: dts: qcom: sm6115: Switch to undeprecated qcom,calibration-variant
bc753687cc11 arm64: dts: qcom: sda660-ifc6560: Switch to undeprecated qcom,calibration-variant
766ecec7fc27 arm64: dts: qcom: sdm845: Switch to undeprecated qcom,calibration-variant
b81275ed77c7 arm64: dts: qcom: sc7180: Switch to undeprecated qcom,calibration-variant
003514422bb8 arm64: dts: qcom: qrb4210-rb2: Switch to undeprecated qcom,calibration-variant
372494e32ec5 arm64: dts: qcom: qrb2210-rb1: Switch to undeprecated qcom,calibration-variant
3d7f887f925f arm64: dts: qcom: msm8998: Switch to undeprecated qcom,calibration-variant
2a6360a0bcaa ARM: dts: qcom: ipq4018: Switch to undeprecated qcom,calibration-variant
711fd3c53856 arm64: dts: qcom: x1e80100-qcp: Enable HBR3 on external DPs
458ec1a15657 arm64: dts: qcom: x1e80100-hp-x14: Enable HBR3 on external DPs
d6a6bfedf9ae arm64: dts: qcom: x1e001de-devkit: Enable HBR3 on external DPs
f8e50df5d86b arm64: dts: qcom: x1e80100-dell-xps13-9345: Enable external DP support
ae23d69c45b0 arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Drop CMA heap
8e96ef991250 arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Drop CMA heap
4b367fd64b02 arm64: dts: qcom: x1e80100: Drop unused passive thermal trip points for CPU
ebf1f1e6c385 arm64: dts: qcom: x1e80100: Add GPU cooling
1cd853d3e939 arm64: dts: qcom: x1e80100: Apply consistent critical thermal shutdown
989e32428df3 arm64: dts: qcom: x1e80100: Fix video thermal zone
9eb704b5190c arm64: dts: qcom: sm8650: add missing cpu-cfg interconnect path in the mdss node
b254425701f6 arm64: dts: qcom: sm8550: add missing cpu-cfg interconnect path in the mdss node
a7f79cd2cb8c arm64: dts: qcom: x1e80100-slim7x: Drop incorrect qcom,ath12k-calibration-variant
a9f8c3d91d5b arm64: dts: qcom: qcs8300: Partially revert "arm64: dts: qcom: qcs8300: add QCrypto nodes"
86e24dafc90b arm64: dts: qcom: sa8775p: Partially revert "arm64: dts: qcom: sa8775p: add QCrypto nodes"
06c923231f08 arm64: dts: qcom: sdm630: Add missing resets to mmc blocks
25333fee1f77 Merge branch '20250203063427.358327-2-alexeymin@postmarketos.org' into arm64-for-6.15
7b608006630d arm64: dts: qcom: sm8650: add UFS OPP table instead of freq-table-hz property
0e0842f4df4b arm64: dts: qcom: sm8650: add QUP serial engines OPP tables
93cb0237bce4 arm64: dts: qcom: sm8650: add OPP table support to PCIe
ca623f9ea777 arm64: dts: qcom: sm8650: add USB interconnect paths
f839c213fc9c arm64: dts: qcom: sm8650: set CPU interconnect paths as ACTIVE_ONLY
e53196775ca4 arm64: dts: qcom: sm8650: use ICC tag for IPA interconnect phandles
706f8f120ead arm64: dts: qcom: sm8550: add QUP serial engines OPP tables
967498cd6d5c arm64: dts: qcom: sm8550: add OPP table support to PCIe
9642703be003 arm64: dts: qcom: sm8550: set CPU interconnect paths as ACTIVE_ONLY
ee0cb175c65e arm64: dts: qcom: sm8550: use ICC tag for all interconnect phandles
ca70a7700ecf arm64: dts: qcom: qcm6490-fairphone-fp5: Enable the GPU
eb752ff527d3 arm64: dts: qcom: qcm6490-fairphone-fp5: Enable display
1d95c3da8c55 arm64: dts: qcom: sm7325-nothing-spacewar: Enable camera EEPROMs
dc2ab4600182 arm64: dts: qcom: sm7325-nothing-spacewar: Add CAM fixed-regulators
4ba736c0dcd3 arm64: dts: qcom: sm8650: drop remaining polling-delay-passive properties
4ec33ea53ea8 arm64: dts: qcom: sm8650: harmonize all unregulated thermal trip points
ef1efd695a2e arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatures
8f99a70eeaf5 arm64: dts: qcom: sm8650: drop cpu thermal passive trip points
b2141c8af961 arm64: dts: qcom: Add X1P42100 SoC and CRD
536623483d06 arm64: dts: qcom: Commonize X1 CRD DTSI
f41f13783cb5 arm64: dts: qcom: x1e80100: Wire up PCIe PHY NOCSR resets
e57b76ee802c arm64: dts: qcom: qcs8300: Add QUPv3 configuration
736071f5b962 arm64: dts: qcom: ipq5424: Add thermal zone nodes
eb736b571ca1 arm64: dts: qcom: ipq5424: Add tsens node
8198b0084ab9 arm64: dts: qcom: ipq5332: Add thermal zone nodes
3009d9c8d08e arm64: dts: qcom: ipq5332: Add tsens node
1c84ea51ce71 arm64: dts: qcom: ipq6018: add LDOA2 regulator
747916e6b00a arm64: dts: qcom: ipq6018: rename labels of mp5496 regulator
863c608cd0b9 arm64: dts: qcom: ipq6018: move mp5496 regulator out of soc dtsi
da4ec8d0edbc arm64: dts: qcom: ipq6018: add 1.5GHz CPU Frequency
80e82218d6e1 arm64: dts: qcom: ipq6018: add 1.2GHz CPU Frequency
19ceff512d98 arm64: dts: qcom: sa8775p-ride: Add firmware-name in BT node
57a9930fcd81 arm64: dts: qcom: x1e80100: Mark usb_2 as dma-coherent
1237cb4eccbd arm64: dts: qcom: qrb5165-rb5: enable sensors DSP
1f5e82091632 arm64: dts: qcom: sdm845-db845c: enable sensors DSP
faf34ece59aa arm64: dts: qcom: sc8280xp: Fix clock for spi0 to spi7
94a09b9504e4 arm64: dts: qcom: qcs8300-ride: Enable PMIC peripherals
94da6d6bf1fe arm64: dts: qcom: qcs8300: Adds SPMI support
79bffbd44317 ARM: dts: qcom: Fix indentation errors
233806c3ca1d arm64: dts: qcom: qcm2290: Add uart3 node
e10add854aaa arm64: dts: qcom: qcs6490-rb3gen2: add and enable BT node
eabcc9205de0 arm64: dts: qcom: sm8650: add cpu OPP table with DDR, LLCC & L3 bandwidths
2f231a9d2e0f arm64: dts: qcom: sm8650: add cpu interconnect nodes
6eedd85983ed arm64: dts: qcom: sm8650: add OSM L3 node
6e335b12f60e arm64: dts: qcom: x1e80100: Add the watchdog device
b926cb91094d arm64: dts: qcom: qcs6490-rb3gen2: Add vadc and adc-tm channels
cb00ad63e5ce arm64: dts: qcom: sc8280xp-pmics: Add more temp-alarm devices
bb44fe9e84d2 arm64: dts: qcom: sc8280xp-pmics: Fix slave ID in interrupts configuration
668f6b1e8012 arm64: dts: qcom: x1e80100: Set CPU interconnect paths as ACTIVE_ONLY

git-subtree-dir: dts/upstream
git-subtree-split: d08867ef8f12adb80b84725a5e82538a5ca46a12

1500 files changed:
Bindings/arm/altera.yaml
Bindings/arm/altera/socfpga-clk-manager.yaml
Bindings/arm/amlogic.yaml
Bindings/arm/arm,coresight-static-replicator.yaml
Bindings/arm/atmel,sama5d2-secumod.yaml [new file with mode: 0644]
Bindings/arm/atmel-sysregs.txt
Bindings/arm/bcm/bcm2835.yaml
Bindings/arm/cpus.yaml
Bindings/arm/freescale/fsl,imx51-m4if.yaml [new file with mode: 0644]
Bindings/arm/freescale/m4if.txt [deleted file]
Bindings/arm/freescale/tigerp.txt [deleted file]
Bindings/arm/fsl.yaml
Bindings/arm/intel,socfpga.yaml
Bindings/arm/mediatek.yaml
Bindings/arm/psci.yaml
Bindings/arm/qcom.yaml
Bindings/arm/rockchip.yaml
Bindings/arm/rockchip/pmu.yaml
Bindings/arm/samsung/samsung-boards.yaml
Bindings/arm/stm32/stm32.yaml
Bindings/arm/sunxi.yaml
Bindings/arm/tegra.yaml
Bindings/arm/ti/k3.yaml
Bindings/arm/vt8500.yaml
Bindings/ata/ahci-dm816.txt [deleted file]
Bindings/ata/ahci-st.txt [deleted file]
Bindings/ata/apm,xgene-ahci.yaml [new file with mode: 0644]
Bindings/ata/apm-xgene.txt [deleted file]
Bindings/ata/arasan,cf-spear1340.yaml [new file with mode: 0644]
Bindings/ata/cavium,ebt3000-compact-flash.yaml [new file with mode: 0644]
Bindings/ata/cavium-compact-flash.txt [deleted file]
Bindings/ata/marvell,orion-sata.yaml [new file with mode: 0644]
Bindings/ata/marvell.txt [deleted file]
Bindings/ata/pata-arasan.txt [deleted file]
Bindings/ata/rockchip,dwc-ahci.yaml
Bindings/ata/st,ahci.yaml [new file with mode: 0644]
Bindings/ata/ti,dm816-ahci.yaml [new file with mode: 0644]
Bindings/bus/microsoft,vmbus.yaml
Bindings/bus/nvidia,tegra210-aconnect.yaml
Bindings/cache/andestech,ax45mp-cache.yaml
Bindings/cache/marvell,feroceon-cache.txt [deleted file]
Bindings/cache/marvell,kirkwood-cache.yaml [new file with mode: 0644]
Bindings/cache/marvell,tauros2-cache.txt [deleted file]
Bindings/cache/marvell,tauros2-cache.yaml [new file with mode: 0644]
Bindings/cache/qcom,llcc.yaml
Bindings/cache/sifive,ccache0.yaml
Bindings/clock/allwinner,sun8i-a83t-de2-clk.yaml
Bindings/clock/altr_socfpga.txt [deleted file]
Bindings/clock/brcm,bcm2835-aux-clock.txt [deleted file]
Bindings/clock/brcm,bcm2835-aux-clock.yaml [new file with mode: 0644]
Bindings/clock/fsl,vf610-ccm.yaml [new file with mode: 0644]
Bindings/clock/maxim,max77686.txt [deleted file]
Bindings/clock/mediatek,mt8188-clock.yaml
Bindings/clock/qcom,videocc.yaml
Bindings/clock/renesas,rzv2h-cpg.yaml
Bindings/clock/samsung,exynosautov920-clock.yaml
Bindings/clock/sophgo,cv1800-clk.yaml
Bindings/clock/sophgo,sg2044-clk.yaml [new file with mode: 0644]
Bindings/clock/spacemit,k1-pll.yaml [new file with mode: 0644]
Bindings/clock/st,stm32h7-rcc.txt [deleted file]
Bindings/clock/thead,th1520-clk-ap.yaml
Bindings/clock/vf610-clock.txt [deleted file]
Bindings/counter/fsl,ftm-quaddec.yaml [new file with mode: 0644]
Bindings/counter/ftm-quaddec.txt [deleted file]
Bindings/cpu/cpu-topology.txt [deleted file]
Bindings/cpufreq/cpufreq-mediatek.txt [deleted file]
Bindings/crypto/amd,ccp-seattle-v1a.yaml [new file with mode: 0644]
Bindings/crypto/amd-ccp.txt [deleted file]
Bindings/crypto/artpec6-crypto.txt [deleted file]
Bindings/crypto/axis,artpec6-crypto.yaml [new file with mode: 0644]
Bindings/crypto/brcm,spu-crypto.txt [deleted file]
Bindings/crypto/brcm,spum-crypto.yaml [new file with mode: 0644]
Bindings/crypto/fsl,sec-v4.0-mon.yaml
Bindings/crypto/fsl,sec-v4.0.yaml
Bindings/crypto/fsl-sec6.txt [deleted file]
Bindings/crypto/hisilicon,hip06-sec.yaml [new file with mode: 0644]
Bindings/crypto/hisilicon,hip07-sec.txt [deleted file]
Bindings/crypto/img,hash-accelerator.yaml [new file with mode: 0644]
Bindings/crypto/img-hash.txt [deleted file]
Bindings/crypto/marvell,orion-crypto.yaml [new file with mode: 0644]
Bindings/crypto/marvell-cesa.txt [deleted file]
Bindings/crypto/mediatek-crypto.txt [deleted file]
Bindings/crypto/mv_cesa.txt [deleted file]
Bindings/crypto/qcom-qce.yaml
Bindings/display/bridge/renesas,dsi.yaml
Bindings/display/bridge/ti,sn65dsi83.yaml
Bindings/display/fsl,tcon.txt [deleted file]
Bindings/display/fsl,vf610-tcon.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx-display-subsystem.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx-parallel-display.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx6q-ipu.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx6q-ldb.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx6qp-pre.yaml [new file with mode: 0644]
Bindings/display/imx/fsl,imx6qp-prg.yaml [new file with mode: 0644]
Bindings/display/imx/fsl-imx-drm.txt [deleted file]
Bindings/display/imx/ldb.txt [deleted file]
Bindings/display/mediatek/mediatek,aal.yaml
Bindings/display/mediatek/mediatek,color.yaml
Bindings/display/mediatek/mediatek,merge.yaml
Bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml [new file with mode: 0644]
Bindings/display/mediatek/mediatek,mt8195-hdmi.yaml [new file with mode: 0644]
Bindings/display/mediatek/mediatek,padding.yaml
Bindings/display/msm/dp-controller.yaml
Bindings/display/msm/dsi-controller-main.yaml
Bindings/display/msm/dsi-phy-7nm.yaml
Bindings/display/msm/hdmi.yaml
Bindings/display/msm/mdp4.yaml
Bindings/display/msm/qcom,mdss.yaml
Bindings/display/msm/qcom,sa8775p-mdss.yaml
Bindings/display/msm/qcom,sar2130p-mdss.yaml [new file with mode: 0644]
Bindings/display/msm/qcom,sc7280-dpu.yaml
Bindings/display/msm/qcom,sm8350-mdss.yaml
Bindings/display/panel/boe,td4320.yaml [new file with mode: 0644]
Bindings/display/panel/himax,hx8279.yaml [new file with mode: 0644]
Bindings/display/panel/leadtek,ltk050h3146w.yaml
Bindings/display/panel/leadtek,ltk500hd1829.yaml
Bindings/display/panel/lg,sw43408.yaml
Bindings/display/panel/novatek,nt37801.yaml [new file with mode: 0644]
Bindings/display/panel/panel-simple.yaml
Bindings/display/panel/samsung,atna33xc20.yaml
Bindings/display/panel/truly,nt35597-2K-display.yaml [new file with mode: 0644]
Bindings/display/panel/visionox,g2647fb105.yaml [new file with mode: 0644]
Bindings/display/rockchip/cdn-dp-rockchip.txt [deleted file]
Bindings/display/rockchip/rockchip,analogix-dp.yaml
Bindings/display/rockchip/rockchip,inno-hdmi.yaml
Bindings/display/rockchip/rockchip,rk3399-cdn-dp.yaml [new file with mode: 0644]
Bindings/display/rockchip/rockchip-vop.yaml
Bindings/display/sitronix,st7571.yaml [new file with mode: 0644]
Bindings/display/truly,nt35597.txt [deleted file]
Bindings/dma/arm,dma-350.yaml [new file with mode: 0644]
Bindings/dma/fsl,edma.yaml
Bindings/dma/nvidia,tegra20-apbdma.txt [deleted file]
Bindings/dma/nvidia,tegra20-apbdma.yaml [new file with mode: 0644]
Bindings/dma/nvidia,tegra210-adma.yaml
Bindings/dma/qcom,bam-dma.yaml
Bindings/dma/renesas,rz-dmac.yaml
Bindings/example-schema.yaml
Bindings/firmware/google,gs101-acpm-ipc.yaml
Bindings/firmware/intel,stratix10-svc.txt [deleted file]
Bindings/firmware/intel,stratix10-svc.yaml [new file with mode: 0644]
Bindings/firmware/nxp,imx95-scmi.yaml
Bindings/fpga/intel,stratix10-soc-fpga-mgr.yaml [new file with mode: 0644]
Bindings/fpga/intel-stratix10-soc-fpga-mgr.txt [deleted file]
Bindings/gpio/atmel,at91rm9200-gpio.yaml
Bindings/gpio/blaize,blzp1600-gpio.yaml [new file with mode: 0644]
Bindings/gpio/fairchild,74hc595.yaml
Bindings/gpio/gpio-mxs.yaml
Bindings/gpio/gpio-pca95xx.yaml
Bindings/gpio/gpio-vf610.yaml
Bindings/gpio/maxim,max77759-gpio.yaml [new file with mode: 0644]
Bindings/gpio/nvidia,tegra186-gpio.yaml
Bindings/gpio/nxp,pcf8575.yaml
Bindings/gpio/realtek,otto-gpio.yaml
Bindings/gpio/renesas,em-gio.yaml
Bindings/gpio/renesas,rcar-gpio.yaml
Bindings/gpio/sifive,gpio.yaml
Bindings/gpio/spacemit,k1-gpio.yaml [new file with mode: 0644]
Bindings/gpio/toshiba,gpio-visconti.yaml
Bindings/gpio/xlnx,gpio-xilinx.yaml
Bindings/gpu/arm,mali-bifrost.yaml
Bindings/gpu/brcm,bcm-v3d.yaml
Bindings/gpu/img,powervr-rogue.yaml
Bindings/hwinfo/via,vt8500-scc-id.yaml [new file with mode: 0644]
Bindings/hwmon/pmbus/adi,lt3074.yaml [new file with mode: 0644]
Bindings/hwmon/pmbus/mps,mpq8785.yaml [new file with mode: 0644]
Bindings/hwmon/sophgo,sg2042-hwmon-mcu.yaml
Bindings/hwmon/ti,amc6821.yaml
Bindings/hwmon/ti,ina2xx.yaml
Bindings/hwmon/ti,tmp102.yaml
Bindings/i2c/i2c-mt65xx.yaml
Bindings/i2c/i2c-rk3x.yaml
Bindings/i2c/i2c-wmt.txt [deleted file]
Bindings/i2c/nvidia,tegra20-i2c.yaml
Bindings/i2c/realtek,rtl9301-i2c.yaml
Bindings/i2c/renesas,riic.yaml
Bindings/i2c/snps,designware-i2c.yaml
Bindings/i2c/wm,wm8505-i2c.yaml [new file with mode: 0644]
Bindings/i3c/silvaco,i3c-master.yaml
Bindings/iio/adc/adi,ad7380.yaml
Bindings/iio/adc/adi,ad7476.yaml
Bindings/iio/adc/adi,ad7606.yaml
Bindings/iio/adc/amlogic,meson-saradc.yaml
Bindings/iio/adc/mediatek,mt2701-auxadc.yaml
Bindings/iio/adc/microchip,mcp3911.yaml
Bindings/iio/adc/nuvoton,nct7201.yaml [new file with mode: 0644]
Bindings/iio/adc/qcom,spmi-rradc.yaml
Bindings/iio/adc/rohm,bd79104.yaml [new file with mode: 0644]
Bindings/iio/adc/rohm,bd79124.yaml [new file with mode: 0644]
Bindings/iio/adc/st,stm32-adc.yaml
Bindings/iio/chemical/winsen,mhz19b.yaml [new file with mode: 0644]
Bindings/iio/dac/adi,ad3530r.yaml [new file with mode: 0644]
Bindings/iio/dac/adi,ad3552r.yaml
Bindings/iio/dac/adi,ad7293.yaml
Bindings/iio/dac/adi,ltc2664.yaml
Bindings/iio/dac/adi,ltc2672.yaml
Bindings/iio/dac/microchip,mcp4821.yaml
Bindings/iio/dac/rohm,bd79703.yaml
Bindings/iio/filter/adi,admv8818.yaml
Bindings/iio/gyroscope/invensense,mpu3050.yaml
Bindings/iio/imu/adi,adis16550.yaml
Bindings/iio/imu/invensense,icm42600.yaml
Bindings/iio/light/bh1750.yaml
Bindings/iio/pressure/honeywell,hsc030pa.yaml
Bindings/iio/pressure/honeywell,mprls0025pa.yaml
Bindings/input/dlg,da7280.txt [deleted file]
Bindings/input/dlg,da7280.yaml [new file with mode: 0644]
Bindings/input/elan,ekth6915.yaml
Bindings/input/touchscreen/edt-ft5x06.yaml
Bindings/interconnect/qcom,msm8939.yaml
Bindings/interconnect/qcom,msm8953.yaml
Bindings/interconnect/qcom,msm8974.yaml
Bindings/interconnect/qcom,osm-l3.yaml
Bindings/interconnect/qcom,rpm.yaml
Bindings/interconnect/qcom,rpmh.yaml
Bindings/interconnect/qcom,sdx75-rpmh.yaml
Bindings/interrupt-controller/abilis,tb10x-ictl.txt [deleted file]
Bindings/interrupt-controller/abilis,tb10x-ictl.yaml [new file with mode: 0644]
Bindings/interrupt-controller/al,alpine-msix.txt [deleted file]
Bindings/interrupt-controller/al,alpine-msix.yaml [new file with mode: 0644]
Bindings/interrupt-controller/altr,msi-controller.yaml [moved from Bindings/pci/altr,msi-controller.yaml with 94% similarity]
Bindings/interrupt-controller/amazon,al-fic.txt [deleted file]
Bindings/interrupt-controller/amazon,al-fic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/arm,nvic.txt [deleted file]
Bindings/interrupt-controller/arm,nvic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/arm,versatile-fpga-irq.txt [deleted file]
Bindings/interrupt-controller/arm,versatile-fpga-irq.yaml [new file with mode: 0644]
Bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt [deleted file]
Bindings/interrupt-controller/aspeed,ast2400-i2c-ic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/aspeed,ast2500-scu-ic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/aspeed,ast2xxx-scu-ic.txt [deleted file]
Bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt [deleted file]
Bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/brcm,bcm6345-l1-intc.txt [deleted file]
Bindings/interrupt-controller/brcm,bcm6345-l1-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/cdns,xtensa-mx.txt [deleted file]
Bindings/interrupt-controller/cdns,xtensa-pic.txt [deleted file]
Bindings/interrupt-controller/cdns,xtensa-pic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/chrp,open-pic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/cirrus,clps711x-intc.txt [deleted file]
Bindings/interrupt-controller/cirrus,ep7209-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/cnxt,cx92755-ic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/csky,apb-intc.txt [deleted file]
Bindings/interrupt-controller/csky,apb-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/csky,mpintc.txt [deleted file]
Bindings/interrupt-controller/csky,mpintc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/digicolor-ic.txt [deleted file]
Bindings/interrupt-controller/econet,en751221-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/ezchip,nps400-ic.txt [deleted file]
Bindings/interrupt-controller/ezchip,nps400-ic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/faraday,ftintc010.txt [deleted file]
Bindings/interrupt-controller/faraday,ftintc010.yaml [new file with mode: 0644]
Bindings/interrupt-controller/fsl,tzic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/google,goldfish-pic.txt [deleted file]
Bindings/interrupt-controller/google,goldfish-pic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/img,pdc-intc.txt [deleted file]
Bindings/interrupt-controller/img,pdc-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/jcore,aic.txt [deleted file]
Bindings/interrupt-controller/jcore,aic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/lsi,zevio-intc.txt [deleted file]
Bindings/interrupt-controller/lsi,zevio-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/marvell,ap806-gicp.yaml [new file with mode: 0644]
Bindings/interrupt-controller/marvell,ap806-sei.yaml [new file with mode: 0644]
Bindings/interrupt-controller/marvell,armada-8k-pic.txt [deleted file]
Bindings/interrupt-controller/marvell,armada-8k-pic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/marvell,cp110-icu.yaml [new file with mode: 0644]
Bindings/interrupt-controller/marvell,gicp.txt [deleted file]
Bindings/interrupt-controller/marvell,icu.txt [deleted file]
Bindings/interrupt-controller/marvell,odmi-controller.txt [deleted file]
Bindings/interrupt-controller/marvell,odmi-controller.yaml [new file with mode: 0644]
Bindings/interrupt-controller/marvell,orion-bridge-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/marvell,orion-intc.txt [deleted file]
Bindings/interrupt-controller/marvell,sei.txt [deleted file]
Bindings/interrupt-controller/microchip,pic32-evic.txt [deleted file]
Bindings/interrupt-controller/microchip,pic32mzda-evic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/nvidia,tegra20-ictlr.txt [deleted file]
Bindings/interrupt-controller/nvidia,tegra20-ictlr.yaml [new file with mode: 0644]
Bindings/interrupt-controller/open-pic.txt [deleted file]
Bindings/interrupt-controller/opencores,or1k-pic.txt [deleted file]
Bindings/interrupt-controller/opencores,or1k-pic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/openrisc,ompic.txt [deleted file]
Bindings/interrupt-controller/openrisc,ompic.yaml [new file with mode: 0644]
Bindings/interrupt-controller/qca,ar7100-cpu-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/qca,ar7100-misc-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/qca,ath79-cpu-intc.txt [deleted file]
Bindings/interrupt-controller/qca,ath79-misc-intc.txt [deleted file]
Bindings/interrupt-controller/sifive,plic-1.0.0.yaml
Bindings/interrupt-controller/snps,arc700-intc.txt [deleted file]
Bindings/interrupt-controller/snps,arc700-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/snps,archs-idu-intc.txt [deleted file]
Bindings/interrupt-controller/snps,archs-idu-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/snps,archs-intc.txt [deleted file]
Bindings/interrupt-controller/snps,archs-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/snps,dw-apb-ictl.txt [deleted file]
Bindings/interrupt-controller/snps,dw-apb-ictl.yaml [new file with mode: 0644]
Bindings/interrupt-controller/sophgo,sg2042-msi.yaml
Bindings/interrupt-controller/st,spear300-shirq.yaml [new file with mode: 0644]
Bindings/interrupt-controller/st,spear3xx-shirq.txt [deleted file]
Bindings/interrupt-controller/technologic,ts4800-irqc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/technologic,ts4800.txt [deleted file]
Bindings/interrupt-controller/thead,c900-aclint-mswi.yaml
Bindings/interrupt-controller/ti,cp-intc.txt [deleted file]
Bindings/interrupt-controller/ti,cp-intc.yaml [new file with mode: 0644]
Bindings/interrupt-controller/ti,keystone-irq.txt [deleted file]
Bindings/interrupt-controller/ti,keystone-irq.yaml [new file with mode: 0644]
Bindings/interrupt-controller/ti,omap-intc-irq.txt [deleted file]
Bindings/interrupt-controller/ti,omap-intc-irq.yaml [new file with mode: 0644]
Bindings/interrupt-controller/ti,omap2-intc.txt [deleted file]
Bindings/interrupt-controller/ti,omap4-wugen-mpu.txt [deleted file]
Bindings/interrupt-controller/ti,omap4-wugen-mpu.yaml [new file with mode: 0644]
Bindings/interrupt-controller/via,vt8500-intc.txt [deleted file]
Bindings/interrupt-controller/via,vt8500-intc.yaml [new file with mode: 0644]
Bindings/iommu/mediatek,iommu.yaml
Bindings/leds/backlight/ti,lp8864.yaml [new file with mode: 0644]
Bindings/leds/ti,tps61310.yaml [new file with mode: 0644]
Bindings/mailbox/qcom,apcs-kpss-global.yaml
Bindings/mailbox/sophgo,cv1800b-mailbox.yaml [new file with mode: 0644]
Bindings/media/allwinner,sun6i-a31-csi.yaml
Bindings/media/allwinner,sun6i-a31-isp.yaml
Bindings/media/allwinner,sun6i-a31-mipi-csi2.yaml
Bindings/media/amlogic,c3-isp.yaml [new file with mode: 0644]
Bindings/media/amlogic,c3-mipi-adapter.yaml [new file with mode: 0644]
Bindings/media/amlogic,c3-mipi-csi2.yaml [new file with mode: 0644]
Bindings/media/cec/nvidia,tegra114-cec.yaml
Bindings/media/fsl,imx-capture-subsystem.yaml [new file with mode: 0644]
Bindings/media/fsl,imx6-mipi-csi2.yaml [new file with mode: 0644]
Bindings/media/i2c/ad5820.txt [deleted file]
Bindings/media/i2c/adi,ad5820.yaml [new file with mode: 0644]
Bindings/media/i2c/adi,adp1653.txt [moved from Bindings/media/i2c/adp1653.txt with 100% similarity]
Bindings/media/i2c/adi,adv7180.yaml [moved from Bindings/media/i2c/adv7180.yaml with 98% similarity]
Bindings/media/i2c/adi,adv7343.txt [moved from Bindings/media/i2c/adv7343.txt with 100% similarity]
Bindings/media/i2c/adi,adv748x.yaml [moved from Bindings/media/i2c/adv748x.yaml with 98% similarity]
Bindings/media/i2c/adi,adv7604.yaml [moved from Bindings/media/i2c/adv7604.yaml with 98% similarity]
Bindings/media/i2c/aptina,mt9v032.txt [moved from Bindings/media/i2c/mt9v032.txt with 100% similarity]
Bindings/media/i2c/maxim,max2175.txt [moved from Bindings/media/i2c/max2175.txt with 100% similarity]
Bindings/media/i2c/micron,mt9m111.txt [moved from Bindings/media/i2c/mt9m111.txt with 100% similarity]
Bindings/media/i2c/nxp,tda1997x.txt [moved from Bindings/media/i2c/tda1997x.txt with 100% similarity]
Bindings/media/i2c/onnn,mt9m001.txt [moved from Bindings/media/i2c/mt9m001.txt with 100% similarity]
Bindings/media/i2c/ovti,ov02e10.yaml [new file with mode: 0644]
Bindings/media/i2c/ovti,ov2640.txt [moved from Bindings/media/i2c/ov2640.txt with 100% similarity]
Bindings/media/i2c/ovti,ov2659.txt [moved from Bindings/media/i2c/ov2659.txt with 100% similarity]
Bindings/media/i2c/ovti,ov7670.txt [moved from Bindings/media/i2c/ov7670.txt with 100% similarity]
Bindings/media/i2c/ovti,ov7740.txt [moved from Bindings/media/i2c/ov7740.txt with 100% similarity]
Bindings/media/i2c/ovti,ov9650.txt [moved from Bindings/media/i2c/ov9650.txt with 100% similarity]
Bindings/media/i2c/sony,imx219.yaml [moved from Bindings/media/i2c/imx219.yaml with 94% similarity]
Bindings/media/i2c/sony,imx290.yaml
Bindings/media/i2c/sony,imx415.yaml
Bindings/media/i2c/st,vd55g1.yaml [new file with mode: 0644]
Bindings/media/i2c/st,vd56g3.yaml [new file with mode: 0644]
Bindings/media/i2c/ti,ds90ub953.yaml
Bindings/media/i2c/ti,ds90ub960.yaml
Bindings/media/i2c/ti,ths8200.txt [moved from Bindings/media/i2c/ths8200.txt with 100% similarity]
Bindings/media/i2c/ti,tvp514x.txt [moved from Bindings/media/i2c/tvp514x.txt with 100% similarity]
Bindings/media/i2c/ti,tvp5150.txt [moved from Bindings/media/i2c/tvp5150.txt with 100% similarity]
Bindings/media/i2c/ti,tvp7002.txt [moved from Bindings/media/i2c/tvp7002.txt with 100% similarity]
Bindings/media/i2c/toshiba,tc358743.txt [moved from Bindings/media/i2c/tc358743.txt with 100% similarity]
Bindings/media/imx.txt [deleted file]
Bindings/media/mediatek,mdp3-fg.yaml
Bindings/media/mediatek,mdp3-hdr.yaml
Bindings/media/mediatek,mdp3-rsz.yaml
Bindings/media/mediatek,mdp3-stitch.yaml
Bindings/media/mediatek,mdp3-tcc.yaml
Bindings/media/mediatek,mdp3-tdshp.yaml
Bindings/media/mediatek,mdp3-wrot.yaml
Bindings/media/qcom,msm8916-camss.yaml
Bindings/media/qcom,msm8953-camss.yaml
Bindings/media/qcom,msm8996-camss.yaml
Bindings/media/qcom,sc7180-venus.yaml
Bindings/media/qcom,sc8280xp-camss.yaml
Bindings/media/qcom,sdm660-camss.yaml
Bindings/media/qcom,sdm845-camss.yaml
Bindings/media/qcom,sm8250-camss.yaml
Bindings/media/qcom,sm8550-iris.yaml
Bindings/media/qcom,x1e80100-camss.yaml [new file with mode: 0644]
Bindings/media/renesas,fcp.yaml
Bindings/media/renesas,isp.yaml
Bindings/media/renesas,rzg2l-cru.yaml
Bindings/media/renesas,rzg2l-csi2.yaml
Bindings/media/renesas,vsp1.yaml
Bindings/memory-controllers/mediatek,smi-common.yaml
Bindings/memory-controllers/mediatek,smi-larb.yaml
Bindings/memory-controllers/renesas,rzg3e-xspi.yaml [new file with mode: 0644]
Bindings/memory-controllers/st,stm32mp25-omm.yaml [new file with mode: 0644]
Bindings/mfd/aspeed,ast2x00-scu.yaml
Bindings/mfd/atmel,at91sam9260-gpbr.yaml
Bindings/mfd/brcm,bcm59056.txt [deleted file]
Bindings/mfd/brcm,bcm59056.yaml [new file with mode: 0644]
Bindings/mfd/iqs62x.yaml
Bindings/mfd/maxim,max77759.yaml [new file with mode: 0644]
Bindings/mfd/mediatek,mt8195-scpsys.yaml
Bindings/mfd/mscc,ocelot.yaml
Bindings/mfd/netronix,ntxec.yaml
Bindings/mfd/qcom,tcsr.yaml
Bindings/mfd/rohm,bd9571mwv.yaml
Bindings/mfd/rohm,bd96801-pmic.yaml
Bindings/mfd/rohm,bd96802-pmic.yaml [new file with mode: 0644]
Bindings/mfd/samsung,s2mps11.yaml
Bindings/mfd/st,stm32-lptimer.yaml
Bindings/mfd/syscon.yaml
Bindings/mfd/x-powers,axp152.yaml
Bindings/mips/cpus.yaml
Bindings/mips/econet.yaml [new file with mode: 0644]
Bindings/misc/ti,fpc202.yaml [new file with mode: 0644]
Bindings/mmc/arasan,sdhci.yaml
Bindings/mmc/fsl,esdhc.yaml
Bindings/mmc/marvell,xenon-sdhci.yaml
Bindings/mmc/microchip,sdhci-pic32.txt [deleted file]
Bindings/mmc/microchip,sdhci-pic32.yaml [new file with mode: 0644]
Bindings/mmc/mtk-sd.yaml
Bindings/mmc/renesas,sdhi.yaml
Bindings/mmc/sdhci-msm.yaml
Bindings/mmc/sdhci.txt [deleted file]
Bindings/mmc/snps,dwcmshc-sdhci.yaml
Bindings/mmc/spacemit,sdhci.yaml [new file with mode: 0644]
Bindings/mmc/vt8500-sdmmc.txt [deleted file]
Bindings/mmc/wm,wm8505-sdhc.yaml [new file with mode: 0644]
Bindings/mtd/fsl,vf610-nfc.yaml [new file with mode: 0644]
Bindings/mtd/loongson,ls1b-nand-controller.yaml [new file with mode: 0644]
Bindings/mtd/qcom,nandc.yaml
Bindings/mtd/vf610-nfc.txt [deleted file]
Bindings/mux/gpio-mux.yaml
Bindings/net/aeonsemi,as21xxx.yaml [new file with mode: 0644]
Bindings/net/airoha,en7581-eth.yaml
Bindings/net/allwinner,sun8i-a83t-emac.yaml
Bindings/net/bluetooth/nxp,88w8987-bt.yaml
Bindings/net/brcm,asp-v2.0.yaml
Bindings/net/brcm,unimac-mdio.yaml
Bindings/net/can/nxp,sja1000.yaml
Bindings/net/can/renesas,rcar-canfd.yaml
Bindings/net/dsa/mediatek,mt7530.yaml
Bindings/net/ethernet-controller.yaml
Bindings/net/ethernet-phy.yaml
Bindings/net/network-class.yaml [new file with mode: 0644]
Bindings/net/renesas,r9a09g057-gbeth.yaml [new file with mode: 0644]
Bindings/net/snps,dwmac.yaml
Bindings/net/sophgo,sg2044-dwmac.yaml
Bindings/net/ti,dp83822.yaml
Bindings/net/ti,k3-am654-cpsw-nuss.yaml
Bindings/net/vertexcom-mse102x.yaml
Bindings/net/via,vt8500-rhine.yaml [new file with mode: 0644]
Bindings/net/via-rhine.txt [deleted file]
Bindings/net/wireless/brcm,bcm4329-fmac.yaml
Bindings/net/wireless/qcom,ath12k.yaml
Bindings/net/wireless/qcom,ipq5332-wifi.yaml [new file with mode: 0644]
Bindings/net/wireless/realtek,rtl8188e.yaml [new file with mode: 0644]
Bindings/net/wireless/silabs,wfx.yaml
Bindings/net/wireless/wireless-controller.yaml [new file with mode: 0644]
Bindings/numa.txt [deleted file]
Bindings/nvmem/apple,spmi-nvmem.yaml [new file with mode: 0644]
Bindings/nvmem/maxim,max77759-nvmem.yaml [new file with mode: 0644]
Bindings/opp/opp-v1.yaml
Bindings/opp/opp-v2-qcom-adreno.yaml [new file with mode: 0644]
Bindings/pci/apple,pcie.yaml
Bindings/pci/brcm,stb-pcie.yaml
Bindings/pci/cdns,cdns-pcie-ep.yaml
Bindings/pci/intel,keembay-pcie-ep.yaml
Bindings/pci/intel,keembay-pcie.yaml
Bindings/pci/marvell,armada8k-pcie.yaml [new file with mode: 0644]
Bindings/pci/marvell,kirkwood-pcie.yaml [new file with mode: 0644]
Bindings/pci/microchip,pcie-host.yaml
Bindings/pci/mvebu-pci.txt [deleted file]
Bindings/pci/nvidia,tegra194-pcie-ep.yaml
Bindings/pci/pci-armada8k.txt [deleted file]
Bindings/pci/pci-ep.yaml
Bindings/pci/pci-iommu.txt [deleted file]
Bindings/pci/pci-msi.txt [deleted file]
Bindings/pci/pci.txt [deleted file]
Bindings/pci/qcom,pcie-sa8775p.yaml
Bindings/pci/qcom,pcie-sc7280.yaml
Bindings/pci/qcom,pcie-sc8180x.yaml
Bindings/pci/qcom,pcie-sm8150.yaml
Bindings/pci/qcom,pcie-sm8250.yaml
Bindings/pci/qcom,pcie-sm8350.yaml
Bindings/pci/qcom,pcie.yaml
Bindings/pci/rcar-pci-ep.yaml
Bindings/pci/rcar-pci-host.yaml
Bindings/pci/rockchip-dw-pcie-common.yaml
Bindings/pci/rockchip-dw-pcie.yaml
Bindings/pci/sifive,fu740-pcie.yaml
Bindings/pci/snps,dw-pcie-common.yaml
Bindings/pci/snps,dw-pcie.yaml
Bindings/pci/v3,v360epc-pci.yaml [new file with mode: 0644]
Bindings/pci/v3-v360epc-pci.txt [deleted file]
Bindings/pci/xilinx-versal-cpm.yaml
Bindings/phy/brcm,brcmstb-usb-phy.yaml
Bindings/phy/fsl,imx8mq-usb-phy.yaml
Bindings/phy/mediatek,dsi-phy.yaml
Bindings/phy/mediatek,tphy.yaml
Bindings/phy/mediatek,xsphy.yaml
Bindings/phy/phy-cadence-torrent.yaml
Bindings/phy/phy-rockchip-naneng-combphy.yaml
Bindings/phy/phy-rockchip-typec.txt [deleted file]
Bindings/phy/phy-rockchip-usbdp.yaml
Bindings/phy/qcom,ipq5332-uniphy-pcie-phy.yaml
Bindings/phy/renesas,usb2-phy.yaml
Bindings/phy/rockchip,inno-usb2phy.yaml
Bindings/phy/rockchip,pcie3-phy.yaml
Bindings/phy/rockchip,rk3399-pcie-phy.yaml [new file with mode: 0644]
Bindings/phy/rockchip,rk3399-typec-phy.yaml [new file with mode: 0644]
Bindings/phy/rockchip-pcie-phy.txt [deleted file]
Bindings/phy/samsung,exynos2200-eusb2-phy.yaml [new file with mode: 0644]
Bindings/phy/samsung,usb3-drd-phy.yaml
Bindings/pinctrl/amlogic,pinctrl-a4.yaml
Bindings/pinctrl/fsl,imx7ulp-iomuxc1.yaml [new file with mode: 0644]
Bindings/pinctrl/fsl,imx7ulp-pinctrl.txt [deleted file]
Bindings/pinctrl/fsl,vf610-iomuxc.yaml [new file with mode: 0644]
Bindings/pinctrl/fsl,vf610-pinctrl.txt [deleted file]
Bindings/pinctrl/mediatek,mt65xx-pinctrl.yaml
Bindings/pinctrl/mediatek,mt6779-pinctrl.yaml
Bindings/pinctrl/mediatek,mt6893-pinctrl.yaml [new file with mode: 0644]
Bindings/pinctrl/mediatek,mt7622-pinctrl.yaml
Bindings/pinctrl/mediatek,mt8183-pinctrl.yaml
Bindings/pinctrl/mediatek,mt8192-pinctrl.yaml
Bindings/pinctrl/mediatek,mt8196-pinctrl.yaml [new file with mode: 0644]
Bindings/pinctrl/qcom,qcs615-tlmm.yaml
Bindings/pinctrl/qcom,qcs8300-tlmm.yaml
Bindings/pinctrl/renesas,rzg2l-pinctrl.yaml
Bindings/pinctrl/renesas,rzn1-pinctrl.yaml
Bindings/pinctrl/spacemit,k1-pinctrl.yaml
Bindings/pinctrl/starfive,jh7110-aon-pinctrl.yaml
Bindings/pinctrl/starfive,jh7110-sys-pinctrl.yaml
Bindings/pmem/pmem-region.txt [deleted file]
Bindings/pmem/pmem-region.yaml [new file with mode: 0644]
Bindings/power/allwinner,sun50i-h6-prcm-ppu.yaml [new file with mode: 0644]
Bindings/power/mediatek,power-controller.yaml
Bindings/power/qcom,rpmpd.yaml
Bindings/power/reset/syscon-reboot.yaml
Bindings/power/reset/toradex,smarc-ec.yaml [new file with mode: 0644]
Bindings/power/rockchip,power-controller.yaml
Bindings/power/supply/bq24190.yaml
Bindings/power/supply/bq25980.yaml
Bindings/power/supply/ingenic,battery.yaml
Bindings/power/supply/ltc4162-l.yaml
Bindings/power/supply/maxim,max77705.yaml
Bindings/power/supply/maxim,max8971.yaml [new file with mode: 0644]
Bindings/power/supply/pegatron,chagall-ec.yaml [new file with mode: 0644]
Bindings/power/supply/qcom,pmi8998-charger.yaml
Bindings/powerpc/fsl/pmc.txt [deleted file]
Bindings/powerpc/fsl/pmc.yaml [new file with mode: 0644]
Bindings/pwm/adi,axi-pwmgen.yaml
Bindings/pwm/loongson,ls7a-pwm.yaml [new file with mode: 0644]
Bindings/pwm/mediatek,pwm-disp.yaml
Bindings/pwm/nxp,mc33xs2410.yaml [new file with mode: 0644]
Bindings/pwm/renesas,rzg2l-gpt.yaml [new file with mode: 0644]
Bindings/pwm/via,vt8500-pwm.yaml [new file with mode: 0644]
Bindings/pwm/vt8500-pwm.txt [deleted file]
Bindings/regulator/adi,adp5055-regulator.yaml [new file with mode: 0644]
Bindings/regulator/brcm,bcm59054.yaml [new file with mode: 0644]
Bindings/regulator/brcm,bcm59056.yaml [new file with mode: 0644]
Bindings/regulator/mediatek,mt6357-regulator.yaml
Bindings/regulator/rohm,bd96802-regulator.yaml [new file with mode: 0644]
Bindings/remoteproc/qcom,sm8150-pas.yaml
Bindings/remoteproc/qcom,sm8350-pas.yaml
Bindings/remoteproc/st,stm32-rproc.yaml
Bindings/reset/amlogic,meson-reset.yaml
Bindings/reset/atmel,at91sam9260-reset.yaml
Bindings/reset/renesas,rzv2h-usb2phy-reset.yaml [new file with mode: 0644]
Bindings/reset/sophgo,sg2042-reset.yaml
Bindings/reset/thead,th1520-reset.yaml [new file with mode: 0644]
Bindings/riscv/extensions.yaml
Bindings/riscv/sophgo.yaml
Bindings/rng/rockchip,rk3588-rng.yaml
Bindings/rtc/atmel,at91rm9200-rtc.yaml
Bindings/rtc/atmel,at91sam9260-rtt.yaml
Bindings/rtc/nxp,s32g-rtc.yaml [new file with mode: 0644]
Bindings/rtc/qcom-pm8xxx-rtc.yaml
Bindings/rtc/renesas,rzn1-rtc.yaml
Bindings/serial/8250.yaml
Bindings/serial/8250_omap.yaml
Bindings/serial/altera_jtaguart.txt [deleted file]
Bindings/serial/altera_uart.txt [deleted file]
Bindings/serial/altr,juart-1.0.yaml [new file with mode: 0644]
Bindings/serial/altr,uart-1.0.yaml [new file with mode: 0644]
Bindings/serial/amlogic,meson-uart.yaml
Bindings/serial/arc-uart.txt [deleted file]
Bindings/serial/arm,mps2-uart.txt [deleted file]
Bindings/serial/arm,mps2-uart.yaml [new file with mode: 0644]
Bindings/serial/arm,sbsa-uart.yaml [new file with mode: 0644]
Bindings/serial/arm_sbsa_uart.txt [deleted file]
Bindings/serial/atmel,at91-usart.yaml
Bindings/serial/cirrus,clps711x-uart.txt [deleted file]
Bindings/serial/cirrus,ep7209-uart.yaml [new file with mode: 0644]
Bindings/serial/cnxt,cx92755-usart.yaml [new file with mode: 0644]
Bindings/serial/digicolor-usart.txt [deleted file]
Bindings/serial/lantiq,asc.yaml [new file with mode: 0644]
Bindings/serial/lantiq_asc.txt [deleted file]
Bindings/serial/marvell,armada-3700-uart.yaml [new file with mode: 0644]
Bindings/serial/mediatek,uart.yaml
Bindings/serial/microchip,pic32-uart.txt [deleted file]
Bindings/serial/microchip,pic32mzda-uart.yaml [new file with mode: 0644]
Bindings/serial/milbeaut-uart.txt [deleted file]
Bindings/serial/mvebu-uart.txt [deleted file]
Bindings/serial/nxp,lpc3220-hsuart.yaml [new file with mode: 0644]
Bindings/serial/nxp-lpc32xx-hsuart.txt [deleted file]
Bindings/serial/renesas,rsci.yaml [new file with mode: 0644]
Bindings/serial/snps,arc-uart.yaml [new file with mode: 0644]
Bindings/serial/snps-dw-apb-uart.yaml
Bindings/serial/socionext,milbeaut-usio-uart.yaml [new file with mode: 0644]
Bindings/soc/amlogic/amlogic,meson-gx-clk-measure.yaml
Bindings/soc/fsl/fsl,ls1028a-reset.yaml
Bindings/soc/fsl/fsl,qman-fqd.yaml
Bindings/soc/google/google,gs101-pmu-intr-gen.yaml [new file with mode: 0644]
Bindings/soc/mediatek/mediatek,mt8183-dvfsrc.yaml
Bindings/soc/qcom/qcom,rpm.yaml
Bindings/soc/qcom/qcom,rpmh-rsc.yaml
Bindings/soc/qcom/qcom,saw2.yaml
Bindings/soc/qcom/qcom,wcnss.yaml
Bindings/soc/renesas/renesas,r9a09g057-sys.yaml
Bindings/soc/renesas/renesas.yaml
Bindings/soc/rockchip/grf.yaml
Bindings/soc/samsung/exynos-pmu.yaml
Bindings/soc/sophgo/sophgo,cv1800b-rtc.yaml [new file with mode: 0644]
Bindings/soc/sophgo/sophgo,sg2044-top-syscon.yaml [new file with mode: 0644]
Bindings/soc/spacemit/spacemit,k1-syscon.yaml [new file with mode: 0644]
Bindings/soc/ti/ti,j721e-system-controller.yaml
Bindings/sound/audio-graph-card2.yaml
Bindings/sound/cirrus,cs48l32.yaml [new file with mode: 0644]
Bindings/sound/everest,es8375.yaml [new file with mode: 0644]
Bindings/sound/everest,es8389.yaml [new file with mode: 0644]
Bindings/sound/fsl,mqs.yaml
Bindings/sound/loongson,ls1b-ac97.yaml [new file with mode: 0644]
Bindings/sound/maxim,max98925.yaml
Bindings/sound/mediatek,mt8188-mt6359.yaml
Bindings/sound/mt8186-mt6366-da7219-max98357.yaml
Bindings/sound/mt8195-mt6359.yaml
Bindings/sound/nvidia,tegra-audio-graph-card.yaml
Bindings/sound/nvidia,tegra186-asrc.yaml
Bindings/sound/nvidia,tegra186-dspk.yaml
Bindings/sound/nvidia,tegra210-admaif.yaml
Bindings/sound/nvidia,tegra210-adx.yaml
Bindings/sound/nvidia,tegra210-ahub.yaml
Bindings/sound/nvidia,tegra210-amx.yaml
Bindings/sound/nvidia,tegra210-dmic.yaml
Bindings/sound/nvidia,tegra210-i2s.yaml
Bindings/sound/nvidia,tegra210-mbdrc.yaml
Bindings/sound/nvidia,tegra210-mixer.yaml
Bindings/sound/nvidia,tegra210-mvc.yaml
Bindings/sound/nvidia,tegra210-ope.yaml
Bindings/sound/nvidia,tegra210-peq.yaml
Bindings/sound/nvidia,tegra210-sfc.yaml
Bindings/sound/nvidia,tegra30-hda.yaml
Bindings/sound/qcom,sm8250.yaml
Bindings/sound/qcom,wcd938x.yaml
Bindings/sound/realtek,alc203.yaml [new file with mode: 0644]
Bindings/sound/richtek,rt9123.yaml [new file with mode: 0644]
Bindings/sound/richtek,rt9123p.yaml [new file with mode: 0644]
Bindings/sound/rockchip,rk3576-sai.yaml [new file with mode: 0644]
Bindings/soundwire/qcom,soundwire.yaml
Bindings/spi/fsl,dspi.yaml
Bindings/spi/nuvoton,wpcm450-fiu.yaml
Bindings/spi/nvidia,tegra210-quad.yaml
Bindings/spi/qcom,spi-qpic-snand.yaml
Bindings/spi/renesas,sh-msiof.yaml
Bindings/spi/samsung,spi.yaml
Bindings/spi/snps,dw-apb-ssi.yaml
Bindings/spi/spi-peripheral-props.yaml
Bindings/spi/spi-rockchip.yaml
Bindings/spi/spi-sg2044-nor.yaml
Bindings/spi/st,stm32mp25-ospi.yaml
Bindings/spmi/apple,spmi.yaml [new file with mode: 0644]
Bindings/sram/allwinner,sun4i-a10-system-control.yaml
Bindings/thermal/airoha,en7581-thermal.yaml [new file with mode: 0644]
Bindings/thermal/qcom-tsens.yaml
Bindings/timer/altr,timer-1.0.txt [deleted file]
Bindings/timer/altr,timer-1.0.yaml [new file with mode: 0644]
Bindings/timer/arm,mps2-timer.txt [deleted file]
Bindings/timer/arm,mps2-timer.yaml [new file with mode: 0644]
Bindings/timer/cirrus,clps711x-timer.txt [deleted file]
Bindings/timer/cirrus,clps711x-timer.yaml [new file with mode: 0644]
Bindings/timer/cnxt,cx92755-timer.yaml [new file with mode: 0644]
Bindings/timer/csky,gx6605s-timer.txt [deleted file]
Bindings/timer/csky,gx6605s-timer.yaml [new file with mode: 0644]
Bindings/timer/csky,mptimer.txt [deleted file]
Bindings/timer/csky,mptimer.yaml [new file with mode: 0644]
Bindings/timer/digicolor-timer.txt [deleted file]
Bindings/timer/econet,en751221-timer.yaml [new file with mode: 0644]
Bindings/timer/ezchip,nps400-timer.yaml [new file with mode: 0644]
Bindings/timer/ezchip,nps400-timer0.txt [deleted file]
Bindings/timer/ezchip,nps400-timer1.txt [deleted file]
Bindings/timer/fsl,gtm.txt [deleted file]
Bindings/timer/fsl,gtm.yaml [new file with mode: 0644]
Bindings/timer/fsl,vf610-pit.yaml [new file with mode: 0644]
Bindings/timer/img,pistachio-gptimer.txt [deleted file]
Bindings/timer/img,pistachio-gptimer.yaml [new file with mode: 0644]
Bindings/timer/jcore,pit.txt [deleted file]
Bindings/timer/jcore,pit.yaml [new file with mode: 0644]
Bindings/timer/lsi,zevio-timer.txt [deleted file]
Bindings/timer/lsi,zevio-timer.yaml [new file with mode: 0644]
Bindings/timer/marvell,armada-370-timer.yaml [new file with mode: 0644]
Bindings/timer/marvell,armada-370-xp-timer.txt [deleted file]
Bindings/timer/marvell,orion-timer.txt [deleted file]
Bindings/timer/marvell,orion-timer.yaml [new file with mode: 0644]
Bindings/timer/nxp,s32g2-stm.yaml [new file with mode: 0644]
Bindings/timer/renesas,ostm.yaml
Bindings/timer/sifive,clint.yaml
Bindings/timer/snps,arc-timer.txt [deleted file]
Bindings/timer/snps,arc-timer.yaml [new file with mode: 0644]
Bindings/timer/snps,archs-gfrc.txt [deleted file]
Bindings/timer/snps,archs-gfrc.yaml [new file with mode: 0644]
Bindings/timer/snps,archs-rtc.txt [deleted file]
Bindings/timer/snps,archs-rtc.yaml [new file with mode: 0644]
Bindings/timer/socionext,milbeaut-timer.txt [deleted file]
Bindings/timer/socionext,milbeaut-timer.yaml [new file with mode: 0644]
Bindings/timer/st,spear-timer.txt [deleted file]
Bindings/timer/st,spear-timer.yaml [new file with mode: 0644]
Bindings/timer/thead,c900-aclint-mtimer.yaml
Bindings/timer/ti,keystone-timer.txt [deleted file]
Bindings/timer/ti,keystone-timer.yaml [new file with mode: 0644]
Bindings/trivial-devices.yaml
Bindings/ufs/qcom,ufs.yaml
Bindings/usb/chipidea,usb2-common.yaml
Bindings/usb/chipidea,usb2-imx.yaml
Bindings/usb/cypress,hx3.yaml
Bindings/usb/dwc3-xilinx.yaml
Bindings/usb/fsl,usbmisc.yaml
Bindings/usb/generic-ehci.yaml
Bindings/usb/parade,ps5511.yaml [new file with mode: 0644]
Bindings/usb/parade,ps8830.yaml
Bindings/usb/qcom,dwc3.yaml
Bindings/usb/qcom,snps-dwc3.yaml [new file with mode: 0644]
Bindings/usb/realtek,rts5411.yaml
Bindings/usb/renesas,usbhs.yaml
Bindings/usb/rockchip,dwc3.yaml
Bindings/usb/samsung,exynos-dwc3.yaml
Bindings/usb/smsc,usb3503.yaml
Bindings/usb/snps,dwc3-common.yaml
Bindings/usb/ti,usb8041.yaml
Bindings/usb/usb-device.yaml
Bindings/usb/usb-hub.yaml [new file with mode: 0644]
Bindings/usb/usb-switch.yaml
Bindings/vendor-prefixes.yaml
Bindings/virtio/pci-iommu.yaml
Bindings/watchdog/fsl,scu-wdt.yaml
Bindings/watchdog/fsl-imx-wdt.yaml
Bindings/watchdog/nxp,s32g2-swt.yaml [new file with mode: 0644]
Bindings/watchdog/renesas,wdt.yaml
Bindings/watchdog/samsung-wdt.yaml
Bindings/watchdog/snps,dw-wdt.yaml
Bindings/writing-schema.rst
include/dt-bindings/arm/qcom,ids.h
include/dt-bindings/clock/qcom,sm6350-videocc.h [new file with mode: 0644]
include/dt-bindings/clock/renesas,r9a09g047-cpg.h
include/dt-bindings/clock/renesas,r9a09g056-cpg.h [new file with mode: 0644]
include/dt-bindings/clock/renesas,r9a09g057-cpg.h
include/dt-bindings/clock/rk3036-cru.h
include/dt-bindings/clock/rockchip,rk3528-cru.h
include/dt-bindings/clock/rockchip,rk3576-cru.h
include/dt-bindings/clock/samsung,exynosautov920.h
include/dt-bindings/clock/sophgo,sg2044-clk.h [new file with mode: 0644]
include/dt-bindings/clock/sophgo,sg2044-pll.h [new file with mode: 0644]
include/dt-bindings/clock/spacemit,k1-syscon.h [new file with mode: 0644]
include/dt-bindings/clock/stm32h7-clks.h
include/dt-bindings/clock/sun8i-v3s-ccu.h
include/dt-bindings/clock/thead,th1520-clk-ap.h
include/dt-bindings/iio/adc/adi,ad7606.h [new file with mode: 0644]
include/dt-bindings/input/linux-event-codes.h
include/dt-bindings/interconnect/qcom,sm8650-rpmh.h
include/dt-bindings/memory/mediatek,mt6893-memory-port.h [new file with mode: 0644]
include/dt-bindings/power/mediatek,mt6893-power.h [new file with mode: 0644]
include/dt-bindings/power/rockchip,rk3562-power.h [new file with mode: 0644]
include/dt-bindings/reset/sun50i-h616-ccu.h
include/dt-bindings/reset/thead,th1520-reset.h [new file with mode: 0644]
include/dt-bindings/sound/cs48l32.h [new file with mode: 0644]
include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h
src/arm/allwinner/sun7i-a20-bananapi.dts
src/arm/allwinner/sun8i-a83t.dtsi
src/arm/allwinner/sun8i-h3-nanopi-neo-air.dts
src/arm/allwinner/sun8i-h3.dtsi
src/arm/allwinner/sun8i-r40.dtsi
src/arm/allwinner/sun8i-v3s.dtsi
src/arm/amlogic/meson8-fernsehfee3.dts [new file with mode: 0644]
src/arm/amlogic/meson8.dtsi
src/arm/amlogic/meson8b.dtsi
src/arm/broadcom/bcm2166x-common.dtsi
src/arm/broadcom/bcm2166x-pinctrl.dtsi [new file with mode: 0644]
src/arm/broadcom/bcm28155-ap.dts
src/arm/broadcom/bcm2837-rpi-2-b.dts [new file with mode: 0644]
src/arm/broadcom/bcm59056.dtsi [deleted file]
src/arm/intel/socfpga/socfpga_cyclone5_de10nano.dts [new file with mode: 0644]
src/arm/marvell/kirkwood-db.dtsi
src/arm/marvell/kirkwood-dir665.dts
src/arm/marvell/kirkwood-mv88f6281gtw-ge.dts
src/arm/marvell/kirkwood.dtsi
src/arm/marvell/orion5x.dtsi
src/arm/mediatek/mt2701-evb.dts
src/arm/microchip/at91-sama7d65_curiosity.dts
src/arm/microchip/at91-sama7g54_curiosity.dts
src/arm/microchip/at91sam9263ek.dts
src/arm/microchip/sama7d65.dtsi
src/arm/microchip/tny_a9263.dts
src/arm/microchip/usb_a9260.dts
src/arm/microchip/usb_a9260_common.dtsi
src/arm/microchip/usb_a9263.dts
src/arm/microchip/usb_a9g20.dts
src/arm/microchip/usb_a9g20_common.dtsi [deleted file]
src/arm/microchip/usb_a9g20_lpw.dts
src/arm/nuvoton/nuvoton-common-npcm7xx.dtsi
src/arm/nuvoton/nuvoton-npcm730-gbs.dts
src/arm/nuvoton/nuvoton-npcm750-runbmc-olympus.dts
src/arm/nuvoton/nuvoton-npcm750.dtsi
src/arm/nvidia/tegra124-apalis-eval.dts
src/arm/nvidia/tegra124-apalis-v1.2-eval.dts
src/arm/nvidia/tegra20.dtsi
src/arm/nvidia/tegra30-apalis-eval.dts
src/arm/nvidia/tegra30-apalis-v1.1-eval.dts
src/arm/nvidia/tegra30-asus-tf300tl.dts [new file with mode: 0644]
src/arm/nvidia/tegra30.dtsi
src/arm/nxp/imx/imx25.dtsi
src/arm/nxp/imx/imx31-lite.dts
src/arm/nxp/imx/imx31.dtsi
src/arm/nxp/imx/imx35.dtsi
src/arm/nxp/imx/imx51-digi-connectcore-som.dtsi
src/arm/nxp/imx/imx51.dtsi
src/arm/nxp/imx/imx53.dtsi
src/arm/nxp/imx/imx6q-apalis-eval.dts
src/arm/nxp/imx/imx6q-mccmon6.dts
src/arm/nxp/imx/imx6qdl-sabreauto.dtsi
src/arm/nxp/imx/imx6qp-prtwd3.dts
src/arm/nxp/imx/imx7d-remarkable2.dts
src/arm/nxp/imx/imx7d.dtsi
src/arm/nxp/imx/imx7s.dtsi
src/arm/nxp/lpc/lpc32xx.dtsi
src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-hdmi.dtso [new file with mode: 0644]
src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-lvds-tm070jvhg33.dtso [new file with mode: 0644]
src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-rgb-cdtech-dc44.dtso [new file with mode: 0644]
src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-rgb-cdtech-fc21.dtso [new file with mode: 0644]
src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a.dts
src/arm/nxp/ls/ls1021a-tqmls1021a.dtsi
src/arm/nxp/mxs/imx23-sansa.dts
src/arm/nxp/mxs/imx23-xfi3.dts
src/arm/nxp/mxs/imx28-btt3.dtsi
src/arm/nxp/mxs/imx28-cfa10036.dts
src/arm/qcom/msm8226-motorola-falcon.dts
src/arm/qcom/msm8926.dtsi [new file with mode: 0644]
src/arm/qcom/qcom-apq8026-samsung-matisse-wifi.dts
src/arm/qcom/qcom-apq8026-samsung-milletwifi.dts
src/arm/qcom/qcom-apq8064-ifc6410.dts
src/arm/qcom/qcom-apq8064-lg-nexus4-mako.dts [new file with mode: 0644]
src/arm/qcom/qcom-apq8064.dtsi
src/arm/qcom/qcom-apq8074-dragonboard.dts
src/arm/qcom/qcom-ipq4018-ap120c-ac.dtsi
src/arm/qcom/qcom-ipq4018-jalapeno.dts
src/arm/qcom/qcom-ipq4019-ap.dk07.1.dtsi
src/arm/qcom/qcom-ipq4019.dtsi
src/arm/qcom/qcom-msm8226-microsoft-common.dtsi
src/arm/qcom/qcom-msm8226-microsoft-dempsey.dts
src/arm/qcom/qcom-msm8226-microsoft-makepeace.dts
src/arm/qcom/qcom-msm8226-microsoft-moneypenny.dts
src/arm/qcom/qcom-msm8226-samsung-matisse-common.dtsi
src/arm/qcom/qcom-msm8226.dtsi
src/arm/qcom/qcom-msm8926-htc-memul.dts
src/arm/qcom/qcom-msm8926-microsoft-superman-lte.dts
src/arm/qcom/qcom-msm8926-microsoft-tesla.dts
src/arm/qcom/qcom-msm8926-motorola-peregrine.dts
src/arm/qcom/qcom-msm8926-samsung-matisselte.dts
src/arm/qcom/qcom-msm8960.dtsi
src/arm/qcom/qcom-msm8974.dtsi
src/arm/qcom/qcom-sdx55.dtsi
src/arm/qcom/qcom-sdx65.dtsi
src/arm/renesas/r9a06g032-rzn1d400-db.dts
src/arm/renesas/r9a06g032-rzn1d400-eb.dts [new file with mode: 0644]
src/arm/renesas/r9a06g032.dtsi
src/arm/rockchip/rk3036-kylin.dts
src/arm/rockchip/rk3036.dtsi
src/arm/rockchip/rk3066a-marsboard.dts
src/arm/rockchip/rk3128.dtsi
src/arm/rockchip/rk3188.dtsi
src/arm/rockchip/rk322x.dtsi
src/arm/rockchip/rk3288.dtsi
src/arm/rockchip/rv1108.dtsi
src/arm/rockchip/rv1126-sonoff-ihost.dtsi
src/arm/samsung/s5pv210-aries.dtsi
src/arm/st/spear1310-evb.dts
src/arm/st/spear1340-evb.dts
src/arm/st/spear13xx.dtsi
src/arm/st/spear300-evb.dts
src/arm/st/spear310-evb.dts
src/arm/st/spear320-evb.dts
src/arm/st/spear320-hmi.dts
src/arm/st/spear3xx.dtsi
src/arm/st/spear600.dtsi
src/arm/st/stm32f746.dtsi
src/arm/st/stm32h7-pinctrl.dtsi
src/arm/st/stm32h743.dtsi
src/arm/st/stm32h743i-disco.dts
src/arm/st/stm32h743i-eval.dts
src/arm/st/stm32h747i-disco.dts [new file with mode: 0644]
src/arm/st/stm32h750i-art-pi.dts
src/arm/st/stm32mp131.dtsi
src/arm/st/stm32mp133.dtsi
src/arm/st/stm32mp135f-dk.dts
src/arm/st/stm32mp13xx-dhcor-som.dtsi
src/arm/st/stm32mp157a-iot-box.dts
src/arm/st/stm32mp157c-dk2.dts
src/arm/st/stm32mp157c-ultra-fly-sbc.dts [new file with mode: 0644]
src/arm/st/stm32mp15xx-dhcor-avenger96.dtsi
src/arm/ti/davinci/da850-evm.dts
src/arm/ti/omap/am335x-evm.dts
src/arm/ti/omap/omap3-n900.dts
src/arm/ti/omap/omap3.dtsi
src/arm/ti/omap/omap4-l4.dtsi
src/arm/ti/omap/omap4-panda-common.dtsi
src/arm/ti/omap/omap4-panda-es.dts
src/arm/ti/omap/omap5-l4.dtsi
src/arm/vt8500/vt8500.dtsi
src/arm/vt8500/wm8505.dtsi
src/arm/vt8500/wm8650.dtsi
src/arm/vt8500/wm8750.dtsi
src/arm/vt8500/wm8850.dtsi
src/arm/vt8500/wm8950-apc-rock.dts [new file with mode: 0644]
src/arm/vt8500/wm8950.dtsi [new file with mode: 0644]
src/arm64/airoha/en7581-evb.dts
src/arm64/airoha/en7581.dtsi
src/arm64/allwinner/sun50i-a100.dtsi
src/arm64/allwinner/sun50i-a133-liontron-h-a133l.dts [new file with mode: 0644]
src/arm64/allwinner/sun50i-a64-pine64.dts
src/arm64/allwinner/sun50i-a64-sopine-baseboard.dts
src/arm64/allwinner/sun50i-h313-tanix-tx1.dts
src/arm64/allwinner/sun50i-h5.dtsi
src/arm64/allwinner/sun50i-h6-orangepi-3.dts
src/arm64/allwinner/sun50i-h6-orangepi-lite2.dts
src/arm64/allwinner/sun50i-h6.dtsi
src/arm64/allwinner/sun50i-h616-bigtreetech-cb1.dtsi
src/arm64/allwinner/sun50i-h616-orangepi-zero.dtsi
src/arm64/allwinner/sun50i-h616-orangepi-zero2.dts
src/arm64/allwinner/sun50i-h616-x96-mate.dts
src/arm64/allwinner/sun50i-h616.dtsi
src/arm64/allwinner/sun50i-h618-longan-module-3h.dtsi
src/arm64/allwinner/sun50i-h618-orangepi-zero2w.dts
src/arm64/allwinner/sun50i-h618-orangepi-zero3.dts
src/arm64/allwinner/sun50i-h618-transpeed-8k618-t.dts
src/arm64/allwinner/sun50i-h618-yuzukihd-chameleon.dts [new file with mode: 0644]
src/arm64/allwinner/sun50i-h700-anbernic-rg35xx-2024.dts
src/arm64/allwinner/sun55i-a523.dtsi [new file with mode: 0644]
src/arm64/allwinner/sun55i-a527-cubie-a5e.dts [new file with mode: 0644]
src/arm64/allwinner/sun55i-h728-x96qpro+.dts [new file with mode: 0644]
src/arm64/allwinner/sun55i-t527-avaota-a1.dts [new file with mode: 0644]
src/arm64/amlogic/amlogic-a4-reset.h [new file with mode: 0644]
src/arm64/amlogic/amlogic-a4.dtsi
src/arm64/amlogic/amlogic-a5-reset.h [new file with mode: 0644]
src/arm64/amlogic/amlogic-a5.dtsi
src/arm64/amlogic/amlogic-c3.dtsi
src/arm64/amlogic/amlogic-s6-s905x5-bl209.dts [new file with mode: 0644]
src/arm64/amlogic/amlogic-s6.dtsi [new file with mode: 0644]
src/arm64/amlogic/amlogic-s7-s805x3-bp201.dts [new file with mode: 0644]
src/arm64/amlogic/amlogic-s7.dtsi [new file with mode: 0644]
src/arm64/amlogic/amlogic-s7d-s905x5m-bm202.dts [new file with mode: 0644]
src/arm64/amlogic/amlogic-s7d.dtsi [new file with mode: 0644]
src/arm64/amlogic/meson-a1.dtsi
src/arm64/amlogic/meson-axg.dtsi
src/arm64/amlogic/meson-g12-common.dtsi
src/arm64/amlogic/meson-g12a-fbx8am.dts
src/arm64/amlogic/meson-g12a-radxa-zero.dts
src/arm64/amlogic/meson-g12a-sei510.dts
src/arm64/amlogic/meson-g12a-u200.dts
src/arm64/amlogic/meson-g12a-x96-max.dts
src/arm64/amlogic/meson-g12a.dtsi
src/arm64/amlogic/meson-g12b-a311d-libretech-cc.dts
src/arm64/amlogic/meson-g12b-a311d.dtsi
src/arm64/amlogic/meson-g12b-bananapi-cm4.dtsi
src/arm64/amlogic/meson-g12b-bananapi.dtsi
src/arm64/amlogic/meson-g12b-khadas-vim3.dtsi
src/arm64/amlogic/meson-g12b-odroid-go-ultra.dts
src/arm64/amlogic/meson-g12b-odroid.dtsi
src/arm64/amlogic/meson-g12b-radxa-zero2.dts
src/arm64/amlogic/meson-g12b-s922x.dtsi
src/arm64/amlogic/meson-g12b-w400.dtsi
src/arm64/amlogic/meson-gxbb.dtsi
src/arm64/amlogic/meson-gxl-s805y-xiaomi-aquaman.dts [new file with mode: 0644]
src/arm64/amlogic/meson-gxl-s805y.dtsi [new file with mode: 0644]
src/arm64/amlogic/meson-gxl.dtsi
src/arm64/amlogic/meson-gxlx-s905l-p271.dts
src/arm64/amlogic/meson-s4.dtsi
src/arm64/amlogic/meson-sm1-ac2xx.dtsi
src/arm64/amlogic/meson-sm1-bananapi.dtsi
src/arm64/amlogic/meson-sm1-khadas-vim3l.dts
src/arm64/amlogic/meson-sm1-odroid.dtsi
src/arm64/amlogic/meson-sm1-s905d3-libretech-cc.dts
src/arm64/amlogic/meson-sm1-sei610.dts
src/arm64/amlogic/meson-sm1.dtsi
src/arm64/apple/s5l8960x.dtsi
src/arm64/apple/s800-0-3.dtsi
src/arm64/apple/s8001.dtsi
src/arm64/apple/spi1-nvram.dtsi
src/arm64/apple/t6001.dtsi
src/arm64/apple/t6002.dtsi
src/arm64/apple/t600x-die0.dtsi
src/arm64/apple/t7000.dtsi
src/arm64/apple/t7001.dtsi
src/arm64/apple/t8010.dtsi
src/arm64/apple/t8011.dtsi
src/arm64/apple/t8012.dtsi
src/arm64/apple/t8015.dtsi
src/arm64/apple/t8103-j293.dts
src/arm64/apple/t8103-jxxx.dtsi
src/arm64/apple/t8103.dtsi
src/arm64/apple/t8112-j493.dts
src/arm64/apple/t8112.dtsi
src/arm64/arm/corstone1000.dtsi
src/arm64/arm/foundation-v8.dtsi
src/arm64/arm/fvp-base-revc.dts
src/arm64/arm/juno-base.dtsi
src/arm64/arm/rtsm_ve-aemv8a.dts
src/arm64/blaize/blaize-blzp1600-cb2.dts
src/arm64/blaize/blaize-blzp1600.dtsi
src/arm64/broadcom/bcm2712-rpi-5-b.dts
src/arm64/broadcom/bcm2712.dtsi
src/arm64/broadcom/bcm2837-rpi-2-b.dts [new file with mode: 0644]
src/arm64/exynos/exynos7870-a2corelte.dts [new file with mode: 0644]
src/arm64/exynos/exynos7870-j6lte.dts [new file with mode: 0644]
src/arm64/exynos/exynos7870-on7xelte.dts [new file with mode: 0644]
src/arm64/exynos/exynos7870-pinctrl.dtsi [new file with mode: 0644]
src/arm64/exynos/exynos7870.dtsi [new file with mode: 0644]
src/arm64/exynos/exynos850.dtsi
src/arm64/exynos/exynosautov9.dtsi
src/arm64/exynos/exynosautov920.dtsi
src/arm64/exynos/google/gs101-pixel-common.dtsi
src/arm64/exynos/google/gs101.dtsi
src/arm64/freescale/fsl-ls1046a.dtsi
src/arm64/freescale/imx-pcie0-ep.dtso [moved from src/arm64/freescale/imx8mp-evk-pcie-ep.dtso with 64% similarity]
src/arm64/freescale/imx-pcie1-ep.dtso [new file with mode: 0644]
src/arm64/freescale/imx8-apalis-eval.dtsi
src/arm64/freescale/imx8-apalis-ixora-v1.1.dtsi
src/arm64/freescale/imx8-apalis-ixora-v1.2.dtsi
src/arm64/freescale/imx8-apalis-v1.1.dtsi
src/arm64/freescale/imx8dxl-evk.dts
src/arm64/freescale/imx8dxl-ss-hsio.dtsi
src/arm64/freescale/imx8dxp-tqma8xdps-mb-smarc-2.dts [new file with mode: 0644]
src/arm64/freescale/imx8dxp-tqma8xdps.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8mm-beacon-kit.dts
src/arm64/freescale/imx8mm-beacon-som.dtsi
src/arm64/freescale/imx8mm-evk.dtsi
src/arm64/freescale/imx8mm-phyboard-polis-peb-av-10.dtso
src/arm64/freescale/imx8mm-var-som.dtsi
src/arm64/freescale/imx8mm-verdin.dtsi
src/arm64/freescale/imx8mm.dtsi
src/arm64/freescale/imx8mn-beacon-kit.dts
src/arm64/freescale/imx8mn-beacon-som.dtsi
src/arm64/freescale/imx8mn-bsh-smm-s2-common.dtsi
src/arm64/freescale/imx8mn-var-som.dtsi
src/arm64/freescale/imx8mn.dtsi
src/arm64/freescale/imx8mp-beacon-som.dtsi
src/arm64/freescale/imx8mp-dhcom-som.dtsi
src/arm64/freescale/imx8mp-evk.dts
src/arm64/freescale/imx8mp-libra-rdk-fpsc-lvds-etml1010g3dra.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mp-libra-rdk-fpsc.dts [new file with mode: 0644]
src/arm64/freescale/imx8mp-nitrogen-enc-carrier-board.dts [new file with mode: 0644]
src/arm64/freescale/imx8mp-nitrogen-som.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8mp-phycore-fpsc.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8mp-toradex-smarc-dev.dts [new file with mode: 0644]
src/arm64/freescale/imx8mp-toradex-smarc.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8mp-tqma8mpql-mba8mp-ras314-imx219.dtso [new file with mode: 0644]
src/arm64/freescale/imx8mp-venice-gw71xx.dtsi
src/arm64/freescale/imx8mp-venice-gw72xx.dtsi
src/arm64/freescale/imx8mp-venice-gw73xx.dtsi
src/arm64/freescale/imx8mp-venice-gw74xx.dts
src/arm64/freescale/imx8mp-verdin.dtsi
src/arm64/freescale/imx8mp.dtsi
src/arm64/freescale/imx8mq-evk.dts
src/arm64/freescale/imx8mq.dtsi
src/arm64/freescale/imx8qm-apalis.dtsi
src/arm64/freescale/imx8qm-ss-hsio.dtsi
src/arm64/freescale/imx8qxp-mek-pcie-ep.dtso [deleted file]
src/arm64/freescale/imx8qxp-mek.dts
src/arm64/freescale/imx8qxp-ss-hsio.dtsi
src/arm64/freescale/imx8qxp-tqma8xqps-mb-smarc-2.dts [new file with mode: 0644]
src/arm64/freescale/imx8qxp-tqma8xqps.dtsi [new file with mode: 0644]
src/arm64/freescale/imx8x-colibri.dtsi
src/arm64/freescale/imx93-phyboard-nash.dts [new file with mode: 0644]
src/arm64/freescale/imx93-phyboard-segin.dts
src/arm64/freescale/imx93-phycore-som.dtsi
src/arm64/freescale/imx93-tqma9352-mba91xxca.dts [new file with mode: 0644]
src/arm64/freescale/imx93-tqma9352-mba93xxca.dts
src/arm64/freescale/imx93-tqma9352-mba93xxla.dts
src/arm64/freescale/imx94-clock.h [new file with mode: 0644]
src/arm64/freescale/imx94-pinfunc.h [new file with mode: 0644]
src/arm64/freescale/imx94-power.h [new file with mode: 0644]
src/arm64/freescale/imx94.dtsi [new file with mode: 0644]
src/arm64/freescale/imx943-evk.dts [new file with mode: 0644]
src/arm64/freescale/imx943.dtsi [new file with mode: 0644]
src/arm64/freescale/imx95-15x15-evk.dts
src/arm64/freescale/imx95-19x19-evk-sof.dts [new file with mode: 0644]
src/arm64/freescale/imx95-19x19-evk.dts
src/arm64/freescale/imx95-tqma9596sa-mb-smarc-2.dts [new file with mode: 0644]
src/arm64/freescale/imx95-tqma9596sa.dtsi [new file with mode: 0644]
src/arm64/freescale/imx95.dtsi
src/arm64/freescale/s32gxxxa-rdb.dtsi
src/arm64/freescale/tqma8xxs-mb-smarc-2.dtsi [new file with mode: 0644]
src/arm64/freescale/tqma8xxs.dtsi [new file with mode: 0644]
src/arm64/intel/socfpga_agilex.dtsi
src/arm64/intel/socfpga_agilex5.dtsi
src/arm64/intel/socfpga_agilex5_socdk.dts
src/arm64/intel/socfpga_agilex5_socdk_nand.dts [new file with mode: 0644]
src/arm64/marvell/armada-7040-db.dts
src/arm64/marvell/armada-8040-db.dts
src/arm64/marvell/cn9130-db.dtsi
src/arm64/mediatek/mt6357.dtsi
src/arm64/mediatek/mt6359.dtsi
src/arm64/mediatek/mt6893-pinfunc.h [new file with mode: 0644]
src/arm64/mediatek/mt7622-bananapi-bpi-r64.dts
src/arm64/mediatek/mt7988a-bananapi-bpi-r4-2g5.dts [new file with mode: 0644]
src/arm64/mediatek/mt7988a-bananapi-bpi-r4.dts
src/arm64/mediatek/mt7988a-bananapi-bpi-r4.dtsi [new file with mode: 0644]
src/arm64/mediatek/mt7988a.dtsi
src/arm64/mediatek/mt8183-kukui.dtsi
src/arm64/mediatek/mt8183.dtsi
src/arm64/mediatek/mt8186-corsola-ponyta-sku0.dts [new file with mode: 0644]
src/arm64/mediatek/mt8186-corsola-ponyta-sku1.dts [new file with mode: 0644]
src/arm64/mediatek/mt8186-corsola-ponyta.dtsi [new file with mode: 0644]
src/arm64/mediatek/mt8186-corsola-starmie.dtsi
src/arm64/mediatek/mt8186-corsola.dtsi
src/arm64/mediatek/mt8188-evb.dts
src/arm64/mediatek/mt8188.dtsi
src/arm64/mediatek/mt8195.dtsi
src/arm64/mediatek/mt8196-pinfunc.h [new file with mode: 0644]
src/arm64/mediatek/mt8365-evk.dts
src/arm64/mediatek/mt8390-genio-common.dtsi
src/arm64/mediatek/mt8395-genio-1200-evk.dts
src/arm64/mediatek/mt8395-radxa-nio-12l.dts
src/arm64/microchip/sparx5_pcb_common.dtsi
src/arm64/nuvoton/nuvoton-common-npcm8xx.dtsi
src/arm64/nvidia/tegra186-p2771-0000.dts
src/arm64/nvidia/tegra186-p3310.dtsi
src/arm64/nvidia/tegra186-p3509-0000+p3636-0001.dts
src/arm64/nvidia/tegra186.dtsi
src/arm64/nvidia/tegra194-p2888.dtsi
src/arm64/nvidia/tegra194-p2972-0000.dts
src/arm64/nvidia/tegra194-p3509-0000.dtsi
src/arm64/nvidia/tegra194-p3668.dtsi
src/arm64/nvidia/tegra194.dtsi
src/arm64/nvidia/tegra210-p2180.dtsi
src/arm64/nvidia/tegra210-p2371-2180.dts
src/arm64/nvidia/tegra210-p2597.dtsi
src/arm64/nvidia/tegra210-p2894.dtsi
src/arm64/nvidia/tegra210-p3450-0000.dts
src/arm64/nvidia/tegra210.dtsi
src/arm64/nvidia/tegra234.dtsi
src/arm64/qcom/apq8016-sbc.dts
src/arm64/qcom/apq8016-schneider-hmibsc.dts
src/arm64/qcom/apq8039-t2.dts
src/arm64/qcom/apq8096-db820c.dts
src/arm64/qcom/ipq5018-rdp432-c2.dts
src/arm64/qcom/ipq5018.dtsi
src/arm64/qcom/ipq5332-rdp441.dts
src/arm64/qcom/ipq5332.dtsi
src/arm64/qcom/ipq5424-rdp466.dts
src/arm64/qcom/ipq5424.dtsi
src/arm64/qcom/ipq6018-cp01-c1.dts
src/arm64/qcom/ipq6018-mp5496.dtsi [new file with mode: 0644]
src/arm64/qcom/ipq6018.dtsi
src/arm64/qcom/ipq9574-rdp-common.dtsi
src/arm64/qcom/ipq9574-rdp433.dts
src/arm64/qcom/ipq9574.dtsi
src/arm64/qcom/msm8916-acer-a1-724.dts
src/arm64/qcom/msm8916-alcatel-idol347.dts
src/arm64/qcom/msm8916-asus-z00l.dts
src/arm64/qcom/msm8916-gplus-fl8005a.dts
src/arm64/qcom/msm8916-huawei-g7.dts
src/arm64/qcom/msm8916-lg-c50.dts
src/arm64/qcom/msm8916-lg-m216.dts
src/arm64/qcom/msm8916-longcheer-l8150.dts
src/arm64/qcom/msm8916-longcheer-l8910.dts
src/arm64/qcom/msm8916-modem-qdsp6.dtsi
src/arm64/qcom/msm8916-motorola-common.dtsi
src/arm64/qcom/msm8916-mtp.dts
src/arm64/qcom/msm8916-samsung-a2015-common.dtsi
src/arm64/qcom/msm8916-samsung-fortuna-common.dtsi
src/arm64/qcom/msm8916-samsung-gt5-common.dtsi
src/arm64/qcom/msm8916-samsung-j5-common.dtsi
src/arm64/qcom/msm8916-samsung-serranove.dts
src/arm64/qcom/msm8916-ufi.dtsi
src/arm64/qcom/msm8916-wingtech-wt865x8.dtsi
src/arm64/qcom/msm8916-wingtech-wt88047.dts
src/arm64/qcom/msm8916.dtsi
src/arm64/qcom/msm8917-xiaomi-riva.dts
src/arm64/qcom/msm8917.dtsi
src/arm64/qcom/msm8939-huawei-kiwi.dts
src/arm64/qcom/msm8939-longcheer-l9100.dts
src/arm64/qcom/msm8939-samsung-a7.dts
src/arm64/qcom/msm8939-wingtech-wt82918.dtsi
src/arm64/qcom/msm8939.dtsi
src/arm64/qcom/msm8953.dtsi
src/arm64/qcom/msm8976.dtsi
src/arm64/qcom/msm8992-lg-h815.dts
src/arm64/qcom/msm8996-oneplus-common.dtsi
src/arm64/qcom/msm8996-oneplus3.dts
src/arm64/qcom/msm8996-oneplus3t.dts
src/arm64/qcom/msm8996-xiaomi-gemini.dts
src/arm64/qcom/msm8996.dtsi
src/arm64/qcom/msm8996pro-xiaomi-natrium.dts
src/arm64/qcom/msm8996pro-xiaomi-scorpio.dts
src/arm64/qcom/msm8998-fxtec-pro1.dts
src/arm64/qcom/msm8998-lenovo-miix-630.dts
src/arm64/qcom/msm8998-mtp.dts
src/arm64/qcom/msm8998-sony-xperia-yoshino.dtsi
src/arm64/qcom/msm8998.dtsi
src/arm64/qcom/pm8937.dtsi
src/arm64/qcom/qcm2290.dtsi
src/arm64/qcom/qcm6490-fairphone-fp5.dts
src/arm64/qcom/qcm6490-idp.dts
src/arm64/qcom/qcm6490-shift-otter.dts
src/arm64/qcom/qcs615.dtsi
src/arm64/qcom/qcs6490-rb3gen2-industrial-mezzanine.dtso [new file with mode: 0644]
src/arm64/qcom/qcs6490-rb3gen2-vision-mezzanine.dtso [new file with mode: 0644]
src/arm64/qcom/qcs6490-rb3gen2.dts
src/arm64/qcom/qcs8300-pmics.dtsi [new file with mode: 0644]
src/arm64/qcom/qcs8300-ride.dts
src/arm64/qcom/qcs8300.dtsi
src/arm64/qcom/qdu1000.dtsi
src/arm64/qcom/qrb2210-rb1.dts
src/arm64/qcom/qrb4210-rb2.dts
src/arm64/qcom/qrb5165-rb5-vision-mezzanine.dtso
src/arm64/qcom/qrb5165-rb5.dts
src/arm64/qcom/sa8155p-adp.dts
src/arm64/qcom/sa8540p-ride.dts
src/arm64/qcom/sa8775p-ride.dtsi
src/arm64/qcom/sa8775p.dtsi
src/arm64/qcom/sar2130p.dtsi
src/arm64/qcom/sc7180-acer-aspire1.dts
src/arm64/qcom/sc7180-el2.dtso [new file with mode: 0644]
src/arm64/qcom/sc7180-trogdor-homestar.dtsi
src/arm64/qcom/sc7180-trogdor-kingoftown.dts
src/arm64/qcom/sc7180-trogdor-lazor.dtsi
src/arm64/qcom/sc7180-trogdor-pazquel360.dtsi
src/arm64/qcom/sc7180-trogdor-pompom.dtsi
src/arm64/qcom/sc7180-trogdor-wormdingler.dtsi
src/arm64/qcom/sc7180.dtsi
src/arm64/qcom/sc7280-herobrine-audio-rt5682-3mic.dtsi
src/arm64/qcom/sc7280-herobrine-audio-wcd9385.dtsi
src/arm64/qcom/sc7280-idp.dtsi
src/arm64/qcom/sc7280.dtsi
src/arm64/qcom/sc8180x.dtsi
src/arm64/qcom/sc8280xp-crd.dts
src/arm64/qcom/sc8280xp-el2.dtso [new file with mode: 0644]
src/arm64/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
src/arm64/qcom/sc8280xp-microsoft-arcata.dts
src/arm64/qcom/sc8280xp-microsoft-blackrock.dts
src/arm64/qcom/sc8280xp-pmics.dtsi
src/arm64/qcom/sc8280xp.dtsi
src/arm64/qcom/sda660-inforce-ifc6560.dts
src/arm64/qcom/sdm630-sony-xperia-nile.dtsi
src/arm64/qcom/sdm630.dtsi
src/arm64/qcom/sdm632-fairphone-fp3.dts
src/arm64/qcom/sdm660-xiaomi-lavender.dts
src/arm64/qcom/sdm660.dtsi
src/arm64/qcom/sdm670.dtsi
src/arm64/qcom/sdm845-cheza.dtsi
src/arm64/qcom/sdm845-db845c-navigation-mezzanine.dtso
src/arm64/qcom/sdm845-db845c.dts
src/arm64/qcom/sdm845-mtp.dts
src/arm64/qcom/sdm845-oneplus-common.dtsi
src/arm64/qcom/sdm845-samsung-starqltechn.dts
src/arm64/qcom/sdm845-shift-axolotl.dts
src/arm64/qcom/sdm845-sony-xperia-tama.dtsi
src/arm64/qcom/sdm845-xiaomi-beryllium-common.dtsi
src/arm64/qcom/sdm845-xiaomi-beryllium-ebbg.dts
src/arm64/qcom/sdm845-xiaomi-beryllium-tianma.dts
src/arm64/qcom/sdm845-xiaomi-polaris.dts
src/arm64/qcom/sdm845.dtsi
src/arm64/qcom/sdm850-lenovo-yoga-c630.dts
src/arm64/qcom/sdm850-samsung-w737.dts
src/arm64/qcom/sdx75-idp.dts
src/arm64/qcom/sdx75.dtsi
src/arm64/qcom/sm4450.dtsi
src/arm64/qcom/sm6115-fxtec-pro1x.dts
src/arm64/qcom/sm6115.dtsi
src/arm64/qcom/sm6115p-lenovo-j606f.dts
src/arm64/qcom/sm6125-xiaomi-ginkgo.dts [new file with mode: 0644]
src/arm64/qcom/sm6125.dtsi
src/arm64/qcom/sm6350-sony-xperia-lena-pdx213.dts
src/arm64/qcom/sm6350.dtsi
src/arm64/qcom/sm7325-nothing-spacewar.dts
src/arm64/qcom/sm8150-hdk.dts
src/arm64/qcom/sm8150-microsoft-surface-duo.dts
src/arm64/qcom/sm8150-mtp.dts
src/arm64/qcom/sm8150.dtsi
src/arm64/qcom/sm8250-xiaomi-elish-common.dtsi
src/arm64/qcom/sm8250.dtsi
src/arm64/qcom/sm8350.dtsi
src/arm64/qcom/sm8450.dtsi
src/arm64/qcom/sm8550-hdk.dts
src/arm64/qcom/sm8550-mtp.dts
src/arm64/qcom/sm8550-qrd.dts
src/arm64/qcom/sm8550-samsung-q5q.dts
src/arm64/qcom/sm8550.dtsi
src/arm64/qcom/sm8650.dtsi
src/arm64/qcom/sm8750-mtp.dts
src/arm64/qcom/sm8750-qrd.dts
src/arm64/qcom/sm8750.dtsi
src/arm64/qcom/x1-crd.dtsi [new file with mode: 0644]
src/arm64/qcom/x1-el2.dtso [new file with mode: 0644]
src/arm64/qcom/x1e001de-devkit.dts
src/arm64/qcom/x1e78100-lenovo-thinkpad-t14s-oled.dts [new file with mode: 0644]
src/arm64/qcom/x1e78100-lenovo-thinkpad-t14s.dts
src/arm64/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi [new file with mode: 0644]
src/arm64/qcom/x1e80100-asus-vivobook-s15.dts
src/arm64/qcom/x1e80100-crd.dts
src/arm64/qcom/x1e80100-dell-xps13-9345.dts
src/arm64/qcom/x1e80100-hp-elitebook-ultra-g1q.dts [new file with mode: 0644]
src/arm64/qcom/x1e80100-hp-omnibook-x14.dts
src/arm64/qcom/x1e80100-lenovo-yoga-slim7x.dts
src/arm64/qcom/x1e80100-microsoft-romulus.dtsi
src/arm64/qcom/x1e80100-pmics.dtsi
src/arm64/qcom/x1e80100-qcp.dts
src/arm64/qcom/x1e80100.dtsi
src/arm64/qcom/x1p42100-crd.dts [new file with mode: 0644]
src/arm64/qcom/x1p42100.dtsi [new file with mode: 0644]
src/arm64/renesas/beacon-renesom-som.dtsi
src/arm64/renesas/r8a779a0.dtsi
src/arm64/renesas/r8a779f4.dtsi
src/arm64/renesas/r8a779g0.dtsi
src/arm64/renesas/r8a779g3-sparrow-hawk-fan-pwm.dtso [new file with mode: 0644]
src/arm64/renesas/r8a779g3-sparrow-hawk.dts [new file with mode: 0644]
src/arm64/renesas/r8a779h0.dtsi
src/arm64/renesas/r9a07g044.dtsi
src/arm64/renesas/r9a07g044l2-smarc.dts
src/arm64/renesas/r9a07g054.dtsi
src/arm64/renesas/r9a07g054l2-smarc.dts
src/arm64/renesas/r9a09g047.dtsi
src/arm64/renesas/r9a09g047e57-smarc.dts
src/arm64/renesas/r9a09g056.dtsi [new file with mode: 0644]
src/arm64/renesas/r9a09g056n48-rzv2n-evk.dts [new file with mode: 0644]
src/arm64/renesas/r9a09g057.dtsi
src/arm64/renesas/renesas-smarc2.dtsi
src/arm64/renesas/rzg2l-smarc-pinfunction.dtsi
src/arm64/renesas/rzg2l-smarc-som.dtsi
src/arm64/renesas/rzg2l-smarc.dtsi
src/arm64/renesas/rzg2lc-smarc-som.dtsi
src/arm64/renesas/rzg3e-smarc-som.dtsi
src/arm64/renesas/white-hawk-ard-audio-da7212.dtso
src/arm64/renesas/white-hawk-single.dtsi
src/arm64/rockchip/px30-cobra-ltk050h3146w-a2.dts [new file with mode: 0644]
src/arm64/rockchip/px30-cobra-ltk050h3146w.dts [new file with mode: 0644]
src/arm64/rockchip/px30-cobra-ltk050h3148w.dts [new file with mode: 0644]
src/arm64/rockchip/px30-cobra-ltk500hd1829.dts [new file with mode: 0644]
src/arm64/rockchip/px30-cobra.dtsi [new file with mode: 0644]
src/arm64/rockchip/px30-pp1516-ltk050h3146w-a2.dts [new file with mode: 0644]
src/arm64/rockchip/px30-pp1516-ltk050h3148w.dts [new file with mode: 0644]
src/arm64/rockchip/px30-pp1516.dtsi [new file with mode: 0644]
src/arm64/rockchip/px30-ringneck.dtsi
src/arm64/rockchip/px30.dtsi
src/arm64/rockchip/rk3328-rock64.dts
src/arm64/rockchip/rk3399-evb-ind.dts [new file with mode: 0644]
src/arm64/rockchip/rk3399-gru-scarlet-dumo.dts
src/arm64/rockchip/rk3399-puma-haikou.dts
src/arm64/rockchip/rk3399-puma.dtsi
src/arm64/rockchip/rk3399-roc-pc.dtsi
src/arm64/rockchip/rk3399-rockpro64.dtsi
src/arm64/rockchip/rk3528-radxa-e20c.dts
src/arm64/rockchip/rk3528.dtsi
src/arm64/rockchip/rk3562-evb2-v10.dts [new file with mode: 0644]
src/arm64/rockchip/rk3562-pinctrl.dtsi [new file with mode: 0644]
src/arm64/rockchip/rk3562.dtsi [new file with mode: 0644]
src/arm64/rockchip/rk3566-box-demo.dts
src/arm64/rockchip/rk3566-pinetab2.dtsi
src/arm64/rockchip/rk3566-quartz64-a.dts
src/arm64/rockchip/rk3566-quartz64-b.dts
src/arm64/rockchip/rk3566-rock-3c.dts
src/arm64/rockchip/rk3568-nanopi-r5s.dts
src/arm64/rockchip/rk3568-nanopi-r5s.dtsi
src/arm64/rockchip/rk3568-qnap-ts433.dts
src/arm64/rockchip/rk3568.dtsi
src/arm64/rockchip/rk3576-armsom-sige5.dts
src/arm64/rockchip/rk3576-evb1-v10.dts
src/arm64/rockchip/rk3576-roc-pc.dts
src/arm64/rockchip/rk3576.dtsi
src/arm64/rockchip/rk3588-armsom-w3.dts
src/arm64/rockchip/rk3588-base-pinctrl.dtsi
src/arm64/rockchip/rk3588-base.dtsi
src/arm64/rockchip/rk3588-coolpi-cm5-evb.dts
src/arm64/rockchip/rk3588-coolpi-cm5-genbook.dts
src/arm64/rockchip/rk3588-coolpi-cm5.dtsi
src/arm64/rockchip/rk3588-evb2-v10.dts [new file with mode: 0644]
src/arm64/rockchip/rk3588-extra-pinctrl.dtsi
src/arm64/rockchip/rk3588-extra.dtsi
src/arm64/rockchip/rk3588-jaguar.dts
src/arm64/rockchip/rk3588-nanopc-t6.dtsi
src/arm64/rockchip/rk3588-orangepi-5-compact.dtsi
src/arm64/rockchip/rk3588-rock-5b-plus.dts [new file with mode: 0644]
src/arm64/rockchip/rk3588-rock-5b.dts
src/arm64/rockchip/rk3588-rock-5b.dtsi [new file with mode: 0644]
src/arm64/rockchip/rk3588-tiger-haikou-video-demo.dtso [new file with mode: 0644]
src/arm64/rockchip/rk3588-tiger-haikou.dts
src/arm64/rockchip/rk3588s-coolpi-4b.dts
src/arm64/rockchip/rk3588s-evb1-v10.dts
src/arm64/rockchip/rk3588s-indiedroid-nova.dts
src/arm64/rockchip/rk3588s-khadas-edge2.dts
src/arm64/rockchip/rockchip-pinconf.dtsi
src/arm64/st/stm32mp25-pinctrl.dtsi
src/arm64/st/stm32mp251.dtsi
src/arm64/st/stm32mp257f-ev1.dts
src/arm64/tesla/fsd-evb.dts
src/arm64/tesla/fsd-pinctrl.dtsi
src/arm64/tesla/fsd.dtsi
src/arm64/ti/k3-am62-lp-sk.dts
src/arm64/ti/k3-am62-main.dtsi
src/arm64/ti/k3-am62-phycore-som.dtsi
src/arm64/ti/k3-am62-pocketbeagle2.dts [new file with mode: 0644]
src/arm64/ti/k3-am62-verdin-dahlia.dtsi
src/arm64/ti/k3-am62-verdin-yavia.dtsi
src/arm64/ti/k3-am62-wakeup.dtsi
src/arm64/ti/k3-am62.dtsi
src/arm64/ti/k3-am625-beagleplay-csi2-ov5640.dtso
src/arm64/ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso
src/arm64/ti/k3-am625-beagleplay.dts
src/arm64/ti/k3-am62a-main.dtsi
src/arm64/ti/k3-am62a-mcu.dtsi
src/arm64/ti/k3-am62a-phycore-som.dtsi
src/arm64/ti/k3-am62a-thermal.dtsi
src/arm64/ti/k3-am62a-wakeup.dtsi
src/arm64/ti/k3-am62a7-sk.dts
src/arm64/ti/k3-am62a7.dtsi
src/arm64/ti/k3-am62p-j722s-common-main.dtsi
src/arm64/ti/k3-am62p-verdin-dahlia.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p-verdin-dev.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p-verdin-ivy.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p-verdin-mallow.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p-verdin-nonwifi.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p-verdin-wifi.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p-verdin-yavia.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p-verdin.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am62p5-sk.dts
src/arm64/ti/k3-am62p5-verdin-nonwifi-dahlia.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-nonwifi-dev.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-nonwifi-ivy.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-nonwifi-mallow.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-nonwifi-yavia.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-wifi-dahlia.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-wifi-dev.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-wifi-ivy.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-wifi-mallow.dts [new file with mode: 0644]
src/arm64/ti/k3-am62p5-verdin-wifi-yavia.dts [new file with mode: 0644]
src/arm64/ti/k3-am62x-phyboard-lyra-gpio-fan.dtso
src/arm64/ti/k3-am62x-sk-common.dtsi
src/arm64/ti/k3-am62x-sk-csi2-imx219.dtso
src/arm64/ti/k3-am62x-sk-csi2-ov5640.dtso
src/arm64/ti/k3-am62x-sk-csi2-tevi-ov5640.dtso
src/arm64/ti/k3-am64-main.dtsi
src/arm64/ti/k3-am642-evm-pcie0-ep.dtso
src/arm64/ti/k3-am642-evm.dts
src/arm64/ti/k3-am642-sk.dts
src/arm64/ti/k3-am65-main.dtsi
src/arm64/ti/k3-am654-base-board-rocktech-rk101-panel.dtso
src/arm64/ti/k3-am654-base-board.dts
src/arm64/ti/k3-am6548-iot2050-advanced-common.dtsi
src/arm64/ti/k3-am67a-beagley-ai.dts
src/arm64/ti/k3-am68-phyboard-izar.dts [new file with mode: 0644]
src/arm64/ti/k3-am68-phycore-som.dtsi [new file with mode: 0644]
src/arm64/ti/k3-am68-sk-base-board-pcie1-ep.dtso
src/arm64/ti/k3-am68-sk-base-board.dts
src/arm64/ti/k3-am69-sk.dts
src/arm64/ti/k3-j7200-evm-pcie1-ep.dtso
src/arm64/ti/k3-j7200-main.dtsi
src/arm64/ti/k3-j721e-common-proc-board-infotainment.dtso
src/arm64/ti/k3-j721e-common-proc-board.dts
src/arm64/ti/k3-j721e-evm-pcie0-ep.dtso
src/arm64/ti/k3-j721e-evm-pcie1-ep.dtso
src/arm64/ti/k3-j721e-main.dtsi
src/arm64/ti/k3-j721e-sk-csi2-dual-imx219.dtso
src/arm64/ti/k3-j721e-sk.dts
src/arm64/ti/k3-j721e.dtsi
src/arm64/ti/k3-j721s2-evm-pcie1-ep.dtso
src/arm64/ti/k3-j721s2-main.dtsi
src/arm64/ti/k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtso [new file with mode: 0644]
src/arm64/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso [new file with mode: 0644]
src/arm64/ti/k3-j722s-evm.dts
src/arm64/ti/k3-j722s-main.dtsi
src/arm64/ti/k3-j784s4-evm-usxgmii-exp1-exp2.dtso
src/arm64/ti/k3-j784s4-j742s2-evm-common.dtsi
src/arm64/ti/k3-j784s4-j742s2-evm-usb0-type-a.dtso [new file with mode: 0644]
src/arm64/ti/k3-j784s4-j742s2-main-common.dtsi
src/loongarch/loongson-2k0500.dtsi
src/loongarch/loongson-2k1000-ref.dts
src/loongarch/loongson-2k1000.dtsi
src/loongarch/loongson-2k2000.dtsi
src/mips/econet/en751221.dtsi [new file with mode: 0644]
src/mips/econet/en751221_smartfiber_xp8421-b.dts [new file with mode: 0644]
src/mips/loongson/loongson64c_4core_ls7a.dts
src/mips/pic32/pic32mzda.dtsi
src/mips/realtek/rtl930x.dtsi
src/powerpc/microwatt.dts
src/powerpc/mpc8315erdb.dts
src/riscv/renesas/r9a07g043f.dtsi
src/riscv/sophgo/cv1800b.dtsi
src/riscv/sophgo/cv180x-cpus.dtsi [new file with mode: 0644]
src/riscv/sophgo/cv180x.dtsi [moved from src/riscv/sophgo/cv18xx.dtsi with 75% similarity]
src/riscv/sophgo/cv1812h.dtsi
src/riscv/sophgo/cv181x.dtsi
src/riscv/sophgo/sg2002.dtsi
src/riscv/sophgo/sg2042-milkv-pioneer.dts
src/riscv/sophgo/sg2042.dtsi
src/riscv/sophgo/sg2044-cpus.dtsi [new file with mode: 0644]
src/riscv/sophgo/sg2044-reset.h [new file with mode: 0644]
src/riscv/sophgo/sg2044-sophgo-srd3-10.dts [new file with mode: 0644]
src/riscv/sophgo/sg2044.dtsi [new file with mode: 0644]
src/riscv/spacemit/k1-bananapi-f3.dts
src/riscv/spacemit/k1-pinctrl.dtsi
src/riscv/spacemit/k1.dtsi
src/riscv/starfive/jh7110-common.dtsi
src/riscv/starfive/jh7110-deepcomputing-fml13v01.dts
src/riscv/thead/th1520.dtsi

index 8c757545542243e8297c0dfd8513d19f4d74811c..30c44a0e640747db7b79941cd9e109e1b0e1dd87 100644 (file)
@@ -47,6 +47,7 @@ properties:
               - novtech,chameleon96
               - samtec,vining
               - terasic,de0-atlas
+              - terasic,de10-nano
               - terasic,socfpga-cyclone5-sockit
           - const: altr,socfpga-cyclone5
           - const: altr,socfpga
index 57238130668113dd5ad13cd63682d80123c6f313..a758f4bb2bb312ad35d0ada217bfdbce54fc06d6 100644 (file)
@@ -9,20 +9,120 @@ title: Altera SOCFPGA Clock Manager
 maintainers:
   - Dinh Nguyen <dinguyen@kernel.org>
 
-description: test
+description:
+  This binding describes the Altera SOCFGPA Clock Manager and its associated
+  tree of clocks, pll's, and clock gates for the Cyclone5, Arria5 and Arria10
+  chip families.
 
 properties:
   compatible:
     items:
       - const: altr,clk-mgr
+
   reg:
     maxItems: 1
 
+  clocks:
+    type: object
+    additionalProperties: false
+
+    properties:
+      "#address-cells":
+        const: 1
+
+      "#size-cells":
+        const: 0
+
+    patternProperties:
+      "^osc[0-9]$":
+        type: object
+
+      "^[a-z0-9,_]+(clk|pll|clk_gate|clk_divided)(@[a-f0-9]+)?$":
+        type: object
+        $ref: '#/$defs/clock-props'
+        unevaluatedProperties: false
+
+        properties:
+          compatible:
+            enum:
+              - altr,socfpga-pll-clock
+              - altr,socfpga-perip-clk
+              - altr,socfpga-gate-clk
+              - altr,socfpga-a10-pll-clock
+              - altr,socfpga-a10-perip-clk
+              - altr,socfpga-a10-gate-clk
+              - fixed-clock
+
+          clocks:
+            description: one or more phandles to input clock
+            minItems: 1
+            maxItems: 5
+
+          "#address-cells":
+            const: 1
+
+          "#size-cells":
+            const: 0
+
+        patternProperties:
+          "^[a-z0-9,_]+(clk|pll)(@[a-f0-9]+)?$":
+            type: object
+            $ref: '#/$defs/clock-props'
+            unevaluatedProperties: false
+
+            properties:
+              compatible:
+                enum:
+                  - altr,socfpga-perip-clk
+                  - altr,socfpga-gate-clk
+                  - altr,socfpga-a10-perip-clk
+                  - altr,socfpga-a10-gate-clk
+
+              clocks:
+                description: one or more phandles to input clock
+                minItems: 1
+                maxItems: 4
+
+            required:
+              - compatible
+              - clocks
+              - "#clock-cells"
+
+        required:
+          - compatible
+          - "#clock-cells"
+
 required:
   - compatible
+  - reg
 
 additionalProperties: false
 
+$defs:
+  clock-props:
+    properties:
+      reg:
+        maxItems: 1
+
+      "#clock-cells":
+        const: 0
+
+      clk-gate:
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        items:
+          - description: gating register offset
+          - description: bit index
+
+      div-reg:
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        items:
+          - description: divider register offset
+          - description: bit shift
+          - description: bit width
+
+      fixed-divider:
+        $ref: /schemas/types.yaml#/definitions/uint32
+
 examples:
   - |
     clkmgr@ffd04000 {
index 0647851ae1f55a27bfb148252532bcf15ca905bf..05edf22e6c30368bfee7be61bbb4b682bfbc1d5e 100644 (file)
@@ -27,6 +27,7 @@ properties:
         items:
           - enum:
               - minix,neo-x8
+              - tcu,fernsehfee3
           - const: amlogic,meson8
 
       - description: Boards with the Amlogic Meson8m2 SoC
@@ -73,6 +74,13 @@ properties:
           - const: amlogic,s805x
           - const: amlogic,meson-gxl
 
+      - description: Boards with the Amlogic Meson GXL S805Y SoC
+        items:
+          - enum:
+              - xiaomi,aquaman
+          - const: amlogic,s805y
+          - const: amlogic,meson-gxl
+
       - description: Boards with the Amlogic Meson GXL S905W SoC
         items:
           - enum:
@@ -237,6 +245,24 @@ properties:
               - amlogic,aq222
           - const: amlogic,s4
 
+      - description: Boards with the Amlogic S6 S905X5 SoC
+        items:
+          - enum:
+              - amlogic,bl209
+          - const: amlogic,s6
+
+      - description: Boards with the Amlogic S7 S805X3 SoC
+        items:
+          - enum:
+              - amlogic,bp201
+          - const: amlogic,s7
+
+      - description: Boards with the Amlogic S7D S905X5M SoC
+        items:
+          - enum:
+              - amlogic,bm202
+          - const: amlogic,s7d
+
       - description: Boards with the Amlogic T7 A311D2 SoC
         items:
           - enum:
index a6f793ea03b6c193fc0ff72a45e0249a63a2ba3c..0c1017affbad2f03892b250ad864d9a5dc8d02f1 100644 (file)
@@ -30,6 +30,19 @@ properties:
   power-domains:
     maxItems: 1
 
+  clocks:
+    minItems: 1
+    maxItems: 3
+
+  clock-names:
+    oneOf:
+      - items:
+          - enum: [apb_pclk, atclk]
+      - items: # Zynq-700
+          - const: apb_pclk
+          - const: dbg_trc
+          - const: dbg_apb
+
   in-ports:
     $ref: /schemas/graph.yaml#/properties/ports
     additionalProperties: false
diff --git a/Bindings/arm/atmel,sama5d2-secumod.yaml b/Bindings/arm/atmel,sama5d2-secumod.yaml
new file mode 100644 (file)
index 0000000..ad4a98a
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/atmel,sama5d2-secumod.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip AT91 Security Module (SECUMOD)
+
+maintainers:
+  - Nicolas Ferre <nicolas.ferre@microchip.com>
+
+description:
+  The Security Module also offers the PIOBU pins which can be used as GPIO pins.
+  Note that they maintain their voltage during Backup/Self-refresh.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: atmel,sama5d2-secumod
+          - const: syscon
+      - items:
+          - enum:
+              - microchip,sama7d65-secumod
+              - microchip,sama7g5-secumod
+          - const: atmel,sama5d2-secumod
+          - const: syscon
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 2
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    security-module@fc040000 {
+      compatible = "atmel,sama5d2-secumod", "syscon";
+      reg = <0xfc040000 0x100>;
+      gpio-controller;
+      #gpio-cells = <2>;
+    };
index d3821f651e7286be301b60a2e54365bcba1ffdce..5ce54f9befe62b2f43a83d5cb4a5b080267d9300 100644 (file)
@@ -46,28 +46,3 @@ Examples:
                reg = <0xffffe800 0x200>;
        };
 
-Security Module (SECUMOD)
-
-The Security Module macrocell provides all necessary secure functions to avoid
-voltage, temperature, frequency and mechanical attacks on the chip. It also
-embeds secure memories that can be scrambled.
-
-The Security Module also offers the PIOBU pins which can be used as GPIO pins.
-Note that they maintain their voltage during Backup/Self-refresh.
-
-required properties:
-- compatible: Should be "atmel,<chip>-secumod", "syscon".
-  <chip> can be "sama5d2".
-- reg: Should contain registers location and length
-- gpio-controller:     Marks the port as GPIO controller.
-- #gpio-cells:         There are 2. The pin number is the
-                       first, the second represents additional
-                       parameters such as GPIO_ACTIVE_HIGH/LOW.
-
-
-       secumod@fc040000 {
-               compatible = "atmel,sama5d2-secumod", "syscon";
-               reg = <0xfc040000 0x100>;
-               gpio-controller;
-               #gpio-cells = <2>;
-       };
index e4ff71f006b8c87799e3f2e1f1629676859517f4..2729a542c4f35a0e66447545cd3cc4805aa842b5 100644 (file)
@@ -52,6 +52,7 @@ properties:
       - description: BCM2837 based Boards
         items:
           - enum:
+              - raspberrypi,2-model-b-rev2
               - raspberrypi,3-model-a-plus
               - raspberrypi,3-model-b
               - raspberrypi,3-model-b-plus
index 2e666b2a4dcdaa5d459d671c60afde2ef6671469..2e9ab95830050053d700a8b0f56be2078a115502 100644 (file)
@@ -10,9 +10,9 @@ maintainers:
   - Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 
 description: |+
-  The device tree allows to describe the layout of CPUs in a system through
-  the "cpus" node, which in turn contains a number of subnodes (ie "cpu")
-  defining properties for every cpu.
+  The device tree allows to describe the layout of CPUs in a system through the
+  "cpus" node, which in turn contains a number of subnodes (ie "cpu") defining
+  properties for every cpu.
 
   Bindings for CPU nodes follow the Devicetree Specification, available from:
 
@@ -41,45 +41,40 @@ description: |+
 properties:
   reg:
     maxItems: 1
-    description: |
-      Usage and definition depend on ARM architecture version and
-      configuration:
+    description: >
+      Usage and definition depend on ARM architecture version and configuration:
 
-      On uniprocessor ARM architectures previous to v7
-      this property is required and must be set to 0.
+      On uniprocessor ARM architectures previous to v7 this property is required
+      and must be set to 0.
 
-      On ARM 11 MPcore based systems this property is
-        required and matches the CPUID[11:0] register bits.
+      On ARM 11 MPcore based systems this property is required and matches the
+      CPUID[11:0] register bits.
 
-        Bits [11:0] in the reg cell must be set to
-        bits [11:0] in CPU ID register.
+        Bits [11:0] in the reg cell must be set to bits [11:0] in CPU ID register.
 
         All other bits in the reg cell must be set to 0.
 
-      On 32-bit ARM v7 or later systems this property is
-        required and matches the CPU MPIDR[23:0] register
-        bits.
+      On 32-bit ARM v7 or later systems this property is required and matches
+      the CPU MPIDR[23:0] register bits.
 
-        Bits [23:0] in the reg cell must be set to
-        bits [23:0] in MPIDR.
+        Bits [23:0] in the reg cell must be set to bits [23:0] in MPIDR.
 
         All other bits in the reg cell must be set to 0.
 
-      On ARM v8 64-bit systems this property is required
-        and matches the MPIDR_EL1 register affinity bits.
+      On ARM v8 64-bit systems this property is required and matches the
+      MPIDR_EL1 register affinity bits.
 
         * If cpus node's #address-cells property is set to 2
 
-          The first reg cell bits [7:0] must be set to
-          bits [39:32] of MPIDR_EL1.
+          The first reg cell bits [7:0] must be set to bits [39:32] of
+          MPIDR_EL1.
 
-          The second reg cell bits [23:0] must be set to
-          bits [23:0] of MPIDR_EL1.
+          The second reg cell bits [23:0] must be set to bits [23:0] of
+          MPIDR_EL1.
 
         * If cpus node's #address-cells property is set to 1
 
-          The reg cell bits [23:0] must be set to bits [23:0]
-          of MPIDR_EL1.
+          The reg cell bits [23:0] must be set to bits [23:0] of MPIDR_EL1.
 
       All other bits in the reg cells must be set to 0.
 
@@ -273,103 +268,122 @@ properties:
     description:
       The DT specification defines this as 64-bit always, but some 32-bit Arm
       systems have used a 32-bit value which must be supported.
-      Required for systems that have an "enable-method"
-        property value of "spin-table".
 
   cpu-idle-states:
     $ref: /schemas/types.yaml#/definitions/phandle-array
     items:
       maxItems: 1
-    description: |
-      List of phandles to idle state nodes supported
-      by this cpu (see ./idle-states.yaml).
+    description:
+      List of phandles to idle state nodes supported by this cpu (see
+      ./idle-states.yaml).
 
   capacity-dmips-mhz:
     description:
       u32 value representing CPU capacity (see ../cpu/cpu-capacity.txt) in
-      DMIPS/MHz, relative to highest capacity-dmips-mhz
-      in the system.
+      DMIPS/MHz, relative to highest capacity-dmips-mhz in the system.
 
   cci-control-port: true
 
   dynamic-power-coefficient:
     $ref: /schemas/types.yaml#/definitions/uint32
-    description:
-      A u32 value that represents the running time dynamic
-      power coefficient in units of uW/MHz/V^2. The
-      coefficient can either be calculated from power
+    description: >
+      A u32 value that represents the running time dynamic power coefficient in
+      units of uW/MHz/V^2. The coefficient can either be calculated from power
       measurements or derived by analysis.
 
-      The dynamic power consumption of the CPU  is
-      proportional to the square of the Voltage (V) and
-      the clock frequency (f). The coefficient is used to
+      The dynamic power consumption of the CPU  is proportional to the square of
+      the Voltage (V) and the clock frequency (f). The coefficient is used to
       calculate the dynamic power as below -
 
       Pdyn = dynamic-power-coefficient * V^2 * f
 
       where voltage is in V, frequency is in MHz.
 
+  interconnects:
+    minItems: 1
+    maxItems: 3
+
+  nvmem-cells:
+    maxItems: 1
+
+  nvmem-cell-names:
+    const: speed_grade
+
   performance-domains:
     maxItems: 1
-    description:
-      List of phandles and performance domain specifiers, as defined by
-      bindings of the performance domain provider. See also
-      dvfs/performance-domain.yaml.
 
   power-domains:
-    description:
-      List of phandles and PM domain specifiers, as defined by bindings of the
-      PM domain provider (see also ../power_domain.txt).
+    minItems: 1
+    maxItems: 2
 
   power-domain-names:
     description:
-      A list of power domain name strings sorted in the same order as the
-      power-domains property.
-
       For PSCI based platforms, the name corresponding to the index of the PSCI
       PM domain provider, must be "psci". For SCMI based platforms, the name
       corresponding to the index of an SCMI performance domain provider, must be
       "perf".
+    minItems: 1
+    maxItems: 2
+    items:
+      enum: [ psci, perf, cpr ]
 
-  qcom,saw:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description: |
-      Specifies the SAW* node associated with this CPU.
+  resets:
+    maxItems: 1
 
-      Required for systems that have an "enable-method" property
-      value of "qcom,kpss-acc-v1" or "qcom,kpss-acc-v2"
+  arm-supply:
+    deprecated: true
+    description: Use 'cpu-supply' instead
 
-      * arm/msm/qcom,saw2.txt
+  cpu0-supply:
+    deprecated: true
+    description: Use 'cpu-supply' instead
 
-  qcom,acc:
+  mem-supply: true
+
+  proc-supply:
+    deprecated: true
+    description: Use 'cpu-supply' instead
+
+  sram-supply:
+    deprecated: true
+    description: Use 'mem-supply' instead
+
+  mediatek,cci:
     $ref: /schemas/types.yaml#/definitions/phandle
-    description: |
-      Specifies the ACC* node associated with this CPU.
+    description: Link to Mediatek Cache Coherent Interconnect
 
-      Required for systems that have an "enable-method" property
-      value of "qcom,kpss-acc-v1", "qcom,kpss-acc-v2", "qcom,msm8226-smp" or
-      "qcom,msm8916-smp".
+  qcom,saw:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Specifies the SAW node associated with this CPU.
 
-      * arm/msm/qcom,kpss-acc.txt
+  qcom,acc:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Specifies the ACC node associated with this CPU.
+
+  qcom,freq-domain:
+    description: Specifies the QCom CPUFREQ HW associated with the CPU.
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    maxItems: 1
 
   rockchip,pmu:
     $ref: /schemas/types.yaml#/definitions/phandle
-    description: |
+    description: >
       Specifies the syscon node controlling the cpu core power domains.
 
-      Optional for systems that have an "enable-method"
-      property value of "rockchip,rk3066-smp"
-      While optional, it is the preferred way to get access to
-      the cpu-core power-domains.
+      Optional for systems that have an "enable-method" property value of
+      "rockchip,rk3066-smp". While optional, it is the preferred way to get
+      access to the cpu-core power-domains.
 
   secondary-boot-reg:
     $ref: /schemas/types.yaml#/definitions/uint32
-    description: |
+    description: >
       Required for systems that have an "enable-method" property value of
       "brcm,bcm11351-cpu-method", "brcm,bcm23550" or "brcm,bcm-nsp-smp".
 
-      This includes the following SoCs: |
-      BCM11130, BCM11140, BCM11351, BCM28145, BCM28155, BCM21664, BCM23550
+      This includes the following SoCs:
+      BCM11130, BCM11140, BCM11351, BCM28145, BCM28155, BCM21664, BCM23550,
       BCM58522, BCM58525, BCM58535, BCM58622, BCM58623, BCM58625, BCM88312
 
       The secondary-boot-reg property is a u32 value that specifies the
@@ -378,22 +392,66 @@ properties:
       formed by encoding the target CPU id into the low bits of the
       physical start address it should jump to.
 
-if:
-  # If the enable-method property contains one of those values
-  properties:
-    enable-method:
-      contains:
-        enum:
-          - brcm,bcm11351-cpu-method
-          - brcm,bcm23550
-          - brcm,bcm-nsp-smp
-  # and if enable-method is present
-  required:
-    - enable-method
-
-then:
-  required:
-    - secondary-boot-reg
+  thermal-idle:
+    type: object
+
+allOf:
+  - $ref: /schemas/cpu.yaml#
+  - $ref: /schemas/opp/opp-v1.yaml#
+  - if:
+      # If the enable-method property contains one of those values
+      properties:
+        enable-method:
+          contains:
+            enum:
+              - brcm,bcm11351-cpu-method
+              - brcm,bcm23550
+              - brcm,bcm-nsp-smp
+      # and if enable-method is present
+      required:
+        - enable-method
+    then:
+      required:
+        - secondary-boot-reg
+  - if:
+      properties:
+        enable-method:
+          enum:
+            - spin-table
+            - renesas,r9a06g032-smp
+      required:
+        - enable-method
+    then:
+      required:
+        - cpu-release-addr
+  - if:
+      properties:
+        enable-method:
+          enum:
+            - qcom,kpss-acc-v1
+            - qcom,kpss-acc-v2
+            - qcom,msm8226-smp
+            - qcom,msm8916-smp
+      required:
+        - enable-method
+    then:
+      required:
+        - qcom,acc
+        - qcom,saw
+    else:
+      if:
+        # 2 Qualcomm platforms bootloaders need qcom,acc and qcom,saw yet use
+        # "spin-table" or "psci" enable-methods. Disallowing the properties for
+        # all other CPUs is the best we can do as there's not any way to
+        # distinguish these Qualcomm platforms.
+        not:
+          properties:
+            compatible:
+              const: arm,cortex-a53
+      then:
+        properties:
+          qcom,acc: false
+          qcom,saw: false
 
 required:
   - device_type
@@ -403,7 +461,7 @@ required:
 dependencies:
   rockchip,pmu: [enable-method]
 
-additionalProperties: true
+unevaluatedProperties: false
 
 examples:
   - |
diff --git a/Bindings/arm/freescale/fsl,imx51-m4if.yaml b/Bindings/arm/freescale/fsl,imx51-m4if.yaml
new file mode 100644 (file)
index 0000000..1f515be
--- /dev/null
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm/freescale/fsl,imx51-m4if.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Multi Master Multi Memory Interface (M4IF) and Tigerp module
+
+description: collect the imx devices, which only have compatible and reg property
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - fsl,imx51-m4if
+          - fsl,imx51-tigerp
+          - fsl,imx51-aipstz
+          - fsl,imx53-aipstz
+          - fsl,imx7d-pcie-phy
+      - items:
+          - const: fsl,imx53-tigerp
+          - const: fsl,imx51-tigerp
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    m4if@83fd8000 {
+        compatible = "fsl,imx51-m4if";
+        reg = <0x83fd8000 0x1000>;
+    };
diff --git a/Bindings/arm/freescale/m4if.txt b/Bindings/arm/freescale/m4if.txt
deleted file mode 100644 (file)
index 93bd7b8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-* Freescale Multi Master Multi Memory Interface (M4IF) module
-
-Required properties:
-- compatible : Should be "fsl,imx51-m4if"
-- reg : Address and length of the register set for the device
-
-Example:
-
-m4if: m4if@83fd8000 {
-       compatible = "fsl,imx51-m4if";
-       reg = <0x83fd8000 0x1000>;
-};
diff --git a/Bindings/arm/freescale/tigerp.txt b/Bindings/arm/freescale/tigerp.txt
deleted file mode 100644 (file)
index 19e2aad..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-* Freescale Tigerp platform module
-
-Required properties:
-- compatible : Should be "fsl,imx51-tigerp"
-- reg : Address and length of the register set for the device
-
-Example:
-
-tigerp: tigerp@83fa0000 {
-       compatible = "fsl,imx51-tigerp";
-       reg = <0x83fa0000 0x28>;
-};
index 1b90870958a22e49355dd1f932bf3d84cd864b5f..d3b5e6923e4166e35760c17c772aa0195137de93 100644 (file)
@@ -1120,6 +1120,12 @@ properties:
           - const: avnet,sm2s-imx8mp              # SM2S-IMX8PLUS SoM
           - const: fsl,imx8mp
 
+      - description: Boundary Devices Nitrogen8M Plus ENC Carrier Board
+        items:
+          - const: boundary,imx8mp-nitrogen-enc-carrier-board
+          - const: boundary,imx8mp-nitrogen-som
+          - const: fsl,imx8mp
+
       - description: Boundary Device Nitrogen8MP Universal SMARC Carrier Board
         items:
           - const: boundary,imx8mp-nitrogen-smarc-universal-board
@@ -1156,6 +1162,13 @@ properties:
           - const: kontron,imx8mp-osm-s               # Kontron i.MX8MP OSM-S SoM
           - const: fsl,imx8mp
 
+      - description: PHYTEC phyCORE-i.MX8MP FPSC based boards
+        items:
+          - enum:
+              - phytec,imx8mp-libra-rdk-fpsc  # i.MX 8M Plus Libra RDK
+          - const: phytec,imx8mp-phycore-fpsc # phyCORE-i.MX 8M Plus FPSC
+          - const: fsl,imx8mp
+
       - description: PHYTEC phyCORE-i.MX8MP SoM based boards
         items:
           - const: phytec,imx8mp-phyboard-pollux-rdk # phyBOARD-Pollux RDK
@@ -1176,6 +1189,12 @@ properties:
           - const: polyhex,imx8mp-debix-som-a       # Polyhex Debix SOM A
           - const: fsl,imx8mp
 
+      - description: Toradex Boards with SMARC iMX8M Plus Modules
+        items:
+          - const: toradex,smarc-imx8mp-dev # Toradex SMARC iMX8M Plus on Toradex SMARC Development Board
+          - const: toradex,smarc-imx8mp     # Toradex SMARC iMX8M Plus Module
+          - const: fsl,imx8mp
+
       - description: Toradex Boards with Verdin iMX8M Plus Modules
         items:
           - enum:
@@ -1333,6 +1352,22 @@ properties:
               - const: tq,imx8qxp-tqma8xqp     # TQ-Systems GmbH TQMa8XQP SOM (with i.MX8QXP)
               - const: fsl,imx8qxp
 
+      - description:
+          TQMa8XxS is a series of SOM featuring NXP i.MX8X system-on-chip
+          variants. It has the SMARC-2.0 form factor and is designed to be placed on
+          different carrier boards. MB-SMARC-2 is a carrier reference design.
+        oneOf:
+          - items:
+              - enum:
+                  - tq,imx8qxp-tqma8xqps-mb-smarc-2 # TQ-Systems GmbH TQMa8QXPS SOM on MB-SMARC-2
+              - const: tq,imx8qxp-tqma8xqps         # TQ-Systems GmbH TQMa8QXPS SOM
+              - const: fsl,imx8qxp
+          - items:
+              - enum:
+                  - tq,imx8dxp-tqma8xdps-mb-smarc-2 # TQ-Systems GmbH TQMa8XDPS SOM on MB-SMARC-2
+              - const: tq,imx8dxp-tqma8xdps         # TQ-Systems GmbH TQMa8XDPS SOM
+              - const: fsl,imx8dxp
+
       - description: i.MX8ULP based Boards
         items:
           - enum:
@@ -1347,6 +1382,12 @@ properties:
               - fsl,imx93-14x14-evk       # i.MX93 14x14 EVK Board
           - const: fsl,imx93
 
+      - description: i.MX94 based Boards
+        items:
+          - enum:
+              - fsl,imx943-evk            # i.MX943 EVK Board
+          - const: fsl,imx94
+
       - description: i.MX95 based Boards
         items:
           - enum:
@@ -1374,12 +1415,16 @@ properties:
           All SOM and CPU variants use the same device tree hence only one
           compatible is needed. Bootloader disables all features not present
           in the assembled SOC.
+          MBa91xxCA mainboard can be used as starterkit for the SOM
+          soldered on an adapter board or for the connector variant
+          to evaluate RGB display support.
           MBa93xxCA mainboard can be used as starterkit for the SOM
           soldered on an adapter board or for the connector variant
           MBa93xxLA mainboard is a single board computer using the solderable
           SOM variant
         items:
           - enum:
+              - tq,imx93-tqma9352-mba91xxca # TQ-Systems GmbH i.MX93 TQMa93xxCA/LA SOM on MBa91xxCA
               - tq,imx93-tqma9352-mba93xxca # TQ-Systems GmbH i.MX93 TQMa93xxCA/LA SOM on MBa93xxCA
               - tq,imx93-tqma9352-mba93xxla # TQ-Systems GmbH i.MX93 TQMa93xxLA SOM on MBa93xxLA SBC
           - const: tq,imx93-tqma9352        # TQ-Systems GmbH i.MX93 TQMa93xxCA/LA SOM
@@ -1387,8 +1432,10 @@ properties:
 
       - description: PHYTEC phyCORE-i.MX93 SoM based boards
         items:
-          - const: phytec,imx93-phyboard-segin # phyBOARD-Segin with i.MX93
-          - const: phytec,imx93-phycore-som    # phyCORE-i.MX93 SoM
+          - enum:
+              - phytec,imx93-phyboard-nash  # phyBOARD-Nash-i.MX93
+              - phytec,imx93-phyboard-segin # phyBOARD-Segin with i.MX93
+          - const: phytec,imx93-phycore-som # phyCORE-i.MX93 SoM
           - const: fsl,imx93
 
       - description: Variscite VAR-SOM-MX93 based boards
@@ -1403,6 +1450,16 @@ properties:
           - const: kontron,imx93-osm-s    # Kontron OSM-S i.MX93 SoM
           - const: fsl,imx93
 
+      - description:
+          TQMa95xxSA is a series of SOM featuring NXP i.MX95 SoC variants.
+          It has the SMARC form factor and is designed to be placed on
+          different carrier boards. MB-SMARC-2 is a carrier reference design.
+        items:
+          - enum:
+              - tq,imx95-tqma9596sa-mb-smarc-2 # TQ-Systems GmbH i.MX95 TQMa95xxSA SOM on MB-SMARC-2
+          - const: tq,imx95-tqma9596sa         # TQ-Systems GmbH i.MX95 TQMa95xxSA SOM
+          - const: fsl,imx95
+
       - description:
           Freescale Vybrid Platform Device Tree Bindings
 
index 2ee0c740eb56d63cff7767167ee3c640beba0803..c75cd7d29f1aa00927c530e179274575fa5bb9e9 100644 (file)
@@ -25,6 +25,7 @@ properties:
         items:
           - enum:
               - intel,socfpga-agilex5-socdk
+              - intel,socfpga-agilex5-socdk-nand
           - const: intel,socfpga-agilex5
 
 additionalProperties: true
index 108ae5e0185d93976556a03768595961961bcc33..a7e0a72f6e4cb87c444e762fffd3309fba0d517e 100644 (file)
@@ -104,6 +104,10 @@ properties:
           - enum:
               - bananapi,bpi-r4
           - const: mediatek,mt7988a
+      - items:
+          - const: bananapi,bpi-r4-2g5
+          - const: bananapi,bpi-r4
+          - const: mediatek,mt7988a
       - items:
           - enum:
               - mediatek,mt8127-moose
@@ -285,6 +289,13 @@ properties:
           - const: google,steelix-sku393218
           - const: google,steelix
           - const: mediatek,mt8186
+      - description: Google Ponyta
+        items:
+          - enum:
+              - google,ponyta-sku0
+              - google,ponyta-sku1
+          - const: google,ponyta
+          - const: mediatek,mt8186
       - description: Google Rusty (Lenovo 100e Chromebook Gen 4)
         items:
           - const: google,steelix-sku196609
index cbb012e217ab80c1ca88e611e7acc06c6d56fad0..7360a2849b5bd1e4cbadac533c1a7228573288d4 100644 (file)
@@ -191,27 +191,27 @@ examples:
       #size-cells = <0>;
       #address-cells = <1>;
 
-      CPU0: cpu@0 {
+      cpu@0 {
         device_type = "cpu";
         compatible = "arm,cortex-a53";
         reg = <0x0>;
         enable-method = "psci";
-        power-domains = <&CPU_PD0>;
+        power-domains = <&cpu_pd0>;
         power-domain-names = "psci";
       };
 
-      CPU1: cpu@1 {
+      cpu@1 {
         device_type = "cpu";
         compatible = "arm,cortex-a53";
         reg = <0x100>;
         enable-method = "psci";
-        power-domains = <&CPU_PD1>;
+        power-domains = <&cpu_pd1>;
         power-domain-names = "psci";
       };
 
       idle-states {
 
-        CPU_PWRDN: cpu-power-down {
+        cpu_pwrdn: cpu-power-down {
           compatible = "arm,idle-state";
           arm,psci-suspend-param = <0x0000001>;
           entry-latency-us = <10>;
@@ -222,7 +222,7 @@ examples:
 
       domain-idle-states {
 
-        CLUSTER_RET: cluster-retention {
+        cluster_ret: cluster-retention {
           compatible = "domain-idle-state";
           arm,psci-suspend-param = <0x1000011>;
           entry-latency-us = <500>;
@@ -230,7 +230,7 @@ examples:
           min-residency-us = <2000>;
         };
 
-        CLUSTER_PWRDN: cluster-power-down {
+        cluster_pwrdn: cluster-power-down {
           compatible = "domain-idle-state";
           arm,psci-suspend-param = <0x1000031>;
           entry-latency-us = <2000>;
@@ -244,21 +244,21 @@ examples:
       compatible = "arm,psci-1.0";
       method = "smc";
 
-      CPU_PD0: power-domain-cpu0 {
+      cpu_pd0: power-domain-cpu0 {
         #power-domain-cells = <0>;
-        domain-idle-states = <&CPU_PWRDN>;
-        power-domains = <&CLUSTER_PD>;
+        domain-idle-states = <&cpu_pwrdn>;
+        power-domains = <&cluster_pd>;
       };
 
-      CPU_PD1: power-domain-cpu1 {
+      cpu_pd1: power-domain-cpu1 {
         #power-domain-cells = <0>;
-        domain-idle-states =  <&CPU_PWRDN>;
-        power-domains = <&CLUSTER_PD>;
+        domain-idle-states =  <&cpu_pwrdn>;
+        power-domains = <&cluster_pd>;
       };
 
-      CLUSTER_PD: power-domain-cluster {
+      cluster_pd: power-domain-cluster {
         #power-domain-cells = <0>;
-        domain-idle-states = <&CLUSTER_RET>, <&CLUSTER_PWRDN>;
+        domain-idle-states = <&cluster_ret>, <&cluster_pwrdn>;
       };
     };
 ...
index 618a87693ac1dc32b40a2201bc219a4f12e9f3e8..56f78f0f3803fedcb6422efd6adec3bbc81c2e03 100644 (file)
@@ -90,6 +90,7 @@ description: |
         sm6350
         sm6375
         sm7125
+        sm7150
         sm7225
         sm7325
         sm8150
@@ -1020,6 +1021,7 @@ properties:
       - items:
           - enum:
               - sony,pdx201
+              - xiaomi,ginkgo
               - xiaomi,laurel-sprout
           - const: qcom,sm6125
 
@@ -1039,6 +1041,11 @@ properties:
               - xiaomi,joyeuse
           - const: qcom,sm7125
 
+      - items:
+          - enum:
+              - google,sunfish
+          - const: qcom,sm7150
+
       - items:
           - enum:
               - fairphone,fp4
@@ -1123,14 +1130,18 @@ properties:
 
       - items:
           - enum:
-              - lenovo,thinkpad-t14s
+              - lenovo,thinkpad-t14s-lcd
+              - lenovo,thinkpad-t14s-oled
+          - const: lenovo,thinkpad-t14s
           - const: qcom,x1e78100
           - const: qcom,x1e80100
 
       - items:
           - enum:
               - asus,vivobook-s15
+              - asus,zenbook-a14-ux3407ra
               - dell,xps13-9345
+              - hp,elitebook-ultra-g1q
               - hp,omnibook-x14
               - lenovo,yoga-slim7x
               - microsoft,romulus13
@@ -1141,6 +1152,7 @@ properties:
 
       - items:
           - enum:
+              - asus,zenbook-a14-ux3407qa
               - qcom,x1p42100-crd
           - const: qcom,x1p42100
 
index 650fb833d96ef67ea1bba33c0767777378a38fa7..5772d905f390e53b44f9093d32b869a7e0655db6 100644 (file)
@@ -946,6 +946,11 @@ properties:
           - const: radxa,rock-5b
           - const: rockchip,rk3588
 
+      - description: Radxa ROCK 5B+
+        items:
+          - const: radxa,rock-5b-plus
+          - const: rockchip,rk3588
+
       - description: Radxa ROCK 5C
         items:
           - const: radxa,rock-5c
@@ -1047,6 +1052,11 @@ properties:
           - const: rockchip,rk3399-evb
           - const: rockchip,rk3399
 
+      - description: Rockchip RK3399 Industry Evaluation board
+        items:
+          - const: rockchip,rk3399-evb-ind
+          - const: rockchip,rk3399
+
       - description: Rockchip RK3399 Sapphire standalone
         items:
           - const: rockchip,rk3399-sapphire
@@ -1057,6 +1067,11 @@ properties:
           - const: rockchip,rk3399-sapphire-excavator
           - const: rockchip,rk3399
 
+      - description: Rockchip RK3562 Evaluation board 2
+        items:
+          - const: rockchip,rk3562-evb2-v10
+          - const: rockchip,rk3562
+
       - description: Rockchip RK3566 BOX Evaluation Demo board
         items:
           - const: rockchip,rk3566-box-demo
@@ -1074,7 +1089,9 @@ properties:
 
       - description: Rockchip RK3588 Evaluation board
         items:
-          - const: rockchip,rk3588-evb1-v10
+          - enum:
+              - rockchip,rk3588-evb1-v10
+              - rockchip,rk3588-evb2-v10
           - const: rockchip,rk3588
 
       - description: Rockchip RK3588S Evaluation board
@@ -1109,6 +1126,24 @@ properties:
               - rockchip,rv1126
               - rockchip,rv1109
 
+      - description: Theobroma Systems PX30-Cobra
+        items:
+          - enum:
+              - tsd,px30-cobra-ltk050h3146w
+              - tsd,px30-cobra-ltk050h3146w-a2
+              - tsd,px30-cobra-ltk050h3148w
+              - tsd,px30-cobra-ltk500hd1829
+          - const: tsd,px30-cobra
+          - const: rockchip,px30
+
+      - description: Theobroma Systems PX30-PP1516
+        items:
+          - enum:
+              - tsd,px30-pp1516-ltk050h3146w-a2
+              - tsd,px30-pp1516-ltk050h3148w
+          - const: tsd,px30-pp1516
+          - const: rockchip,px30
+
       - description: Theobroma Systems PX30-uQ7 with Haikou baseboard
         items:
           - const: tsd,px30-ringneck-haikou
index 52016a141227bbcd1040a9faa995d48a13ea6fb6..46c1af851be7497a5b1f3707b9ffde1de13dcc42 100644 (file)
@@ -25,6 +25,7 @@ select:
           - rockchip,rk3288-pmu
           - rockchip,rk3368-pmu
           - rockchip,rk3399-pmu
+          - rockchip,rk3562-pmu
           - rockchip,rk3568-pmu
           - rockchip,rk3576-pmu
           - rockchip,rk3588-pmu
@@ -43,6 +44,7 @@ properties:
           - rockchip,rk3288-pmu
           - rockchip,rk3368-pmu
           - rockchip,rk3399-pmu
+          - rockchip,rk3562-pmu
           - rockchip,rk3568-pmu
           - rockchip,rk3576-pmu
           - rockchip,rk3588-pmu
index fab29f95d8e62f5ea75bb0819a9d514e54f88d3c..b3be184c7e563478aa37eb16a69c08ff7f70af29 100644 (file)
@@ -212,6 +212,14 @@ properties:
               - samsung,exynos7-espresso        # Samsung Exynos7 Espresso
           - const: samsung,exynos7
 
+      - description: Exynos7870 based boards
+        items:
+          - enum:
+              - samsung,a2corelte               # Samsung Galaxy A2 Core
+              - samsung,j6lte                   # Samsung Galaxy J6
+              - samsung,on7xelte                # Samsung Galaxy J7 Prime
+          - const: samsung,exynos7870
+
       - description: Exynos7885 based boards
         items:
           - enum:
index 5fee2f38ff25d283c4a1a6d15cf7d3fa55f365b3..408532504a24d5e570c738b16de30dcf8deead6a 100644 (file)
@@ -42,6 +42,10 @@ properties:
               - st,stm32h743i-disco
               - st,stm32h743i-eval
           - const: st,stm32h743
+      - items:
+          - enum:
+              - st,stm32h747i-disco
+          - const: st,stm32h747
       - items:
           - enum:
               - st,stm32h750i-art-pi
@@ -184,6 +188,11 @@ properties:
           - const: phytec,phycore-stm32mp157c-som
           - const: st,stm32mp157
 
+      - description: Ultratronik STM32MP1 SBC based Boards
+        items:
+          - const: ultratronik,stm32mp157c-ultra-fly-sbc
+          - const: st,stm32mp157
+
       - description: ST STM32MP257 based Boards
         items:
           - enum:
index f536cdd2c1a65aedffdfc8475067fdf4aed3f4b8..7807ea613258945d319c2c57f0b44cf83473aca0 100644 (file)
@@ -492,6 +492,11 @@ properties:
           - const: lamobo,lamobo-r1
           - const: allwinner,sun7i-a20
 
+      - description: Liontron H-A133L
+        items:
+          - const: liontron,h-a133l
+          - const: allwinner,sun50i-a100
+
       - description: HAOYU Electronics Marsboard A10
         items:
           - const: haoyu,a10-marsboard
@@ -845,6 +850,11 @@ properties:
           - const: allwinner,r7-tv-dongle
           - const: allwinner,sun5i-a10s
 
+      - description: Radxa Cubie A5E
+        items:
+          - const: radxa,cubie-a5e
+          - const: allwinner,sun55i-a527
+
       - description: Remix Mini PC
         items:
           - const: jide,remix-mini-pc
@@ -966,6 +976,11 @@ properties:
           - const: hechuang,x96-mate
           - const: allwinner,sun50i-h616
 
+      - description: X96Q Pro+
+        items:
+          - const: amediatech,x96q-pro-plus
+          - const: allwinner,sun55i-h728
+
       - description: Xunlong OrangePi
         items:
           - const: xunlong,orangepi
@@ -1081,4 +1096,14 @@ properties:
           - const: xunlong,orangepi-zero3
           - const: allwinner,sun50i-h618
 
+      - description: YuzukiHD Avaota A1
+        items:
+          - const: yuzukihd,avaota-a1
+          - const: allwinner,sun55i-t527
+
+      - description: YuzukiHD Chameleon
+        items:
+          - const: yuzukihd,chameleon
+          - const: allwinner,sun50i-h618
+
 additionalProperties: true
index 65e0ff1fdf1ecdcd2e30b45ddd2e2d966951bcb5..9cae3268a8274fd3a38580939c79a6f21de48a3f 100644 (file)
@@ -52,17 +52,14 @@ properties:
               - nvidia,cardhu-a04
           - const: nvidia,cardhu
           - const: nvidia,tegra30
-      - items:
-          - const: asus,tf201
-          - const: nvidia,tegra30
-      - items:
-          - const: asus,tf300t
-          - const: nvidia,tegra30
-      - items:
-          - const: asus,tf300tg
-          - const: nvidia,tegra30
-      - items:
-          - const: asus,tf700t
+      - description: ASUS Transformers Device family
+        items:
+          - enum:
+              - asus,tf201
+              - asus,tf300t
+              - asus,tf300tg
+              - asus,tf300tl
+              - asus,tf700t
           - const: nvidia,tegra30
       - description: LG Optimus 4X P880
         items:
index 18f155cd06c840eaf47212b51a28f3361e2030bd..bf6003d8fb764a374561de6a650afa2d51e88fd6 100644 (file)
@@ -46,6 +46,7 @@ properties:
       - description: K3 AM625 SoC
         items:
           - enum:
+              - beagle,am62-pocketbeagle2
               - beagle,am625-beagleplay
               - ti,am625-sk
               - ti,am62-lp-sk
@@ -75,6 +76,30 @@ properties:
           - const: toradex,verdin-am62          # Verdin AM62 Module
           - const: ti,am625
 
+      - description: K3 AM62P5 SoC Toradex Verdin Modules and Carrier Boards
+        items:
+          - enum:
+              - toradex,verdin-am62p-nonwifi-dahlia # Verdin AM62P Module on Dahlia
+              - toradex,verdin-am62p-nonwifi-dev    # Verdin AM62P Module on Verdin Development Board
+              - toradex,verdin-am62p-nonwifi-ivy    # Verdin AM62P Module on Ivy
+              - toradex,verdin-am62p-nonwifi-mallow # Verdin AM62P Module on Mallow
+              - toradex,verdin-am62p-nonwifi-yavia  # Verdin AM62P Module on Yavia
+          - const: toradex,verdin-am62p-nonwifi     # Verdin AM62P Module without Wi-Fi / BT
+          - const: toradex,verdin-am62p             # Verdin AM62P Module
+          - const: ti,am62p5
+
+      - description: K3 AM62P5 SoC Toradex Verdin Modules and Carrier Boards with Wi-Fi / BT
+        items:
+          - enum:
+              - toradex,verdin-am62p-wifi-dahlia # Verdin AM62P Wi-Fi / BT Module on Dahlia
+              - toradex,verdin-am62p-wifi-dev    # Verdin AM62P Wi-Fi / BT M. on Verdin Development B.
+              - toradex,verdin-am62p-wifi-ivy    # Verdin AM62P Wi-Fi / BT Module on Ivy
+              - toradex,verdin-am62p-wifi-mallow # Verdin AM62P Wi-Fi / BT Module on Mallow
+              - toradex,verdin-am62p-wifi-yavia  # Verdin AM62P Wi-Fi / BT Module on Yavia
+          - const: toradex,verdin-am62p-wifi     # Verdin AM62P Wi-Fi / BT Module
+          - const: toradex,verdin-am62p          # Verdin AM62P Module
+          - const: ti,am62p5
+
       - description: K3 AM642 SoC
         items:
           - enum:
@@ -139,6 +164,13 @@ properties:
               - ti,j721s2-evm
           - const: ti,j721s2
 
+      - description: K3 J721s2 SoC Phytec SoM based boards
+        items:
+          - enum:
+              - phytec,am68-phyboard-izar
+          - const: phytec,am68-phycore-som
+          - const: ti,j721s2
+
       - description: K3 J722S SoC and Boards
         items:
           - enum:
index 5d5ad5a60451f569e6ef30c924a1964d02e1aa82..fa47b8989bbfb3001ae7bf6b6db4ef16132f047a 100644 (file)
@@ -7,14 +7,13 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: VIA/Wondermedia VT8500 Platforms
 
 maintainers:
-  - Tony Prisk <linux@prisktech.co.nz>
-description: test
+  - Alexey Charkov <alchark@gmail.com>
 
 properties:
   $nodename:
     const: '/'
   compatible:
-    items:
+    oneOf:
       - enum:
           - via,vt8500
           - wm,wm8505
@@ -22,4 +21,9 @@ properties:
           - wm,wm8750
           - wm,wm8850
 
+      - description: VIA APC Rock and Paper boards
+        items:
+          - const: via,apc-rock
+          - const: wm,wm8950
+
 additionalProperties: true
diff --git a/Bindings/ata/ahci-dm816.txt b/Bindings/ata/ahci-dm816.txt
deleted file mode 100644 (file)
index f8c535f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Device tree binding for the TI DM816 AHCI SATA Controller
----------------------------------------------------------
-
-Required properties:
-  - compatible: must be "ti,dm816-ahci"
-  - reg: physical base address and size of the register region used by
-         the controller (as defined by the AHCI 1.1 standard)
-  - interrupts: interrupt specifier (refer to the interrupt binding)
-  - clocks: list of phandle and clock specifier pairs (or only
-            phandles for clock providers with '0' defined for
-            #clock-cells); two clocks must be specified: the functional
-            clock and an external reference clock
-
-Example:
-
-       sata: sata@4a140000 {
-               compatible = "ti,dm816-ahci";
-               reg = <0x4a140000 0x10000>;
-               interrupts = <16>;
-               clocks = <&sysclk5_ck>, <&sata_refclk>;
-       };
diff --git a/Bindings/ata/ahci-st.txt b/Bindings/ata/ahci-st.txt
deleted file mode 100644 (file)
index 909c993..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-STMicroelectronics STi SATA controller
-
-This binding describes a SATA device.
-
-Required properties:
- - compatible     : Must be "st,ahci"
- - reg            : Physical base addresses and length of register sets
- - interrupts     : Interrupt associated with the SATA device
- - interrupt-names :   Associated name must be; "hostc"
- - clocks         : The phandle for the clock
- - clock-names    :   Associated name must be; "ahci_clk"
- - phys                   : The phandle for the PHY port
- - phy-names      :   Associated name must be; "ahci_phy"
-
-Optional properties:
- - resets         : The power-down, soft-reset and power-reset lines of SATA IP
- - reset-names    :   Associated names must be; "pwr-dwn", "sw-rst" and "pwr-rst"
-
-Example:
-
-       /* Example for stih407 family silicon */
-       sata0: sata@9b20000 {
-               compatible      = "st,ahci";
-               reg             = <0x9b20000 0x1000>;
-               interrupts      = <GIC_SPI 159 IRQ_TYPE_NONE>;
-               interrupt-names = "hostc";
-               phys            = <&phy_port0 PHY_TYPE_SATA>;
-               phy-names       = "ahci_phy";
-               resets          = <&powerdown STIH407_SATA0_POWERDOWN>,
-                                 <&softreset STIH407_SATA0_SOFTRESET>,
-                                 <&softreset STIH407_SATA0_PWR_SOFTRESET>;
-               reset-names     = "pwr-dwn", "sw-rst", "pwr-rst";
-               clocks          = <&clk_s_c0_flexgen CLK_ICN_REG>;
-               clock-names     = "ahci_clk";
-       };
diff --git a/Bindings/ata/apm,xgene-ahci.yaml b/Bindings/ata/apm,xgene-ahci.yaml
new file mode 100644 (file)
index 0000000..7dc9428
--- /dev/null
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ata/apm,xgene-ahci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: APM X-Gene 6.0 Gb/s SATA host controller
+
+maintainers:
+  - Rob Herring <robh@kernel.org>
+
+allOf:
+  - $ref: ahci-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - apm,xgene-ahci
+      - apm,xgene-ahci-pcie
+
+  reg:
+    minItems: 4
+    items:
+      - description: AHCI memory resource
+      - description: Host controller core
+      - description: Host controller diagnostic
+      - description: Host controller AXI
+      - description: Host controller MUX
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+  - phys
+  - phy-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    sata@1a400000 {
+        compatible = "apm,xgene-ahci";
+        reg = <0x1a400000 0x1000>,
+              <0x1f220000 0x1000>,
+              <0x1f22d000 0x1000>,
+              <0x1f22e000 0x1000>,
+              <0x1f227000 0x1000>;
+        clocks = <&sataclk 0>;
+        dma-coherent;
+        interrupts = <0x0 0x87 0x4>;
+        phys = <&phy2 0>;
+        phy-names = "sata-phy";
+    };
diff --git a/Bindings/ata/apm-xgene.txt b/Bindings/ata/apm-xgene.txt
deleted file mode 100644 (file)
index 02e690a..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-* APM X-Gene 6.0 Gb/s SATA host controller nodes
-
-SATA host controller nodes are defined to describe on-chip Serial ATA
-controllers. Each SATA controller (pair of ports) have its own node.
-
-Required properties:
-- compatible           : Shall contain:
-  * "apm,xgene-ahci"
-- reg                  : First memory resource shall be the AHCI memory
-                         resource.
-                         Second memory resource shall be the host controller
-                         core memory resource.
-                         Third memory resource shall be the host controller
-                         diagnostic memory resource.
-                         4th memory resource shall be the host controller
-                         AXI memory resource.
-                         5th optional memory resource shall be the host
-                         controller MUX memory resource if required.
-- interrupts           : Interrupt-specifier for SATA host controller IRQ.
-- clocks               : Reference to the clock entry.
-- phys                 : A list of phandles + phy-specifiers, one for each
-                         entry in phy-names.
-- phy-names            : Should contain:
-  * "sata-phy" for the SATA 6.0Gbps PHY
-
-Optional properties:
-- dma-coherent         : Present if dma operations are coherent
-- status               : Shall be "ok" if enabled or "disabled" if disabled.
-                         Default is "ok".
-
-Example:
-               sataclk: sataclk {
-                       compatible = "fixed-clock";
-                       #clock-cells = <1>;
-                       clock-frequency = <100000000>;
-                       clock-output-names = "sataclk";
-               };
-
-               phy2: phy@1f22a000 {
-                       compatible = "apm,xgene-phy";
-                       reg = <0x0 0x1f22a000 0x0 0x100>;
-                       #phy-cells = <1>;
-               };
-
-               phy3: phy@1f23a000 {
-                       compatible = "apm,xgene-phy";
-                       reg = <0x0 0x1f23a000 0x0 0x100>;
-                       #phy-cells = <1>;
-               };
-
-               sata2: sata@1a400000 {
-                       compatible = "apm,xgene-ahci";
-                       reg = <0x0 0x1a400000 0x0 0x1000>,
-                             <0x0 0x1f220000 0x0 0x1000>,
-                             <0x0 0x1f22d000 0x0 0x1000>,
-                             <0x0 0x1f22e000 0x0 0x1000>,
-                             <0x0 0x1f227000 0x0 0x1000>;
-                       interrupts = <0x0 0x87 0x4>;
-                       dma-coherent;
-                       clocks = <&sataclk 0>;
-                       phys = <&phy2 0>;
-                       phy-names = "sata-phy";
-               };
-
-               sata3: sata@1a800000 {
-                       compatible = "apm,xgene-ahci-pcie";
-                       reg = <0x0 0x1a800000 0x0 0x1000>,
-                             <0x0 0x1f230000 0x0 0x1000>,
-                             <0x0 0x1f23d000 0x0 0x1000>,
-                             <0x0 0x1f23e000 0x0 0x1000>,
-                             <0x0 0x1f237000 0x0 0x1000>;
-                       interrupts = <0x0 0x88 0x4>;
-                       dma-coherent;
-                       clocks = <&sataclk 0>;
-                       phys = <&phy3 0>;
-                       phy-names = "sata-phy";
-               };
diff --git a/Bindings/ata/arasan,cf-spear1340.yaml b/Bindings/ata/arasan,cf-spear1340.yaml
new file mode 100644 (file)
index 0000000..4d70174
--- /dev/null
@@ -0,0 +1,70 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ata/arasan,cf-spear1340.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Arasan PATA Compact Flash Controller
+
+maintainers:
+  - Viresh Kumar <viresh.kumar@linaro.org>
+
+properties:
+  compatible:
+    const: arasan,cf-spear1340
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  arasan,broken-udma:
+    description: UDMA mode is unusable
+    type: boolean
+
+  arasan,broken-mwdma:
+    description: MWDMA mode is unusable
+    type: boolean
+
+  arasan,broken-pio:
+    description: PIO mode is unusable
+    type: boolean
+
+  dmas:
+    maxItems: 1
+
+  dma-names:
+    items:
+      - const: data
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+allOf:
+  - if:
+      not:
+        required:
+          - arasan,broken-udma
+          - arasan,broken-mwdma
+    then:
+      required:
+        - dmas
+        - dma-names
+
+examples:
+  - |
+    cf@fc000000 {
+        compatible = "arasan,cf-spear1340";
+        reg = <0xfc000000 0x1000>;
+        interrupts = <12>;
+        dmas = <&dma 23>;
+        dma-names = "data";
+    };
diff --git a/Bindings/ata/cavium,ebt3000-compact-flash.yaml b/Bindings/ata/cavium,ebt3000-compact-flash.yaml
new file mode 100644 (file)
index 0000000..349f289
--- /dev/null
@@ -0,0 +1,59 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ata/cavium,ebt3000-compact-flash.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cavium Compact Flash
+
+maintainers:
+  - Rob Herring <robh@kernel.org>
+
+description:
+  The Cavium Compact Flash device is connected to the Octeon Boot Bus, and is
+  thus a child of the Boot Bus device.  It can read and write industry standard
+  compact flash devices.
+
+properties:
+  compatible:
+    const: cavium,ebt3000-compact-flash
+
+  reg:
+    description: The base address of the CF chip select banks.
+    items:
+      - description: CF chip select bank 0
+      - description: CF chip select bank 1
+
+  cavium,bus-width:
+    description: The width of the connection to the CF devices.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [8, 16]
+
+  cavium,true-ide:
+    description: True IDE mode when present.
+    type: boolean
+
+  cavium,dma-engine-handle:
+    description: A phandle for the DMA Engine connected to this device.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    bus {
+        #address-cells = <2>;
+        #size-cells = <1>;
+
+        compact-flash@5,0 {
+            compatible = "cavium,ebt3000-compact-flash";
+            reg = <5 0 0x10000>, <6 0 0x10000>;
+            cavium,bus-width = <16>;
+            cavium,true-ide;
+            cavium,dma-engine-handle = <&dma0>;
+        };
+    };
diff --git a/Bindings/ata/cavium-compact-flash.txt b/Bindings/ata/cavium-compact-flash.txt
deleted file mode 100644 (file)
index 3bacc8e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-* Compact Flash
-
-The Cavium Compact Flash device is connected to the Octeon Boot Bus,
-and is thus a child of the Boot Bus device.  It can read and write
-industry standard compact flash devices.
-
-Properties:
-- compatible: "cavium,ebt3000-compact-flash";
-
-  Compatibility with many Cavium evaluation boards.
-
-- reg: The base address of the CF chip select banks.  Depending on
-  the device configuration, there may be one or two banks.
-
-- cavium,bus-width: The width of the connection to the CF devices.  Valid
-  values are 8 and 16.
-
-- cavium,true-ide: Optional, if present the CF connection is in True IDE mode.
-
-- cavium,dma-engine-handle: Optional, a phandle for the DMA Engine connected
-  to this device.
-
-Example:
-       compact-flash@5,0 {
-               compatible = "cavium,ebt3000-compact-flash";
-               reg = <5 0 0x10000>, <6 0 0x10000>;
-               cavium,bus-width = <16>;
-               cavium,true-ide;
-               cavium,dma-engine-handle = <&dma0>;
-       };
diff --git a/Bindings/ata/marvell,orion-sata.yaml b/Bindings/ata/marvell,orion-sata.yaml
new file mode 100644 (file)
index 0000000..f656ea9
--- /dev/null
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ata/marvell,orion-sata.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Orion SATA
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+allOf:
+  - $ref: sata-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - marvell,orion-sata
+      - marvell,armada-370-sata
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    minItems: 1
+    maxItems: 8
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: '0'
+      - const: '1'
+      - const: '2'
+      - const: '3'
+      - const: '4'
+      - const: '5'
+      - const: '6'
+      - const: '7'
+
+  interrupts:
+    maxItems: 1
+
+  nr-ports:
+    description:
+      Number of SATA ports in use.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 8
+
+  phys:
+    minItems: 1
+    maxItems: 8
+
+  phy-names:
+    minItems: 1
+    items:
+      - const: port0
+      - const: port1
+      - const: port2
+      - const: port3
+      - const: port4
+      - const: port5
+      - const: port6
+      - const: port7
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - nr-ports
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    sata@80000 {
+        compatible = "marvell,orion-sata";
+        reg = <0x80000 0x5000>;
+        interrupts = <21>;
+        phys = <&sata_phy0>, <&sata_phy1>;
+        phy-names = "port0", "port1";
+        nr-ports = <2>;
+    };
diff --git a/Bindings/ata/marvell.txt b/Bindings/ata/marvell.txt
deleted file mode 100644 (file)
index b460edd..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-* Marvell Orion SATA
-
-Required Properties:
-- compatibility : "marvell,orion-sata" or "marvell,armada-370-sata"
-- reg           : Address range of controller
-- interrupts    : Interrupt controller is using
-- nr-ports      : Number of SATA ports in use.
-
-Optional Properties:
-- phys         : List of phandles to sata phys
-- phy-names    : Should be "0", "1", etc, one number per phandle
-
-Example:
-
-       sata@80000 {
-               compatible = "marvell,orion-sata";
-               reg = <0x80000 0x5000>;
-               interrupts = <21>;
-               phys = <&sata_phy0>, <&sata_phy1>;
-               phy-names = "0", "1";
-               nr-ports = <2>;
-       }
diff --git a/Bindings/ata/pata-arasan.txt b/Bindings/ata/pata-arasan.txt
deleted file mode 100644 (file)
index 872edc1..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-* ARASAN PATA COMPACT FLASH CONTROLLER
-
-Required properties:
-- compatible: "arasan,cf-spear1340"
-- reg: Address range of the CF registers
-- interrupt: Should contain the CF interrupt number
-- clock-frequency: Interface clock rate, in Hz, one of
-       25000000
-       33000000
-       40000000
-       50000000
-       66000000
-       75000000
-      100000000
-      125000000
-      150000000
-      166000000
-      200000000
-
-Optional properties:
-- arasan,broken-udma: if present, UDMA mode is unusable
-- arasan,broken-mwdma: if present, MWDMA mode is unusable
-- arasan,broken-pio: if present, PIO mode is unusable
-- dmas: one DMA channel, as described in bindings/dma/dma.txt
-  required unless both UDMA and MWDMA mode are broken
-- dma-names: the corresponding channel name, must be "data"
-
-Example:
-
-       cf@fc000000 {
-               compatible = "arasan,cf-spear1340";
-               reg = <0xfc000000 0x1000>;
-               interrupt-parent = <&vic1>;
-               interrupts = <12>;
-               dmas = <&dma-controller 23>;
-               dma-names = "data";
-       };
index 13eaa8d9a16e5a4bd43b3e184f9277494acf27a1..b5ecaabfe2e2537afe6093558fb0ab975dcf6058 100644 (file)
@@ -20,6 +20,7 @@ select:
       contains:
         enum:
           - rockchip,rk3568-dwc-ahci
+          - rockchip,rk3576-dwc-ahci
           - rockchip,rk3588-dwc-ahci
   required:
     - compatible
@@ -29,6 +30,7 @@ properties:
     items:
       - enum:
           - rockchip,rk3568-dwc-ahci
+          - rockchip,rk3576-dwc-ahci
           - rockchip,rk3588-dwc-ahci
       - const: snps,dwc-ahci
 
@@ -83,6 +85,7 @@ allOf:
           contains:
             enum:
               - rockchip,rk3568-dwc-ahci
+              - rockchip,rk3576-dwc-ahci
     then:
       properties:
         clocks:
diff --git a/Bindings/ata/st,ahci.yaml b/Bindings/ata/st,ahci.yaml
new file mode 100644 (file)
index 0000000..6e8e4b4
--- /dev/null
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ata/st,ahci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics STi SATA controller
+
+maintainers:
+  - Patrice Chotard <patrice.chotard@foss.st.com>
+
+allOf:
+  - $ref: ahci-common.yaml#
+
+properties:
+  compatible:
+    const: st,ahci
+
+  interrupt-names:
+    items:
+      - const: hostc
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: ahci_clk
+
+  resets:
+    items:
+      - description: Power-down line
+      - description: Soft-reset line
+      - description: Power-reset line
+
+  reset-names:
+    items:
+      - const: pwr-dwn
+      - const: sw-rst
+      - const: pwr-rst
+
+required:
+  - compatible
+  - interrupt-names
+  - phys
+  - phy-names
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/phy/phy.h>
+    #include <dt-bindings/reset/stih407-resets.h>
+    #include <dt-bindings/clock/stih407-clks.h>
+
+    sata@9b20000 {
+        compatible    = "st,ahci";
+        reg           = <0x9b20000 0x1000>;
+        interrupts    = <GIC_SPI 159 IRQ_TYPE_NONE>;
+        interrupt-names = "hostc";
+        phys          = <&phy_port0 PHY_TYPE_SATA>;
+        phy-names     = "sata-phy";
+        resets        = <&powerdown STIH407_SATA0_POWERDOWN>,
+                         <&softreset STIH407_SATA0_SOFTRESET>,
+                         <&softreset STIH407_SATA0_PWR_SOFTRESET>;
+        reset-names   = "pwr-dwn", "sw-rst", "pwr-rst";
+        clocks        = <&clk_s_c0_flexgen CLK_ICN_REG>;
+        clock-names   = "ahci_clk";
+    };
diff --git a/Bindings/ata/ti,dm816-ahci.yaml b/Bindings/ata/ti,dm816-ahci.yaml
new file mode 100644 (file)
index 0000000..d0ff9e7
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ata/ti,dm816-ahci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI DM816 AHCI SATA Controller
+
+maintainers:
+  - Bartosz Golaszewski <brgl@bgdev.pl>
+
+allOf:
+  - $ref: ahci-common.yaml#
+
+properties:
+  compatible:
+    const: ti,dm816-ahci
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: functional clock
+      - description: external reference clock
+
+  ti,hwmods:
+    const: sata
+
+required:
+  - compatible
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    sata@4a140000 {
+        compatible = "ti,dm816-ahci";
+        reg = <0x4a140000 0x10000>;
+        interrupts = <16>;
+        clocks = <&sysclk5_ck>, <&sata_refclk>;
+    };
index a8d40c766dcdfa2d38d31221cdda89b806d206c0..0bea4f5287ce6fc8439972e6aa392b13e7572bf0 100644 (file)
@@ -10,8 +10,8 @@ maintainers:
   - Saurabh Sengar <ssengar@linux.microsoft.com>
 
 description:
-  VMBus is a software bus that implement the protocols for communication
-  between the root or host OS and guest OSs (virtual machines).
+  VMBus is a software bus that implements the protocols for communication
+  between the root or host OS and guest OS'es (virtual machines).
 
 properties:
   compatible:
@@ -25,9 +25,16 @@ properties:
   '#size-cells':
     const: 1
 
+  dma-coherent: true
+
+  interrupts:
+    maxItems: 1
+    description: Interrupt is used to report a message from the host.
+
 required:
   - compatible
   - ranges
+  - interrupts
   - '#address-cells'
   - '#size-cells'
 
@@ -35,6 +42,8 @@ additionalProperties: false
 
 examples:
   - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
     soc {
         #address-cells = <2>;
         #size-cells = <1>;
@@ -49,6 +58,9 @@ examples:
                 #address-cells = <2>;
                 #size-cells = <1>;
                 ranges = <0x0f 0xf0000000 0x0f 0xf0000000 0x10000000>;
+                dma-coherent;
+                interrupt-parent = <&gic>;
+                interrupts = <GIC_PPI 2 IRQ_TYPE_EDGE_RISING>;
             };
         };
     };
index 26362c9006e273a8aa2cd8a0ab39712202d51432..81a65e9f93f1f21f0e1abeacfc228cca2604689b 100644 (file)
@@ -21,6 +21,7 @@ properties:
       - const: nvidia,tegra210-aconnect
       - items:
           - enum:
+              - nvidia,tegra264-aconnect
               - nvidia,tegra234-aconnect
               - nvidia,tegra186-aconnect
               - nvidia,tegra194-aconnect
index d2cbe49f4e15fdc4791c70ae3eaf2589c43bcce7..4de5bb2e5f246950d1253f4ad7f040bd5efb71be 100644 (file)
@@ -28,6 +28,9 @@ select:
 properties:
   compatible:
     items:
+      - enum:
+          - andestech,qilai-ax45mp-cache
+          - renesas,r9a07g043f-ax45mp-cache
       - const: andestech,ax45mp-cache
       - const: cache
 
@@ -65,12 +68,27 @@ required:
   - cache-size
   - cache-unified
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: andestech,qilai-ax45mp-cache
+
+    then:
+      properties:
+        cache-sets:
+          const: 2048
+        cache-size:
+          const: 2097152
+
 examples:
   - |
     #include <dt-bindings/interrupt-controller/irq.h>
 
     cache-controller@13400000 {
-        compatible = "andestech,ax45mp-cache", "cache";
+        compatible = "renesas,r9a07g043f-ax45mp-cache", "andestech,ax45mp-cache",
+                     "cache";
         reg = <0x13400000 0x100000>;
         interrupts = <508 IRQ_TYPE_LEVEL_HIGH>;
         cache-line-size = <64>;
diff --git a/Bindings/cache/marvell,feroceon-cache.txt b/Bindings/cache/marvell,feroceon-cache.txt
deleted file mode 100644 (file)
index 0d244b9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-* Marvell Feroceon Cache
-
-Required properties:
-- compatible : Should be either "marvell,feroceon-cache" or
-              "marvell,kirkwood-cache".
-
-Optional properties:
-- reg        : Address of the L2 cache control register. Mandatory for
-              "marvell,kirkwood-cache", not used by "marvell,feroceon-cache"
-
-
-Example:
-               l2: l2-cache@20128 {
-                       compatible = "marvell,kirkwood-cache";
-                       reg = <0x20128 0x4>;
-               };
diff --git a/Bindings/cache/marvell,kirkwood-cache.yaml b/Bindings/cache/marvell,kirkwood-cache.yaml
new file mode 100644 (file)
index 0000000..2bfa3c2
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/cache/marvell,kirkwood-cache.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Feroceon/Kirkwood Cache
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    enum:
+      - marvell,feroceon-cache
+      - marvell,kirkwood-cache
+
+  reg:
+    maxItems: 1
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: marvell,kirkwood-cache
+    then:
+      required:
+        - reg
+    else:
+      properties:
+        reg: false
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    l2-cache@20128 {
+        compatible = "marvell,kirkwood-cache";
+        reg = <0x20128 0x4>;
+    };
diff --git a/Bindings/cache/marvell,tauros2-cache.txt b/Bindings/cache/marvell,tauros2-cache.txt
deleted file mode 100644 (file)
index 31af1cb..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-* Marvell Tauros2 Cache
-
-Required properties:
-- compatible : Should be "marvell,tauros2-cache".
-- marvell,tauros2-cache-features : Specify the features supported for the
-  tauros2 cache.
-  The features including
-    CACHE_TAUROS2_PREFETCH_ON       (1 << 0)
-    CACHE_TAUROS2_LINEFILL_BURST8   (1 << 1)
-  The definition can be found at
-  arch/arm/include/asm/hardware/cache-tauros2.h
-
-Example:
-       L2: l2-cache {
-               compatible = "marvell,tauros2-cache";
-               marvell,tauros2-cache-features = <0x3>;
-       };
diff --git a/Bindings/cache/marvell,tauros2-cache.yaml b/Bindings/cache/marvell,tauros2-cache.yaml
new file mode 100644 (file)
index 0000000..9f7f0d0
--- /dev/null
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/cache/marvell,tauros2-cache.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Tauros2 Cache
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    const: marvell,tauros2-cache
+
+  marvell,tauros2-cache-features:
+    description: >
+      Specify the features supported for the tauros2 cache. The features include:
+
+        - CACHE_TAUROS2_PREFETCH_ON (1 << 0)
+        - CACHE_TAUROS2_LINEFILL_BURST8 (1 << 1)
+
+      The definition can be found at arch/arm/include/asm/hardware/cache-tauros2.h
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 0x3
+
+required:
+  - compatible
+  - marvell,tauros2-cache-features
+
+additionalProperties: false
+
+examples:
+  - |
+    l2-cache {
+        compatible = "marvell,tauros2-cache";
+        marvell,tauros2-cache-features = <0x3>;
+    };
index e5effbb4a606b1ba2d9507b6ca72cd1bdff51344..37e3ebd554874f0fbbb8956a718dcb717ee82155 100644 (file)
@@ -40,6 +40,7 @@ properties:
       - qcom,sm8450-llcc
       - qcom,sm8550-llcc
       - qcom,sm8650-llcc
+      - qcom,sm8750-llcc
       - qcom,x1e80100-llcc
 
   reg:
@@ -274,6 +275,7 @@ allOf:
               - qcom,sm8450-llcc
               - qcom,sm8550-llcc
               - qcom,sm8650-llcc
+              - qcom,sm8750-llcc
     then:
       properties:
         reg:
index 7e8cebe215846c11126f2dd9371660cb4e5c4594..579bacb66f3481e8fd481d7da2f5943664d7c894 100644 (file)
@@ -39,6 +39,7 @@ properties:
           - const: cache
       - items:
           - enum:
+              - eswin,eic7700-l3-cache
               - starfive,jh7100-ccache
               - starfive,jh7110-ccache
           - const: sifive,ccache0
@@ -55,10 +56,10 @@ properties:
     enum: [2, 3]
 
   cache-sets:
-    enum: [1024, 2048]
+    enum: [1024, 2048, 4096]
 
   cache-size:
-    const: 2097152
+    enum: [2097152, 4194304]
 
   cache-unified: true
 
@@ -89,6 +90,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - eswin,eic7700-l3-cache
               - sifive,fu740-c000-ccache
               - starfive,jh7100-ccache
               - starfive,jh7110-ccache
@@ -108,6 +110,22 @@ allOf:
             Must contain entries for DirError, DataError and DataFail signals.
           maxItems: 3
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: eswin,eic7700-l3-cache
+
+    then:
+      properties:
+        cache-size:
+          const: 4194304
+
+    else:
+      properties:
+        cache-size:
+          const: 2097152
+
   - if:
       properties:
         compatible:
@@ -122,11 +140,31 @@ allOf:
         cache-sets:
           const: 2048
 
-    else:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - microchip,mpfs-ccache
+              - sifive,fu540-c000-ccache
+
+    then:
       properties:
         cache-sets:
           const: 1024
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - eswin,eic7700-l3-cache
+
+    then:
+      properties:
+        cache-sets:
+          const: 4096
+
   - if:
       properties:
         compatible:
index 70369bd633e40c07c4dae16fc96b2412a9a08111..7fcd55d468d49c0c0c28d5f455b077e4ab3673ef 100644 (file)
@@ -25,6 +25,7 @@ properties:
       - const: allwinner,sun50i-a64-de2-clk
       - const: allwinner,sun50i-h5-de2-clk
       - const: allwinner,sun50i-h6-de3-clk
+      - const: allwinner,sun50i-h616-de33-clk
       - items:
           - const: allwinner,sun8i-r40-de2-clk
           - const: allwinner,sun8i-h3-de2-clk
diff --git a/Bindings/clock/altr_socfpga.txt b/Bindings/clock/altr_socfpga.txt
deleted file mode 100644 (file)
index f72e80e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Device Tree Clock bindings for Altera's SoCFPGA platform
-
-This binding uses the common clock binding[1].
-
-[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Required properties:
-- compatible : shall be one of the following:
-       "altr,socfpga-pll-clock" - for a PLL clock
-       "altr,socfpga-perip-clock" - The peripheral clock divided from the
-               PLL clock.
-       "altr,socfpga-gate-clk" - Clocks that directly feed peripherals and
-               can get gated.
-
-- reg : shall be the control register offset from CLOCK_MANAGER's base for the clock.
-- clocks : shall be the input parent clock phandle for the clock. This is
-       either an oscillator or a pll output.
-- #clock-cells : from common clock binding, shall be set to 0.
-
-Optional properties:
-- fixed-divider : If clocks have a fixed divider value, use this property.
-- clk-gate : For "socfpga-gate-clk", clk-gate contains the gating register
-        and the bit index.
-- div-reg : For "socfpga-gate-clk" and "socfpga-periph-clock", div-reg contains
-       the divider register, bit shift, and width.
-- clk-phase : For the sdmmc_clk, contains the value of the clock phase that controls
-       the SDMMC CIU clock. The first value is the clk_sample(smpsel), and the second
-       value is the cclk_in_drv(drvsel). The clk-phase is used to enable the correct
-       hold/delay times that is needed for the SD/MMC CIU clock. The values of both
-       can be 0-315 degrees, in 45 degree increments.
diff --git a/Bindings/clock/brcm,bcm2835-aux-clock.txt b/Bindings/clock/brcm,bcm2835-aux-clock.txt
deleted file mode 100644 (file)
index 4acfc8f..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-Broadcom BCM2835 auxiliary peripheral support
-
-This binding uses the common clock binding:
-    Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-The auxiliary peripherals (UART, SPI1, and SPI2) have a small register
-area controlling clock gating to the peripherals, and providing an IRQ
-status register.
-
-Required properties:
-- compatible:  Should be "brcm,bcm2835-aux"
-- #clock-cells:        Should be <1>. The permitted clock-specifier values can be
-                 found in include/dt-bindings/clock/bcm2835-aux.h
-- reg:         Specifies base physical address and size of the registers
-- clocks:      The parent clock phandle
-
-Example:
-
-       clocks: cprman@7e101000 {
-               compatible = "brcm,bcm2835-cprman";
-               #clock-cells = <1>;
-               reg = <0x7e101000 0x2000>;
-               clocks = <&clk_osc>;
-       };
-
-       aux: aux@7e215004 {
-               compatible = "brcm,bcm2835-aux";
-               #clock-cells = <1>;
-               reg = <0x7e215000 0x8>;
-               clocks = <&clocks BCM2835_CLOCK_VPU>;
-       };
diff --git a/Bindings/clock/brcm,bcm2835-aux-clock.yaml b/Bindings/clock/brcm,bcm2835-aux-clock.yaml
new file mode 100644 (file)
index 0000000..0f4050f
--- /dev/null
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/brcm,bcm2835-aux-clock.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM2835 auxiliary peripheral clock
+
+maintainers:
+  - Stefan Wahren <wahrenst@gmx.net>
+  - Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
+
+description:
+  The auxiliary peripherals (UART, SPI1, and SPI2) have a small register
+  area controlling clock gating to the peripherals, and providing an IRQ
+  status register.
+
+properties:
+  compatible:
+    const: brcm,bcm2835-aux
+
+  reg:
+    maxItems: 1
+
+  "#clock-cells":
+    const: 1
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - "#clock-cells"
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/bcm2835.h>
+    clock@7e215000 {
+        compatible = "brcm,bcm2835-aux";
+        reg = <0x7e215000 0x8>;
+        #clock-cells = <1>;
+        clocks = <&clocks BCM2835_CLOCK_VPU>;
+    };
diff --git a/Bindings/clock/fsl,vf610-ccm.yaml b/Bindings/clock/fsl,vf610-ccm.yaml
new file mode 100644 (file)
index 0000000..29ae5be
--- /dev/null
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/fsl,vf610-ccm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Clock for Freescale Vybrid VF610 SOC
+
+description:
+  The clock consumer should specify the desired clock by having the clock
+  ID in its "clocks" phandle cell. See include/dt-bindings/clock/vf610-clock.h
+  for the full list of VF610 clock IDs
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,vf610-ccm
+
+  reg:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+
+  clocks:
+    items:
+      - description: external crystal oscillator 32KHz, recommended
+      - description: external crystal oscillator 24MHz, recommended
+      - description: audio
+      - description: enet
+    minItems: 2
+
+  clock-names:
+    items:
+      - const: sxosc
+      - const: fxosc
+      - const: enet_ext
+      - const: audio_ext
+    minItems: 2
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@4006b000 {
+        compatible = "fsl,vf610-ccm";
+        reg = <0x4006b000 0x1000>;
+        #clock-cells = <1>;
+        clocks = <&sxosc>, <&fxosc>;
+        clock-names = "sxosc", "fxosc";
+    };
+
diff --git a/Bindings/clock/maxim,max77686.txt b/Bindings/clock/maxim,max77686.txt
deleted file mode 100644 (file)
index c10849e..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-Binding for Maxim MAX77686/MAX77802/MAX77620 32k clock generator block
-
-This is a part of device tree bindings of MAX77686/MAX77802/MAX77620
-multi-function device. More information can be found in MFD DT binding
-doc as follows:
-       bindings/mfd/max77686.txt for MAX77686 and
-       bindings/mfd/max77802.txt for MAX77802 and
-       bindings/mfd/max77620.txt for MAX77620.
-
-The MAX77686 contains three 32.768khz clock outputs that can be controlled
-(gated/ungated) over I2C. Clocks are defined as preprocessor macros in
-dt-bindings/clock/maxim,max77686.h.
-
-
-The MAX77802 contains two 32.768khz clock outputs that can be controlled
-(gated/ungated) over I2C. Clocks are defined as preprocessor macros in
-dt-bindings/clock/maxim,max77802.h.
-
-The MAX77686 contains one 32.768khz clock outputs that can be controlled
-(gated/ungated) over I2C. Clocks are defined as preprocessor macros in
-dt-bindings/clock/maxim,max77620.h.
-
-Following properties should be presend in main device node of the MFD chip.
-
-Required properties:
-
-- #clock-cells: from common clock binding; shall be set to 1.
-
-Optional properties:
-- clock-output-names: From common clock binding.
-
-Each clock is assigned an identifier and client nodes can use this identifier
-to specify the clock which they consume. Following indices are allowed:
-    - 0: 32khz_ap clock (max77686, max77802), 32khz_out0 (max77620)
-    - 1: 32khz_cp clock (max77686, max77802),
-    - 2: 32khz_pmic clock (max77686).
-
-Clocks are defined as preprocessor macros in above dt-binding header for
-respective chips.
-
-Example:
-
-1. With MAX77686:
-
-#include <dt-bindings/clock/maxim,max77686.h>
-/* ... */
-
-       Node of the MFD chip
-               max77686: max77686@9 {
-                       compatible = "maxim,max77686";
-                       interrupt-parent = <&wakeup_eint>;
-                       interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
-                       reg = <0x09>;
-                       #clock-cells = <1>;
-
-                       /* ... */
-               };
-
-       Clock consumer node
-
-               foo@0 {
-                       compatible = "bar,foo";
-                       /* ... */
-                       clock-names = "my-clock";
-                       clocks = <&max77686 MAX77686_CLK_PMIC>;
-               };
-
-2. With MAX77802:
-
-#include <dt-bindings/clock/maxim,max77802.h>
-/* ... */
-
-       Node of the MFD chip
-               max77802: max77802@9 {
-                       compatible = "maxim,max77802";
-                       interrupt-parent = <&wakeup_eint>;
-                       interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
-                       reg = <0x09>;
-                       #clock-cells = <1>;
-
-                       /* ... */
-               };
-
-       Clock consumer node
-
-               foo@0 {
-                       compatible = "bar,foo";
-                       /* ... */
-                       clock-names = "my-clock";
-                       clocks = <&max77802 MAX77802_CLK_32K_AP>;
-               };
-
-
-3. With MAX77620:
-
-#include <dt-bindings/clock/maxim,max77620.h>
-/* ... */
-
-       Node of the MFD chip
-               max77620: max77620@3c {
-                       compatible = "maxim,max77620";
-                       reg = <0x3c>;
-                       #clock-cells = <1>;
-                       /* ... */
-               };
-
-       Clock consumer node
-
-               foo@0 {
-                       compatible = "bar,foo";
-                       /* ... */
-                       clock-names = "my-clock";
-                       clocks = <&max77620 MAX77620_CLK_32K_OUT0>;
-               };
index 2985c8c717d72888dd49f1f6249a9e2594d8a38d..5403242545ab12a7736ed4fbac26008aa955c724 100644 (file)
@@ -52,6 +52,9 @@ properties:
   '#clock-cells':
     const: 1
 
+  '#reset-cells':
+    const: 1
+
 required:
   - compatible
   - reg
index 340c7e5cf98024dedad6d7db4fea10e9f8077419..5f7738d6835c4ba999402e163fc85a07e3a47a5a 100644 (file)
@@ -14,6 +14,7 @@ description: |
   domains on Qualcomm SoCs.
 
   See also::
+    include/dt-bindings/clock/qcom,sm6350-videocc.h
     include/dt-bindings/clock/qcom,videocc-sc7180.h
     include/dt-bindings/clock/qcom,videocc-sc7280.h
     include/dt-bindings/clock/qcom,videocc-sdm845.h
@@ -26,6 +27,7 @@ properties:
       - qcom,sc7180-videocc
       - qcom,sc7280-videocc
       - qcom,sdm845-videocc
+      - qcom,sm6350-videocc
       - qcom,sm8150-videocc
       - qcom,sm8250-videocc
 
@@ -87,6 +89,24 @@ allOf:
             - const: bi_tcxo
             - const: bi_tcxo_ao
 
+  - if:
+      properties:
+        compatible:
+          enum:
+            - qcom,sm6350-videocc
+    then:
+      properties:
+        clocks:
+          items:
+            - description: Video AHB clock from GCC
+            - description: Board XO source
+            - description: Sleep Clock source
+        clock-names:
+          items:
+            - const: iface
+            - const: bi_tcxo
+            - const: sleep_clk
+
   - if:
       properties:
         compatible:
index c3fe76abd549d20e74818a63f86694da44435bd1..f261445bf341c0e60216ee04551919d631a0c75f 100644 (file)
@@ -4,13 +4,13 @@
 $id: http://devicetree.org/schemas/clock/renesas,rzv2h-cpg.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Renesas RZ/{G3E,V2H(P)} Clock Pulse Generator (CPG)
+title: Renesas RZ/{G3E,V2H(P),V2N} Clock Pulse Generator (CPG)
 
 maintainers:
   - Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
 
 description:
-  On Renesas RZ/{G3E,V2H(P)} SoCs, the CPG (Clock Pulse Generator) handles
+  On Renesas RZ/{G3E,V2H(P),V2N} SoCs, the CPG (Clock Pulse Generator) handles
   generation and control of clock signals for the IP modules, generation and
   control of resets, and control over booting, low power consumption and power
   supply domains.
@@ -19,6 +19,7 @@ properties:
   compatible:
     enum:
       - renesas,r9a09g047-cpg # RZ/G3E
+      - renesas,r9a09g056-cpg # RZ/V2N
       - renesas,r9a09g057-cpg # RZ/V2H
 
   reg:
index 3330b272747475286759f96410fa81a67a0f3e19..6961a68098f4309433c40b8442426bb341b1b785 100644 (file)
@@ -8,6 +8,7 @@ title: Samsung ExynosAuto v920 SoC clock controller
 
 maintainers:
   - Sunyeal Hong <sunyeal.hong@samsung.com>
+  - Shin Son <shin.son@samsung.com>
   - Chanwoo Choi <cw00.choi@samsung.com>
   - Krzysztof Kozlowski <krzk@kernel.org>
   - Sylwester Nawrocki <s.nawrocki@samsung.com>
@@ -32,6 +33,9 @@ properties:
   compatible:
     enum:
       - samsung,exynosautov920-cmu-top
+      - samsung,exynosautov920-cmu-cpucl0
+      - samsung,exynosautov920-cmu-cpucl1
+      - samsung,exynosautov920-cmu-cpucl2
       - samsung,exynosautov920-cmu-peric0
       - samsung,exynosautov920-cmu-peric1
       - samsung,exynosautov920-cmu-misc
@@ -69,6 +73,71 @@ allOf:
           items:
             - const: oscclk
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - samsung,exynosautov920-cmu-cpucl0
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (38.4 MHz)
+            - description: CMU_CPUCL0 SWITCH clock (from CMU_TOP)
+            - description: CMU_CPUCL0 CLUSTER clock (from CMU_TOP)
+            - description: CMU_CPUCL0 DBG clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: switch
+            - const: cluster
+            - const: dbg
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - samsung,exynosautov920-cmu-cpucl1
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (38.4 MHz)
+            - description: CMU_CPUCL1 SWITCH clock (from CMU_TOP)
+            - description: CMU_CPUCL1 CLUSTER clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: switch
+            - const: cluster
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - samsung,exynosautov920-cmu-cpucl2
+
+    then:
+      properties:
+        clocks:
+          items:
+            - description: External reference clock (38.4 MHz)
+            - description: CMU_CPUCL2 SWITCH clock (from CMU_TOP)
+            - description: CMU_CPUCL2 CLUSTER clock (from CMU_TOP)
+
+        clock-names:
+          items:
+            - const: oscclk
+            - const: switch
+            - const: cluster
+
   - if:
       properties:
         compatible:
index 59ef41adb539bba315cf89071a94c6a174432a79..379ce3e9e391c5ad92722f723e7febbf2b2a6d2c 100644 (file)
@@ -11,10 +11,18 @@ maintainers:
 
 properties:
   compatible:
-    enum:
-      - sophgo,cv1800-clk
-      - sophgo,cv1810-clk
-      - sophgo,sg2000-clk
+    oneOf:
+      - enum:
+          - sophgo,cv1800b-clk
+          - sophgo,cv1812h-clk
+          - sophgo,sg2000-clk
+      - items:
+          - const: sophgo,sg2002-clk
+          - const: sophgo,sg2000-clk
+      - const: sophgo,cv1800-clk
+        deprecated: true
+      - const: sophgo,cv1810-clk
+        deprecated: true
 
   reg:
     maxItems: 1
diff --git a/Bindings/clock/sophgo,sg2044-clk.yaml b/Bindings/clock/sophgo,sg2044-clk.yaml
new file mode 100644 (file)
index 0000000..272e58b
--- /dev/null
@@ -0,0 +1,99 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/sophgo,sg2044-clk.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo SG2044 Clock Controller
+
+maintainers:
+  - Inochi Amaoto <inochiama@gmail.com>
+
+description: |
+  The Sophgo SG2044 clock controller requires an external oscillator
+  as input clock.
+
+  All available clocks are defined as preprocessor macros in
+  include/dt-bindings/clock/sophgo,sg2044-clk.h
+
+properties:
+  compatible:
+    const: sophgo,sg2044-clk
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: fpll0
+      - description: fpll1
+      - description: fpll2
+      - description: dpll0
+      - description: dpll1
+      - description: dpll2
+      - description: dpll3
+      - description: dpll4
+      - description: dpll5
+      - description: dpll6
+      - description: dpll7
+      - description: mpll0
+      - description: mpll1
+      - description: mpll2
+      - description: mpll3
+      - description: mpll4
+      - description: mpll5
+
+  clock-names:
+    items:
+      - const: fpll0
+      - const: fpll1
+      - const: fpll2
+      - const: dpll0
+      - const: dpll1
+      - const: dpll2
+      - const: dpll3
+      - const: dpll4
+      - const: dpll5
+      - const: dpll6
+      - const: dpll7
+      - const: mpll0
+      - const: mpll1
+      - const: mpll2
+      - const: mpll3
+      - const: mpll4
+      - const: mpll5
+
+  '#clock-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/sophgo,sg2044-pll.h>
+
+    clock-controller@50002000 {
+      compatible = "sophgo,sg2044-clk";
+      reg = <0x50002000 0x1000>;
+      #clock-cells = <1>;
+      clocks = <&syscon CLK_FPLL0>, <&syscon CLK_FPLL1>,
+               <&syscon CLK_FPLL2>, <&syscon CLK_DPLL0>,
+               <&syscon CLK_DPLL1>, <&syscon CLK_DPLL2>,
+               <&syscon CLK_DPLL3>, <&syscon CLK_DPLL4>,
+               <&syscon CLK_DPLL5>, <&syscon CLK_DPLL6>,
+               <&syscon CLK_DPLL7>, <&syscon CLK_MPLL0>,
+               <&syscon CLK_MPLL1>, <&syscon CLK_MPLL2>,
+               <&syscon CLK_MPLL3>, <&syscon CLK_MPLL4>,
+               <&syscon CLK_MPLL5>;
+      clock-names = "fpll0", "fpll1", "fpll2", "dpll0",
+                    "dpll1", "dpll2", "dpll3", "dpll4",
+                    "dpll5", "dpll6", "dpll7", "mpll0",
+                    "mpll1", "mpll2", "mpll3", "mpll4",
+                    "mpll5";
+    };
diff --git a/Bindings/clock/spacemit,k1-pll.yaml b/Bindings/clock/spacemit,k1-pll.yaml
new file mode 100644 (file)
index 0000000..06bafd6
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/spacemit,k1-pll.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SpacemiT K1 PLL
+
+maintainers:
+  - Haylen Chu <heylenay@4d2.org>
+
+properties:
+  compatible:
+    const: spacemit,k1-pll
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    description: External 24MHz oscillator
+
+  spacemit,mpmu:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to the "Main PMU (MPMU)" syscon. It is used to check PLL
+      lock status.
+
+  "#clock-cells":
+    const: 1
+    description:
+      See <dt-bindings/clock/spacemit,k1-syscon.h> for valid indices.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - spacemit,mpmu
+  - "#clock-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    clock-controller@d4090000 {
+        compatible = "spacemit,k1-pll";
+        reg = <0xd4090000 0x1000>;
+        clocks = <&vctcxo_24m>;
+        spacemit,mpmu = <&sysctl_mpmu>;
+        #clock-cells = <1>;
+    };
diff --git a/Bindings/clock/st,stm32h7-rcc.txt b/Bindings/clock/st,stm32h7-rcc.txt
deleted file mode 100644 (file)
index cac24ee..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-STMicroelectronics STM32H7 Reset and Clock Controller
-=====================================================
-
-The RCC IP is both a reset and a clock controller.
-
-Please refer to clock-bindings.txt for common clock controller binding usage.
-Please also refer to reset.txt for common reset controller binding usage.
-
-Required properties:
-- compatible: Should be:
-  "st,stm32h743-rcc"
-
-- reg: should be register base and length as documented in the
-  datasheet
-
-- #reset-cells: 1, see below
-
-- #clock-cells : from common clock binding; shall be set to 1
-
-- clocks: External oscillator clock phandle
-  - high speed external clock signal (HSE)
-  - low speed external clock signal (LSE)
-  - external I2S clock (I2S_CKIN)
-
-Optional properties:
-- st,syscfg: phandle for pwrcfg, mandatory to disable/enable backup domain
-  write protection (RTC clock).
-
-Example:
-
-       rcc: reset-clock-controller@58024400 {
-               compatible = "st,stm32h743-rcc", "st,stm32-rcc";
-               reg = <0x58024400 0x400>;
-               #reset-cells = <1>;
-               #clock-cells = <1>;
-               clocks = <&clk_hse>, <&clk_lse>, <&clk_i2s_ckin>;
-
-               st,syscfg = <&pwrcfg>;
-};
-
-The peripheral clock consumer should specify the desired clock by
-having the clock ID in its "clocks" phandle cell.
-
-Example:
-
-               timer5: timer@40000c00 {
-                       compatible = "st,stm32-timer";
-                       reg = <0x40000c00 0x400>;
-                       interrupts = <50>;
-                       clocks = <&rcc TIM5_CK>;
-               };
-
-Specifying softreset control of devices
-=======================================
-
-Device nodes should specify the reset channel required in their "resets"
-property, containing a phandle to the reset device node and an index specifying
-which channel to use.
-The index is the bit number within the RCC registers bank, starting from RCC
-base address.
-It is calculated as: index = register_offset / 4 * 32 + bit_offset.
-Where bit_offset is the bit offset within the register.
-
-For example, for CRC reset:
-  crc = AHB4RSTR_offset / 4 * 32 + CRCRST_bit_offset = 0x88 / 4 * 32 + 19 = 1107
-
-Example:
-
-       timer2 {
-               resets  = <&rcc STM32H7_APB1L_RESET(TIM2)>;
-       };
index 0129bd0ba4b3fe7d99fc838c021e1a041caee162..9d058c00ab3d59110f5e576986758bac1f9d9c21 100644 (file)
@@ -8,7 +8,8 @@ title: T-HEAD TH1520 AP sub-system clock controller
 
 description: |
   The T-HEAD TH1520 AP sub-system clock controller configures the
-  CPU, DPU, GMAC and TEE PLLs.
+  CPU, DPU, GMAC and TEE PLLs. Additionally the VO subsystem configures
+  the clock gates for the HDMI, MIPI and the GPU.
 
   SoC reference manual
   https://openbeagle.org/beaglev-ahead/beaglev-ahead/-/blob/main/docs/TH1520%20System%20User%20Manual.pdf
@@ -20,14 +21,24 @@ maintainers:
 
 properties:
   compatible:
-    const: thead,th1520-clk-ap
+    enum:
+      - thead,th1520-clk-ap
+      - thead,th1520-clk-vo
 
   reg:
     maxItems: 1
 
   clocks:
     items:
-      - description: main oscillator (24MHz)
+      - description: |
+          One input clock:
+          - For "thead,th1520-clk-ap": the clock input must be the 24 MHz
+            main oscillator.
+          - For "thead,th1520-clk-vo": the clock input must be the VIDEO_PLL,
+            which is configured by the AP clock controller. According to the
+            TH1520 manual, VIDEO_PLL is a Silicon Creations Sigma-Delta PLL
+            (integer PLL) typically running at 792 MHz (FOUTPOSTDIV), with
+            a maximum FOUTVCO of 2376 MHz.
 
   "#clock-cells":
     const: 1
diff --git a/Bindings/clock/vf610-clock.txt b/Bindings/clock/vf610-clock.txt
deleted file mode 100644 (file)
index 109ffa3..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-* Clock bindings for Freescale Vybrid VF610 SOC
-
-Required properties:
-- compatible: Should be "fsl,vf610-ccm"
-- reg: Address and length of the register set
-- #clock-cells: Should be <1>
-
-Optional properties:
-- clocks: list of clock identifiers which are external input clocks to the
-       given clock controller. Please refer the next section to find
-       the input clocks for a given controller.
-- clock-names: list of names of clocks which are external input clocks to the
-       given clock controller.
-
-Input clocks for top clock controller:
-       - sxosc (external crystal oscillator 32KHz, recommended)
-       - fxosc (external crystal oscillator 24MHz, recommended)
-       - audio_ext
-       - enet_ext
-
-The clock consumer should specify the desired clock by having the clock
-ID in its "clocks" phandle cell. See include/dt-bindings/clock/vf610-clock.h
-for the full list of VF610 clock IDs.
-
-Examples:
-
-clks: ccm@4006b000 {
-       compatible = "fsl,vf610-ccm";
-       reg = <0x4006b000 0x1000>;
-       #clock-cells = <1>;
-       clocks = <&sxosc>, <&fxosc>;
-       clock-names = "sxosc", "fxosc";
-};
-
-uart1: serial@40028000 {
-       compatible = "fsl,vf610-uart";
-       reg = <0x40028000 0x1000>;
-       interrupts = <0 62 0x04>;
-       clocks = <&clks VF610_CLK_UART1>;
-       clock-names = "ipg";
-};
diff --git a/Bindings/counter/fsl,ftm-quaddec.yaml b/Bindings/counter/fsl,ftm-quaddec.yaml
new file mode 100644 (file)
index 0000000..384ca63
--- /dev/null
@@ -0,0 +1,36 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/counter/fsl,ftm-quaddec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: FlexTimer Quadrature decoder counter
+
+description:
+  Exposes a simple counter for the quadrature decoder mode.
+
+maintainers:
+  - Frank Li <Frank.li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,ftm-quaddec
+
+  reg:
+    maxItems: 1
+
+  big-endian: true
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    counter@29d0000 {
+       compatible = "fsl,ftm-quaddec";
+       reg = <0x29d0000 0x10000>;
+       big-endian;
+    };
diff --git a/Bindings/counter/ftm-quaddec.txt b/Bindings/counter/ftm-quaddec.txt
deleted file mode 100644 (file)
index 4d18cd7..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-FlexTimer Quadrature decoder counter
-
-This driver exposes a simple counter for the quadrature decoder mode.
-
-Required properties:
-- compatible:          Must be "fsl,ftm-quaddec".
-- reg:                 Must be set to the memory region of the flextimer.
-
-Optional property:
-- big-endian:          Access the device registers in big-endian mode.
-
-Example:
-               counter0: counter@29d0000 {
-                       compatible = "fsl,ftm-quaddec";
-                       reg = <0x0 0x29d0000 0x0 0x10000>;
-                       big-endian;
-                       status = "disabled";
-               };
diff --git a/Bindings/cpu/cpu-topology.txt b/Bindings/cpu/cpu-topology.txt
deleted file mode 100644 (file)
index 9bd530a..0000000
+++ /dev/null
@@ -1,553 +0,0 @@
-===========================================
-CPU topology binding description
-===========================================
-
-===========================================
-1 - Introduction
-===========================================
-
-In a SMP system, the hierarchy of CPUs is defined through three entities that
-are used to describe the layout of physical CPUs in the system:
-
-- socket
-- cluster
-- core
-- thread
-
-The bottom hierarchy level sits at core or thread level depending on whether
-symmetric multi-threading (SMT) is supported or not.
-
-For instance in a system where CPUs support SMT, "cpu" nodes represent all
-threads existing in the system and map to the hierarchy level "thread" above.
-In systems where SMT is not supported "cpu" nodes represent all cores present
-in the system and map to the hierarchy level "core" above.
-
-CPU topology bindings allow one to associate cpu nodes with hierarchical groups
-corresponding to the system hierarchy; syntactically they are defined as device
-tree nodes.
-
-Currently, only ARM/RISC-V intend to use this cpu topology binding but it may be
-used for any other architecture as well.
-
-The cpu nodes, as per bindings defined in [4], represent the devices that
-correspond to physical CPUs and are to be mapped to the hierarchy levels.
-
-A topology description containing phandles to cpu nodes that are not compliant
-with bindings standardized in [4] is therefore considered invalid.
-
-===========================================
-2 - cpu-map node
-===========================================
-
-The ARM/RISC-V CPU topology is defined within the cpu-map node, which is a direct
-child of the cpus node and provides a container where the actual topology
-nodes are listed.
-
-- cpu-map node
-
-       Usage: Optional - On SMP systems provide CPUs topology to the OS.
-                         Uniprocessor systems do not require a topology
-                         description and therefore should not define a
-                         cpu-map node.
-
-       Description: The cpu-map node is just a container node where its
-                    subnodes describe the CPU topology.
-
-       Node name must be "cpu-map".
-
-       The cpu-map node's parent node must be the cpus node.
-
-       The cpu-map node's child nodes can be:
-
-       - one or more cluster nodes or
-       - one or more socket nodes in a multi-socket system
-
-       Any other configuration is considered invalid.
-
-The cpu-map node can only contain 4 types of child nodes:
-
-- socket node
-- cluster node
-- core node
-- thread node
-
-whose bindings are described in paragraph 3.
-
-The nodes describing the CPU topology (socket/cluster/core/thread) can
-only be defined within the cpu-map node and every core/thread in the
-system must be defined within the topology.  Any other configuration is
-invalid and therefore must be ignored.
-
-===========================================
-2.1 - cpu-map child nodes naming convention
-===========================================
-
-cpu-map child nodes must follow a naming convention where the node name
-must be "socketN", "clusterN", "coreN", "threadN" depending on the node type
-(ie socket/cluster/core/thread) (where N = {0, 1, ...} is the node number; nodes
-which are siblings within a single common parent node must be given a unique and
-sequential N value, starting from 0).
-cpu-map child nodes which do not share a common parent node can have the same
-name (ie same number N as other cpu-map child nodes at different device tree
-levels) since name uniqueness will be guaranteed by the device tree hierarchy.
-
-===========================================
-3 - socket/cluster/core/thread node bindings
-===========================================
-
-Bindings for socket/cluster/cpu/thread nodes are defined as follows:
-
-- socket node
-
-        Description: must be declared within a cpu-map node, one node
-                     per physical socket in the system. A system can
-                     contain single or multiple physical socket.
-                     The association of sockets and NUMA nodes is beyond
-                     the scope of this bindings, please refer [2] for
-                     NUMA bindings.
-
-       This node is optional for a single socket system.
-
-       The socket node name must be "socketN" as described in 2.1 above.
-       A socket node can not be a leaf node.
-
-       A socket node's child nodes must be one or more cluster nodes.
-
-       Any other configuration is considered invalid.
-
-- cluster node
-
-        Description: must be declared within a cpu-map node, one node
-                     per cluster. A system can contain several layers of
-                     clustering within a single physical socket and cluster
-                     nodes can be contained in parent cluster nodes.
-
-       The cluster node name must be "clusterN" as described in 2.1 above.
-       A cluster node can not be a leaf node.
-
-       A cluster node's child nodes must be:
-
-       - one or more cluster nodes; or
-       - one or more core nodes
-
-       Any other configuration is considered invalid.
-
-- core node
-
-       Description: must be declared in a cluster node, one node per core in
-                    the cluster. If the system does not support SMT, core
-                    nodes are leaf nodes, otherwise they become containers of
-                    thread nodes.
-
-       The core node name must be "coreN" as described in 2.1 above.
-
-       A core node must be a leaf node if SMT is not supported.
-
-       Properties for core nodes that are leaf nodes:
-
-       - cpu
-               Usage: required
-               Value type: <phandle>
-               Definition: a phandle to the cpu node that corresponds to the
-                           core node.
-
-       If a core node is not a leaf node (CPUs supporting SMT) a core node's
-       child nodes can be:
-
-       - one or more thread nodes
-
-       Any other configuration is considered invalid.
-
-- thread node
-
-       Description: must be declared in a core node, one node per thread
-                    in the core if the system supports SMT. Thread nodes are
-                    always leaf nodes in the device tree.
-
-       The thread node name must be "threadN" as described in 2.1 above.
-
-       A thread node must be a leaf node.
-
-       A thread node must contain the following property:
-
-       - cpu
-               Usage: required
-               Value type: <phandle>
-               Definition: a phandle to the cpu node that corresponds to
-                           the thread node.
-
-===========================================
-4 - Example dts
-===========================================
-
-Example 1 (ARM 64-bit, 16-cpu system, two clusters of clusters in a single
-physical socket):
-
-cpus {
-       #size-cells = <0>;
-       #address-cells = <2>;
-
-       cpu-map {
-               socket0 {
-                       cluster0 {
-                               cluster0 {
-                                       core0 {
-                                               thread0 {
-                                                       cpu = <&CPU0>;
-                                               };
-                                               thread1 {
-                                                       cpu = <&CPU1>;
-                                               };
-                                       };
-
-                                       core1 {
-                                               thread0 {
-                                                       cpu = <&CPU2>;
-                                               };
-                                               thread1 {
-                                                       cpu = <&CPU3>;
-                                               };
-                                       };
-                               };
-
-                               cluster1 {
-                                       core0 {
-                                               thread0 {
-                                                       cpu = <&CPU4>;
-                                               };
-                                               thread1 {
-                                                       cpu = <&CPU5>;
-                                               };
-                                       };
-
-                                       core1 {
-                                               thread0 {
-                                                       cpu = <&CPU6>;
-                                               };
-                                               thread1 {
-                                                       cpu = <&CPU7>;
-                                               };
-                                       };
-                               };
-                       };
-
-                       cluster1 {
-                               cluster0 {
-                                       core0 {
-                                               thread0 {
-                                                       cpu = <&CPU8>;
-                                               };
-                                               thread1 {
-                                                       cpu = <&CPU9>;
-                                               };
-                                       };
-                                       core1 {
-                                               thread0 {
-                                                       cpu = <&CPU10>;
-                                               };
-                                               thread1 {
-                                                       cpu = <&CPU11>;
-                                               };
-                                       };
-                               };
-
-                               cluster1 {
-                                       core0 {
-                                               thread0 {
-                                                       cpu = <&CPU12>;
-                                               };
-                                               thread1 {
-                                                       cpu = <&CPU13>;
-                                               };
-                                       };
-                                       core1 {
-                                               thread0 {
-                                                       cpu = <&CPU14>;
-                                               };
-                                               thread1 {
-                                                       cpu = <&CPU15>;
-                                               };
-                                       };
-                               };
-                       };
-               };
-       };
-
-       CPU0: cpu@0 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x0 0x0>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU1: cpu@1 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x0 0x1>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU2: cpu@100 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x0 0x100>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU3: cpu@101 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x0 0x101>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU4: cpu@10000 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x0 0x10000>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU5: cpu@10001 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x0 0x10001>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU6: cpu@10100 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x0 0x10100>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU7: cpu@10101 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x0 0x10101>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU8: cpu@100000000 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x1 0x0>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU9: cpu@100000001 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x1 0x1>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU10: cpu@100000100 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x1 0x100>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU11: cpu@100000101 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x1 0x101>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU12: cpu@100010000 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x1 0x10000>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU13: cpu@100010001 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x1 0x10001>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU14: cpu@100010100 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x1 0x10100>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-
-       CPU15: cpu@100010101 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a57";
-               reg = <0x1 0x10101>;
-               enable-method = "spin-table";
-               cpu-release-addr = <0 0x20000000>;
-       };
-};
-
-Example 2 (ARM 32-bit, dual-cluster, 8-cpu system, no SMT):
-
-cpus {
-       #size-cells = <0>;
-       #address-cells = <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>;
-                       };
-               };
-       };
-
-       CPU0: cpu@0 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a15";
-               reg = <0x0>;
-       };
-
-       CPU1: cpu@1 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a15";
-               reg = <0x1>;
-       };
-
-       CPU2: cpu@2 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a15";
-               reg = <0x2>;
-       };
-
-       CPU3: cpu@3 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a15";
-               reg = <0x3>;
-       };
-
-       CPU4: cpu@100 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a7";
-               reg = <0x100>;
-       };
-
-       CPU5: cpu@101 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a7";
-               reg = <0x101>;
-       };
-
-       CPU6: cpu@102 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a7";
-               reg = <0x102>;
-       };
-
-       CPU7: cpu@103 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a7";
-               reg = <0x103>;
-       };
-};
-
-Example 3: HiFive Unleashed (RISC-V 64 bit, 4 core system)
-
-{
-       #address-cells = <2>;
-       #size-cells = <2>;
-       compatible = "sifive,fu540g", "sifive,fu500";
-       model = "sifive,hifive-unleashed-a00";
-
-       ...
-       cpus {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               cpu-map {
-                       socket0 {
-                               cluster0 {
-                                       core0 {
-                                               cpu = <&CPU1>;
-                                       };
-                                       core1 {
-                                               cpu = <&CPU2>;
-                                       };
-                                       core2 {
-                                               cpu0 = <&CPU2>;
-                                       };
-                                       core3 {
-                                               cpu0 = <&CPU3>;
-                                       };
-                               };
-                       };
-               };
-
-               CPU1: cpu@1 {
-                       device_type = "cpu";
-                       compatible = "sifive,rocket0", "riscv";
-                       reg = <0x1>;
-               }
-
-               CPU2: cpu@2 {
-                       device_type = "cpu";
-                       compatible = "sifive,rocket0", "riscv";
-                       reg = <0x2>;
-               }
-               CPU3: cpu@3 {
-                       device_type = "cpu";
-                       compatible = "sifive,rocket0", "riscv";
-                       reg = <0x3>;
-               }
-               CPU4: cpu@4 {
-                       device_type = "cpu";
-                       compatible = "sifive,rocket0", "riscv";
-                       reg = <0x4>;
-               }
-       }
-};
-===============================================================================
-[1] ARM Linux kernel documentation
-    Documentation/devicetree/bindings/arm/cpus.yaml
-[2] Devicetree NUMA binding description
-    Documentation/devicetree/bindings/numa.txt
-[3] RISC-V Linux kernel documentation
-    Documentation/devicetree/bindings/riscv/cpus.yaml
-[4] https://www.devicetree.org/specifications/
diff --git a/Bindings/cpufreq/cpufreq-mediatek.txt b/Bindings/cpufreq/cpufreq-mediatek.txt
deleted file mode 100644 (file)
index e0a4ba5..0000000
+++ /dev/null
@@ -1,250 +0,0 @@
-Binding for MediaTek's CPUFreq driver
-=====================================
-
-Required properties:
-- clocks: A list of phandle + clock-specifier pairs for the clocks listed in clock names.
-- clock-names: Should contain the following:
-       "cpu"           - The multiplexer for clock input of CPU cluster.
-       "intermediate"  - A parent of "cpu" clock which is used as "intermediate" clock
-                         source (usually MAINPLL) when the original CPU PLL is under
-                         transition and not stable yet.
-       Please refer to Documentation/devicetree/bindings/clock/clock-bindings.txt for
-       generic clock consumer properties.
-- operating-points-v2: Please refer to Documentation/devicetree/bindings/opp/opp-v2.yaml
-       for detail.
-- proc-supply: Regulator for Vproc of CPU cluster.
-
-Optional properties:
-- sram-supply: Regulator for Vsram of CPU cluster. When present, the cpufreq driver
-              needs to do "voltage tracking" to step by step scale up/down Vproc and
-              Vsram to fit SoC specific needs. When absent, the voltage scaling
-              flow is handled by hardware, hence no software "voltage tracking" is
-              needed.
-- mediatek,cci:
-       Used to confirm the link status between cpufreq and mediatek cci. Because
-       cpufreq and mediatek cci could share the same regulator in some MediaTek SoCs.
-       To prevent the issue of high frequency and low voltage, we need to use this
-       property to make sure mediatek cci is ready.
-       For details of mediatek cci, please refer to
-       Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml
-- #cooling-cells:
-       For details, please refer to
-       Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml
-
-Example 1 (MT7623 SoC):
-
-       cpu_opp_table: opp_table {
-               compatible = "operating-points-v2";
-               opp-shared;
-
-               opp-598000000 {
-                       opp-hz = /bits/ 64 <598000000>;
-                       opp-microvolt = <1050000>;
-               };
-
-               opp-747500000 {
-                       opp-hz = /bits/ 64 <747500000>;
-                       opp-microvolt = <1050000>;
-               };
-
-               opp-1040000000 {
-                       opp-hz = /bits/ 64 <1040000000>;
-                       opp-microvolt = <1150000>;
-               };
-
-               opp-1196000000 {
-                       opp-hz = /bits/ 64 <1196000000>;
-                       opp-microvolt = <1200000>;
-               };
-
-               opp-1300000000 {
-                       opp-hz = /bits/ 64 <1300000000>;
-                       opp-microvolt = <1300000>;
-               };
-       };
-
-       cpu0: cpu@0 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a7";
-               reg = <0x0>;
-               clocks = <&infracfg CLK_INFRA_CPUSEL>,
-                        <&apmixedsys CLK_APMIXED_MAINPLL>;
-               clock-names = "cpu", "intermediate";
-               operating-points-v2 = <&cpu_opp_table>;
-               #cooling-cells = <2>;
-       };
-       cpu@1 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a7";
-               reg = <0x1>;
-               operating-points-v2 = <&cpu_opp_table>;
-       };
-       cpu@2 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a7";
-               reg = <0x2>;
-               operating-points-v2 = <&cpu_opp_table>;
-       };
-       cpu@3 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a7";
-               reg = <0x3>;
-               operating-points-v2 = <&cpu_opp_table>;
-       };
-
-Example 2 (MT8173 SoC):
-       cpu_opp_table_a: opp_table_a {
-               compatible = "operating-points-v2";
-               opp-shared;
-
-               opp-507000000 {
-                       opp-hz = /bits/ 64 <507000000>;
-                       opp-microvolt = <859000>;
-               };
-
-               opp-702000000 {
-                       opp-hz = /bits/ 64 <702000000>;
-                       opp-microvolt = <908000>;
-               };
-
-               opp-1001000000 {
-                       opp-hz = /bits/ 64 <1001000000>;
-                       opp-microvolt = <983000>;
-               };
-
-               opp-1105000000 {
-                       opp-hz = /bits/ 64 <1105000000>;
-                       opp-microvolt = <1009000>;
-               };
-
-               opp-1183000000 {
-                       opp-hz = /bits/ 64 <1183000000>;
-                       opp-microvolt = <1028000>;
-               };
-
-               opp-1404000000 {
-                       opp-hz = /bits/ 64 <1404000000>;
-                       opp-microvolt = <1083000>;
-               };
-
-               opp-1508000000 {
-                       opp-hz = /bits/ 64 <1508000000>;
-                       opp-microvolt = <1109000>;
-               };
-
-               opp-1573000000 {
-                       opp-hz = /bits/ 64 <1573000000>;
-                       opp-microvolt = <1125000>;
-               };
-       };
-
-       cpu_opp_table_b: opp_table_b {
-               compatible = "operating-points-v2";
-               opp-shared;
-
-               opp-507000000 {
-                       opp-hz = /bits/ 64 <507000000>;
-                       opp-microvolt = <828000>;
-               };
-
-               opp-702000000 {
-                       opp-hz = /bits/ 64 <702000000>;
-                       opp-microvolt = <867000>;
-               };
-
-               opp-1001000000 {
-                       opp-hz = /bits/ 64 <1001000000>;
-                       opp-microvolt = <927000>;
-               };
-
-               opp-1209000000 {
-                       opp-hz = /bits/ 64 <1209000000>;
-                       opp-microvolt = <968000>;
-               };
-
-               opp-1404000000 {
-                       opp-hz = /bits/ 64 <1007000000>;
-                       opp-microvolt = <1028000>;
-               };
-
-               opp-1612000000 {
-                       opp-hz = /bits/ 64 <1612000000>;
-                       opp-microvolt = <1049000>;
-               };
-
-               opp-1807000000 {
-                       opp-hz = /bits/ 64 <1807000000>;
-                       opp-microvolt = <1089000>;
-               };
-
-               opp-1989000000 {
-                       opp-hz = /bits/ 64 <1989000000>;
-                       opp-microvolt = <1125000>;
-               };
-       };
-
-       cpu0: cpu@0 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a53";
-               reg = <0x000>;
-               enable-method = "psci";
-               cpu-idle-states = <&CPU_SLEEP_0>;
-               clocks = <&infracfg CLK_INFRA_CA53SEL>,
-                        <&apmixedsys CLK_APMIXED_MAINPLL>;
-               clock-names = "cpu", "intermediate";
-               operating-points-v2 = <&cpu_opp_table_a>;
-       };
-
-       cpu1: cpu@1 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a53";
-               reg = <0x001>;
-               enable-method = "psci";
-               cpu-idle-states = <&CPU_SLEEP_0>;
-               clocks = <&infracfg CLK_INFRA_CA53SEL>,
-                        <&apmixedsys CLK_APMIXED_MAINPLL>;
-               clock-names = "cpu", "intermediate";
-               operating-points-v2 = <&cpu_opp_table_a>;
-       };
-
-       cpu2: cpu@100 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a72";
-               reg = <0x100>;
-               enable-method = "psci";
-               cpu-idle-states = <&CPU_SLEEP_0>;
-               clocks = <&infracfg CLK_INFRA_CA72SEL>,
-                        <&apmixedsys CLK_APMIXED_MAINPLL>;
-               clock-names = "cpu", "intermediate";
-               operating-points-v2 = <&cpu_opp_table_b>;
-       };
-
-       cpu3: cpu@101 {
-               device_type = "cpu";
-               compatible = "arm,cortex-a72";
-               reg = <0x101>;
-               enable-method = "psci";
-               cpu-idle-states = <&CPU_SLEEP_0>;
-               clocks = <&infracfg CLK_INFRA_CA72SEL>,
-                        <&apmixedsys CLK_APMIXED_MAINPLL>;
-               clock-names = "cpu", "intermediate";
-               operating-points-v2 = <&cpu_opp_table_b>;
-       };
-
-       &cpu0 {
-               proc-supply = <&mt6397_vpca15_reg>;
-       };
-
-       &cpu1 {
-               proc-supply = <&mt6397_vpca15_reg>;
-       };
-
-       &cpu2 {
-               proc-supply = <&da9211_vcpu_reg>;
-               sram-supply = <&mt6397_vsramca7_reg>;
-       };
-
-       &cpu3 {
-               proc-supply = <&da9211_vcpu_reg>;
-               sram-supply = <&mt6397_vsramca7_reg>;
-       };
diff --git a/Bindings/crypto/amd,ccp-seattle-v1a.yaml b/Bindings/crypto/amd,ccp-seattle-v1a.yaml
new file mode 100644 (file)
index 0000000..32bf3a1
--- /dev/null
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/amd,ccp-seattle-v1a.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: AMD Cryptographic Coprocessor (ccp)
+
+maintainers:
+  - Tom Lendacky <thomas.lendacky@amd.com>
+
+properties:
+  compatible:
+    const: amd,ccp-seattle-v1a
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  dma-coherent: true
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    crypto@e0100000 {
+        compatible = "amd,ccp-seattle-v1a";
+        reg = <0xe0100000 0x10000>;
+        interrupts = <0 3 4>;
+        dma-coherent;
+    };
diff --git a/Bindings/crypto/amd-ccp.txt b/Bindings/crypto/amd-ccp.txt
deleted file mode 100644 (file)
index d87579d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-* AMD Cryptographic Coprocessor driver (ccp)
-
-Required properties:
-- compatible: Should be "amd,ccp-seattle-v1a"
-- reg: Address and length of the register set for the device
-- interrupts: Should contain the CCP interrupt
-
-Optional properties:
-- dma-coherent: Present if dma operations are coherent
-
-Example:
-       ccp@e0100000 {
-               compatible = "amd,ccp-seattle-v1a";
-               reg = <0 0xe0100000 0 0x10000>;
-               interrupt-parent = <&gic>;
-               interrupts = <0 3 4>;
-       };
diff --git a/Bindings/crypto/artpec6-crypto.txt b/Bindings/crypto/artpec6-crypto.txt
deleted file mode 100644 (file)
index d9cca48..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Axis crypto engine with PDMA interface.
-
-Required properties:
-- compatible : Should be one of the following strings:
-       "axis,artpec6-crypto" for the version in the Axis ARTPEC-6 SoC
-       "axis,artpec7-crypto" for the version in the Axis ARTPEC-7 SoC.
-- reg: Base address and size for the PDMA register area.
-- interrupts: Interrupt handle for the PDMA interrupt line.
-
-Example:
-
-crypto@f4264000 {
-       compatible = "axis,artpec6-crypto";
-       reg = <0xf4264000 0x1000>;
-       interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
-};
diff --git a/Bindings/crypto/axis,artpec6-crypto.yaml b/Bindings/crypto/axis,artpec6-crypto.yaml
new file mode 100644 (file)
index 0000000..c91f81e
--- /dev/null
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/crypto/axis,artpec6-crypto.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Axis ARTPEC6 crypto engine with PDMA interface
+
+maintainers:
+  - Lars Persson <lars.persson@axis.com>
+
+properties:
+  compatible:
+    enum:
+      - axis,artpec6-crypto
+      - axis,artpec7-crypto
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    crypto@f4264000 {
+        compatible = "axis,artpec6-crypto";
+        reg = <0xf4264000 0x1000>;
+        interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+    };
diff --git a/Bindings/crypto/brcm,spu-crypto.txt b/Bindings/crypto/brcm,spu-crypto.txt
deleted file mode 100644 (file)
index 29b6007..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-The Broadcom Secure Processing Unit (SPU) hardware supports symmetric
-cryptographic offload for Broadcom SoCs. A SoC may have multiple SPU hardware
-blocks.
-
-Required properties:
-- compatible: Should be one of the following:
-  brcm,spum-crypto - for devices with SPU-M hardware
-  brcm,spu2-crypto - for devices with SPU2 hardware
-  brcm,spu2-v2-crypto - for devices with enhanced SPU2 hardware features like SHA3
-  and Rabin Fingerprint support
-  brcm,spum-nsp-crypto - for the Northstar Plus variant of the SPU-M hardware
-
-- reg: Should contain SPU registers location and length.
-- mboxes: The mailbox channel to be used to communicate with the SPU.
-  Mailbox channels correspond to DMA rings on the device.
-
-Example:
-       crypto@612d0000 {
-               compatible = "brcm,spum-crypto";
-               reg = <0 0x612d0000 0 0x900>;
-               mboxes = <&pdc0 0>;
-       };
diff --git a/Bindings/crypto/brcm,spum-crypto.yaml b/Bindings/crypto/brcm,spum-crypto.yaml
new file mode 100644 (file)
index 0000000..9a5fb61
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/brcm,spum-crypto.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom SPU Crypto Offload
+
+maintainers:
+  - Rob Rice <rob.rice@broadcom.com>
+
+description:
+  The Broadcom Secure Processing Unit (SPU) hardware supports symmetric
+  cryptographic offload for Broadcom SoCs. A SoC may have multiple SPU hardware
+  blocks.
+
+properties:
+  compatible:
+    enum:
+      - brcm,spum-crypto
+      - brcm,spu2-crypto
+      - brcm,spu2-v2-crypto     # enhanced SPU2 hardware features like SHA3 and Rabin Fingerprint support
+      - brcm,spum-nsp-crypto    # Northstar Plus variant of the SPU-M hardware
+
+  reg:
+    maxItems: 1
+
+  mboxes:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - mboxes
+
+additionalProperties: false
+
+examples:
+  - |
+    crypto@612d0000 {
+        compatible = "brcm,spum-crypto";
+        reg = <0x612d0000 0x900>;
+        mboxes = <&pdc0 0>;
+    };
index e879bc0be8e221266bf8a5fb46f66fad4512b791..9f8e6689cd94787766cd5bd25461719e741d5b3b 100644 (file)
@@ -83,6 +83,8 @@ properties:
       by SNVS ONOFF, the driver can report the status of POWER key and wakeup
       system if pressed after system suspend.
 
+    $ref: /schemas/input/input.yaml
+
     properties:
       compatible:
         const: fsl,sec-v4.0-pwrkey
@@ -111,6 +113,9 @@ properties:
         maxItems: 1
         default: 116
 
+      power-off-time-sec:
+        enum: [0, 5, 10, 15]
+
     required:
       - compatible
       - interrupts
index f0c4a7c83568a41c6ec06f11a57b0ea3c306d8fc..75afa441e019e17a0ed8e76af208272f959e50ec 100644 (file)
@@ -38,7 +38,9 @@ properties:
   compatible:
     oneOf:
       - items:
-          - const: fsl,sec-v5.4
+          - enum:
+              - fsl,sec-v5.4
+              - fsl,sec-v6.0
           - const: fsl,sec-v5.0
           - const: fsl,sec-v4.0
       - items:
@@ -93,6 +95,12 @@ patternProperties:
     properties:
       compatible:
         oneOf:
+          - items:
+              - const: fsl,sec-v6.0-job-ring
+              - const: fsl,sec-v5.2-job-ring
+              - const: fsl,sec-v5.0-job-ring
+              - const: fsl,sec-v4.4-job-ring
+              - const: fsl,sec-v4.0-job-ring
           - items:
               - const: fsl,sec-v5.4-job-ring
               - const: fsl,sec-v5.0-job-ring
diff --git a/Bindings/crypto/fsl-sec6.txt b/Bindings/crypto/fsl-sec6.txt
deleted file mode 100644 (file)
index 73b0eb9..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-SEC 6 is as Freescale's Cryptographic Accelerator and Assurance Module (CAAM).
-Currently Freescale powerpc chip C29X is embedded with SEC 6.
-SEC 6 device tree binding include:
-   -SEC 6 Node
-   -Job Ring Node
-   -Full Example
-
-=====================================================================
-SEC 6 Node
-
-Description
-
-    Node defines the base address of the SEC 6 block.
-    This block specifies the address range of all global
-    configuration registers for the SEC 6 block.
-    For example, In C293, we could see three SEC 6 node.
-
-PROPERTIES
-
-   - compatible
-      Usage: required
-      Value type: <string>
-      Definition: Must include "fsl,sec-v6.0".
-
-   - fsl,sec-era
-      Usage: optional
-      Value type: <u32>
-      Definition: A standard property. Define the 'ERA' of the SEC
-          device.
-
-   - #address-cells
-       Usage: required
-       Value type: <u32>
-       Definition: A standard property.  Defines the number of cells
-           for representing physical addresses in child nodes.
-
-   - #size-cells
-       Usage: required
-       Value type: <u32>
-       Definition: A standard property.  Defines the number of cells
-           for representing the size of physical addresses in
-           child nodes.
-
-   - reg
-      Usage: required
-      Value type: <prop-encoded-array>
-      Definition: A standard property.  Specifies the physical
-          address and length of the SEC 6 configuration registers.
-
-   - ranges
-       Usage: required
-       Value type: <prop-encoded-array>
-       Definition: A standard property.  Specifies the physical address
-           range of the SEC 6.0 register space (-SNVS not included).  A
-           triplet that includes the child address, parent address, &
-           length.
-
-   Note: All other standard properties (see the Devicetree Specification)
-   are allowed but are optional.
-
-EXAMPLE
-       crypto@a0000 {
-               compatible = "fsl,sec-v6.0";
-               fsl,sec-era = <6>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-               reg = <0xa0000 0x20000>;
-               ranges = <0 0xa0000 0x20000>;
-       };
-
-=====================================================================
-Job Ring (JR) Node
-
-    Child of the crypto node defines data processing interface to SEC 6
-    across the peripheral bus for purposes of processing
-    cryptographic descriptors. The specified address
-    range can be made visible to one (or more) cores.
-    The interrupt defined for this node is controlled within
-    the address range of this node.
-
-  - compatible
-      Usage: required
-      Value type: <string>
-      Definition: Must include "fsl,sec-v6.0-job-ring".
-
-  - reg
-      Usage: required
-      Value type: <prop-encoded-array>
-      Definition: Specifies a two JR parameters:  an offset from
-           the parent physical address and the length the JR registers.
-
-   - interrupts
-      Usage: required
-      Value type: <prop_encoded-array>
-      Definition:  Specifies the interrupts generated by this
-           device.  The value of the interrupts property
-           consists of one interrupt specifier. The format
-           of the specifier is defined by the binding document
-           describing the node's interrupt parent.
-
-EXAMPLE
-       jr@1000 {
-               compatible = "fsl,sec-v6.0-job-ring";
-               reg = <0x1000 0x1000>;
-               interrupts = <49 2 0 0>;
-       };
-
-===================================================================
-Full Example
-
-Since some chips may contain more than one SEC, the dtsi contains
-only the node contents, not the node itself.  A chip using the SEC
-should include the dtsi inside each SEC node.  Example:
-
-In qoriq-sec6.0.dtsi:
-
-       compatible = "fsl,sec-v6.0";
-       fsl,sec-era = <6>;
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       jr@1000 {
-               compatible = "fsl,sec-v6.0-job-ring",
-                            "fsl,sec-v5.2-job-ring",
-                            "fsl,sec-v5.0-job-ring",
-                            "fsl,sec-v4.4-job-ring",
-                            "fsl,sec-v4.0-job-ring";
-               reg        = <0x1000 0x1000>;
-       };
-
-       jr@2000 {
-               compatible = "fsl,sec-v6.0-job-ring",
-                            "fsl,sec-v5.2-job-ring",
-                            "fsl,sec-v5.0-job-ring",
-                            "fsl,sec-v4.4-job-ring",
-                            "fsl,sec-v4.0-job-ring";
-               reg        = <0x2000 0x1000>;
-       };
-
-In the C293 device tree, we add the include of public property:
-
-       crypto@a0000 {
-               /include/ "qoriq-sec6.0.dtsi"
-       }
-
-       crypto@a0000 {
-               reg = <0xa0000 0x20000>;
-               ranges = <0 0xa0000 0x20000>;
-
-               jr@1000 {
-                       interrupts = <49 2 0 0>;
-               };
-
-               jr@2000 {
-                       interrupts = <50 2 0 0>;
-               };
-       };
diff --git a/Bindings/crypto/hisilicon,hip06-sec.yaml b/Bindings/crypto/hisilicon,hip06-sec.yaml
new file mode 100644 (file)
index 0000000..2bfac9d
--- /dev/null
@@ -0,0 +1,134 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/crypto/hisilicon,hip06-sec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Hisilicon hip06/hip07 Security Accelerator
+
+maintainers:
+  - Jonathan Cameron <Jonathan.Cameron@huawei.com>
+
+properties:
+  compatible:
+    enum:
+      - hisilicon,hip06-sec
+      - hisilicon,hip07-sec
+
+  reg:
+    items:
+      - description: Registers for backend processing engines
+      - description: Registers for common functionality
+      - description: Registers for queue 0
+      - description: Registers for queue 1
+      - description: Registers for queue 2
+      - description: Registers for queue 3
+      - description: Registers for queue 4
+      - description: Registers for queue 5
+      - description: Registers for queue 6
+      - description: Registers for queue 7
+      - description: Registers for queue 8
+      - description: Registers for queue 9
+      - description: Registers for queue 10
+      - description: Registers for queue 11
+      - description: Registers for queue 12
+      - description: Registers for queue 13
+      - description: Registers for queue 14
+      - description: Registers for queue 15
+
+  interrupts:
+    items:
+      - description: SEC unit error queue interrupt
+      - description: Completion interrupt for queue 0
+      - description: Error interrupt for queue 0
+      - description: Completion interrupt for queue 1
+      - description: Error interrupt for queue 1
+      - description: Completion interrupt for queue 2
+      - description: Error interrupt for queue 2
+      - description: Completion interrupt for queue 3
+      - description: Error interrupt for queue 3
+      - description: Completion interrupt for queue 4
+      - description: Error interrupt for queue 4
+      - description: Completion interrupt for queue 5
+      - description: Error interrupt for queue 5
+      - description: Completion interrupt for queue 6
+      - description: Error interrupt for queue 6
+      - description: Completion interrupt for queue 7
+      - description: Error interrupt for queue 7
+      - description: Completion interrupt for queue 8
+      - description: Error interrupt for queue 8
+      - description: Completion interrupt for queue 9
+      - description: Error interrupt for queue 9
+      - description: Completion interrupt for queue 10
+      - description: Error interrupt for queue 10
+      - description: Completion interrupt for queue 11
+      - description: Error interrupt for queue 11
+      - description: Completion interrupt for queue 12
+      - description: Error interrupt for queue 12
+      - description: Completion interrupt for queue 13
+      - description: Error interrupt for queue 13
+      - description: Completion interrupt for queue 14
+      - description: Error interrupt for queue 14
+      - description: Completion interrupt for queue 15
+      - description: Error interrupt for queue 15
+
+  dma-coherent: true
+
+  iommus:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - dma-coherent
+
+additionalProperties: false
+
+examples:
+  - |
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        crypto@400d2000000 {
+            compatible = "hisilicon,hip07-sec";
+            reg = <0x400 0xd0000000 0x0 0x10000
+                  0x400 0xd2000000 0x0 0x10000
+                  0x400 0xd2010000 0x0 0x10000
+                  0x400 0xd2020000 0x0 0x10000
+                  0x400 0xd2030000 0x0 0x10000
+                  0x400 0xd2040000 0x0 0x10000
+                  0x400 0xd2050000 0x0 0x10000
+                  0x400 0xd2060000 0x0 0x10000
+                  0x400 0xd2070000 0x0 0x10000
+                  0x400 0xd2080000 0x0 0x10000
+                  0x400 0xd2090000 0x0 0x10000
+                  0x400 0xd20a0000 0x0 0x10000
+                  0x400 0xd20b0000 0x0 0x10000
+                  0x400 0xd20c0000 0x0 0x10000
+                  0x400 0xd20d0000 0x0 0x10000
+                  0x400 0xd20e0000 0x0 0x10000
+                  0x400 0xd20f0000 0x0 0x10000
+                  0x400 0xd2100000 0x0 0x10000>;
+            interrupts = <576 4>,
+                        <577 1>, <578 4>,
+                        <579 1>, <580 4>,
+                        <581 1>, <582 4>,
+                        <583 1>, <584 4>,
+                        <585 1>, <586 4>,
+                        <587 1>, <588 4>,
+                        <589 1>, <590 4>,
+                        <591 1>, <592 4>,
+                        <593 1>, <594 4>,
+                        <595 1>, <596 4>,
+                        <597 1>, <598 4>,
+                        <599 1>, <600 4>,
+                        <601 1>, <602 4>,
+                        <603 1>, <604 4>,
+                        <605 1>, <606 4>,
+                        <607 1>, <608 4>;
+            dma-coherent;
+            iommus = <&p1_smmu_alg_a 0x600>;
+        };
+    };
diff --git a/Bindings/crypto/hisilicon,hip07-sec.txt b/Bindings/crypto/hisilicon,hip07-sec.txt
deleted file mode 100644 (file)
index d28fd1a..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-* Hisilicon hip07 Security Accelerator (SEC)
-
-Required properties:
-- compatible: Must contain one of
-  - "hisilicon,hip06-sec"
-  - "hisilicon,hip07-sec"
-- reg: Memory addresses and lengths of the memory regions through which
-  this device is controlled.
-  Region 0 has registers to control the backend processing engines.
-  Region 1 has registers for functionality common to all queues.
-  Regions 2-18 have registers for the 16 individual queues which are isolated
-  both in hardware and within the driver.
-- interrupts: Interrupt specifiers.
-  Refer to interrupt-controller/interrupts.txt for generic interrupt client node
-  bindings.
-  Interrupt 0 is for the SEC unit error queue.
-  Interrupt 2N + 1 is the completion interrupt for queue N.
-  Interrupt 2N + 2 is the error interrupt for queue N.
-- dma-coherent:  The driver assumes coherent dma is possible.
-
-Optional properties:
-- iommus: The SEC units are behind smmu-v3 iommus.
-  Refer to iommu/arm,smmu-v3.txt for more information.
-
-Example:
-
-p1_sec_a: crypto@400d2000000 {
-       compatible = "hisilicon,hip07-sec";
-       reg = <0x400 0xd0000000 0x0 0x10000
-              0x400 0xd2000000 0x0 0x10000
-              0x400 0xd2010000 0x0 0x10000
-              0x400 0xd2020000 0x0 0x10000
-              0x400 0xd2030000 0x0 0x10000
-              0x400 0xd2040000 0x0 0x10000
-              0x400 0xd2050000 0x0 0x10000
-              0x400 0xd2060000 0x0 0x10000
-              0x400 0xd2070000 0x0 0x10000
-              0x400 0xd2080000 0x0 0x10000
-              0x400 0xd2090000 0x0 0x10000
-              0x400 0xd20a0000 0x0 0x10000
-              0x400 0xd20b0000 0x0 0x10000
-              0x400 0xd20c0000 0x0 0x10000
-              0x400 0xd20d0000 0x0 0x10000
-              0x400 0xd20e0000 0x0 0x10000
-              0x400 0xd20f0000 0x0 0x10000
-              0x400 0xd2100000 0x0 0x10000>;
-       interrupt-parent = <&p1_mbigen_sec_a>;
-       iommus = <&p1_smmu_alg_a 0x600>;
-       dma-coherent;
-       interrupts = <576 4>,
-                    <577 1>, <578 4>,
-                    <579 1>, <580 4>,
-                    <581 1>, <582 4>,
-                    <583 1>, <584 4>,
-                    <585 1>, <586 4>,
-                    <587 1>, <588 4>,
-                    <589 1>, <590 4>,
-                    <591 1>, <592 4>,
-                    <593 1>, <594 4>,
-                    <595 1>, <596 4>,
-                    <597 1>, <598 4>,
-                    <599 1>, <600 4>,
-                    <601 1>, <602 4>,
-                    <603 1>, <604 4>,
-                    <605 1>, <606 4>,
-                    <607 1>, <608 4>;
-};
diff --git a/Bindings/crypto/img,hash-accelerator.yaml b/Bindings/crypto/img,hash-accelerator.yaml
new file mode 100644 (file)
index 0000000..4661756
--- /dev/null
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/img,hash-accelerator.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Imagination Technologies hardware hash accelerator
+
+maintainers:
+  - James Hartley <james.hartley@imgtec.com>
+
+description:
+  The hash accelerator provides hardware hashing acceleration for
+  SHA1, SHA224, SHA256 and MD5 hashes.
+
+properties:
+  compatible:
+    const: img,hash-accelerator
+
+  reg:
+    items:
+      - description: Register base address and size
+      - description: DMA port specifier
+
+  interrupts:
+    maxItems: 1
+
+  dmas:
+    maxItems: 1
+
+  dma-names:
+    items:
+      - const: tx
+
+  clocks:
+    items:
+      - description: System clock for hash block registers
+      - description: Hash clock for data path
+
+  clock-names:
+    items:
+      - const: sys
+      - const: hash
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - dmas
+  - dma-names
+  - clocks
+  - clock-names
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/mips-gic.h>
+    #include <dt-bindings/clock/pistachio-clk.h>
+
+    hash@18149600 {
+        compatible = "img,hash-accelerator";
+        reg = <0x18149600 0x100>, <0x18101100 0x4>;
+        interrupts = <GIC_SHARED 59 IRQ_TYPE_LEVEL_HIGH>;
+        dmas = <&dma 8 0xffffffff 0>;
+        dma-names = "tx";
+        clocks = <&cr_periph SYS_CLK_HASH>, <&clk_periph PERIPH_CLK_ROM>;
+        clock-names = "sys", "hash";
+    };
diff --git a/Bindings/crypto/img-hash.txt b/Bindings/crypto/img-hash.txt
deleted file mode 100644 (file)
index 91a3d75..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Imagination Technologies hardware hash accelerator
-
-The hash accelerator provides hardware hashing acceleration for
-SHA1, SHA224, SHA256 and MD5 hashes
-
-Required properties:
-
-- compatible : "img,hash-accelerator"
-- reg : Offset and length of the register set for the module, and the DMA port
-- interrupts : The designated IRQ line for the hashing module.
-- dmas : DMA specifier as per Documentation/devicetree/bindings/dma/dma.txt
-- dma-names : Should be "tx"
-- clocks : Clock specifiers
-- clock-names : "sys" Used to clock the hash block registers
-               "hash" Used to clock data through the accelerator
-
-Example:
-
-       hash: hash@18149600 {
-       compatible = "img,hash-accelerator";
-               reg = <0x18149600 0x100>, <0x18101100 0x4>;
-               interrupts = <GIC_SHARED 59 IRQ_TYPE_LEVEL_HIGH>;
-               dmas = <&dma 8 0xffffffff 0>;
-               dma-names = "tx";
-               clocks = <&cr_periph SYS_CLK_HASH>, <&clk_periph PERIPH_CLK_ROM>;
-               clock-names = "sys", "hash";
-       };
diff --git a/Bindings/crypto/marvell,orion-crypto.yaml b/Bindings/crypto/marvell,orion-crypto.yaml
new file mode 100644 (file)
index 0000000..b44d36c
--- /dev/null
@@ -0,0 +1,133 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/crypto/marvell,orion-crypto.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Cryptographic Engines And Security Accelerator
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Boris Brezillon <bbrezillon@kernel.org>
+
+description: |
+  Marvell Cryptographic Engines And Security Accelerator
+
+properties:
+  compatible:
+    enum:
+      - marvell,armada-370-crypto
+      - marvell,armada-xp-crypto
+      - marvell,armada-375-crypto
+      - marvell,armada-38x-crypto
+      - marvell,dove-crypto
+      - marvell,kirkwood-crypto
+      - marvell,orion-crypto
+
+  reg:
+    minItems: 1
+    items:
+      - description: Registers region
+      - description: SRAM region
+        deprecated: true
+
+  reg-names:
+    minItems: 1
+    items:
+      - const: regs
+      - const: sram
+        deprecated: true
+
+  interrupts:
+    description: One interrupt for each CESA engine
+    minItems: 1
+    maxItems: 2
+
+  clocks:
+    description: One or two clocks for each CESA engine
+    minItems: 1
+    maxItems: 4
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: cesa0
+      - const: cesa1
+      - const: cesaz0
+      - const: cesaz1
+
+  marvell,crypto-srams:
+    description: Phandle(s) to crypto SRAM.
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    minItems: 1
+    maxItems: 2
+    items:
+      maxItems: 1
+
+  marvell,crypto-sram-size:
+    description: SRAM size reserved for crypto operations.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0x800
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - marvell,crypto-srams
+
+allOf:
+  - if:
+      not:
+        properties:
+          compatible:
+            enum:
+              - marvell,kirkwood-crypto
+              - marvell,orion-crypto
+    then:
+      required:
+        - clocks
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - marvell,armada-370-crypto
+              - marvell,armada-375-crypto
+              - marvell,armada-38x-crypto
+              - marvell,armada-xp-crypto
+    then:
+      required:
+        - clock-names
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - marvell,armada-375-crypto
+              - marvell,armada-38x-crypto
+    then:
+      properties:
+        clocks:
+          minItems: 4
+        clock-names:
+          minItems: 4
+    else:
+      properties:
+        clocks:
+          maxItems: 2
+        clock-names:
+          maxItems: 2
+
+additionalProperties: false
+
+examples:
+  - |
+    crypto@30000 {
+        compatible = "marvell,orion-crypto";
+        reg = <0x30000 0x10000>;
+        reg-names = "regs";
+        interrupts = <22>;
+        marvell,crypto-srams = <&crypto_sram>;
+        marvell,crypto-sram-size = <0x600>;
+    };
diff --git a/Bindings/crypto/marvell-cesa.txt b/Bindings/crypto/marvell-cesa.txt
deleted file mode 100644 (file)
index 28d3f24..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-Marvell Cryptographic Engines And Security Accelerator
-
-Required properties:
-- compatible: should be one of the following string
-             "marvell,orion-crypto"
-             "marvell,kirkwood-crypto"
-             "marvell,dove-crypto"
-             "marvell,armada-370-crypto"
-             "marvell,armada-xp-crypto"
-             "marvell,armada-375-crypto"
-             "marvell,armada-38x-crypto"
-- reg: base physical address of the engine and length of memory mapped
-       region. Can also contain an entry for the SRAM attached to the CESA,
-       but this representation is deprecated and marvell,crypto-srams should
-       be used instead
-- reg-names: "regs". Can contain an "sram" entry, but this representation
-            is deprecated and marvell,crypto-srams should be used instead
-- interrupts: interrupt number
-- clocks: reference to the crypto engines clocks. This property is not
-         required for orion and kirkwood platforms
-- clock-names: "cesaX" and "cesazX", X should be replaced by the crypto engine
-              id.
-              This property is not required for the orion and kirkwoord
-              platforms.
-              "cesazX" clocks are not required on armada-370 platforms
-- marvell,crypto-srams: phandle to crypto SRAM definitions
-
-Optional properties:
-- marvell,crypto-sram-size: SRAM size reserved for crypto operations, if not
-                           specified the whole SRAM is used (2KB)
-
-
-Examples:
-
-       crypto@90000 {
-               compatible = "marvell,armada-xp-crypto";
-               reg = <0x90000 0x10000>;
-               reg-names = "regs";
-               interrupts = <48>, <49>;
-               clocks = <&gateclk 23>, <&gateclk 23>;
-               clock-names = "cesa0", "cesa1";
-               marvell,crypto-srams = <&crypto_sram0>, <&crypto_sram1>;
-               marvell,crypto-sram-size = <0x600>;
-       };
diff --git a/Bindings/crypto/mediatek-crypto.txt b/Bindings/crypto/mediatek-crypto.txt
deleted file mode 100644 (file)
index 450da36..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-MediaTek cryptographic accelerators
-
-Required properties:
-- compatible: Should be "mediatek,eip97-crypto"
-- reg: Address and length of the register set for the device
-- interrupts: Should contain the five crypto engines interrupts in numeric
-       order. These are global system and four descriptor rings.
-- clocks: the clock used by the core
-- clock-names: Must contain "cryp".
-- power-domains: Must contain a reference to the PM domain.
-
-
-Example:
-       crypto: crypto@1b240000 {
-               compatible = "mediatek,eip97-crypto";
-               reg = <0 0x1b240000 0 0x20000>;
-               interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_SPI 83 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_SPI 84 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_SPI 91 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_SPI 97 IRQ_TYPE_LEVEL_LOW>;
-               clocks = <&ethsys CLK_ETHSYS_CRYPTO>;
-               clock-names = "cryp";
-               power-domains = <&scpsys MT2701_POWER_DOMAIN_ETH>;
-       };
diff --git a/Bindings/crypto/mv_cesa.txt b/Bindings/crypto/mv_cesa.txt
deleted file mode 100644 (file)
index d9b92e2..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-Marvell Cryptographic Engines And Security Accelerator
-
-Required properties:
-- compatible: should be one of the following string
-             "marvell,orion-crypto"
-             "marvell,kirkwood-crypto"
-             "marvell,dove-crypto"
-- reg: base physical address of the engine and length of memory mapped
-       region. Can also contain an entry for the SRAM attached to the CESA,
-       but this representation is deprecated and marvell,crypto-srams should
-       be used instead
-- reg-names: "regs". Can contain an "sram" entry, but this representation
-            is deprecated and marvell,crypto-srams should be used instead
-- interrupts: interrupt number
-- clocks: reference to the crypto engines clocks. This property is only
-         required for Dove platforms
-- marvell,crypto-srams: phandle to crypto SRAM definitions
-
-Optional properties:
-- marvell,crypto-sram-size: SRAM size reserved for crypto operations, if not
-                           specified the whole SRAM is used (2KB)
-
-Examples:
-
-       crypto@30000 {
-               compatible = "marvell,orion-crypto";
-               reg = <0x30000 0x10000>;
-               reg-names = "regs";
-               interrupts = <22>;
-               marvell,crypto-srams = <&crypto_sram>;
-               marvell,crypto-sram-size = <0x600>;
-       };
index 3f35122f7873c2f822772e091cf61814bddfb892..e009cb712fb8a274781f22bdd5283dd0b8faf0e9 100644 (file)
@@ -45,6 +45,7 @@ properties:
 
       - items:
           - enum:
+              - qcom,qcs615-qce
               - qcom,qcs8300-qce
               - qcom,sa8775p-qce
               - qcom,sc7280-qce
index e08c24633926b2023825bf49eea7355a7e850e30..5a99d9b9635e78e9aec536423a0e8247067fac61 100644 (file)
@@ -128,7 +128,7 @@ required:
   - power-domains
   - ports
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
@@ -180,4 +180,69 @@ examples:
             };
         };
     };
+
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi1: dsi@10860000 {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        compatible = "renesas,r9a07g044-mipi-dsi", "renesas,rzg2l-mipi-dsi";
+        reg = <0x10860000 0x20000>;
+        interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "seq0", "seq1", "vin1", "rcv",
+                          "ferr", "ppi", "debug";
+        clocks = <&cpg CPG_MOD R9A07G044_MIPI_DSI_PLLCLK>,
+                 <&cpg CPG_MOD R9A07G044_MIPI_DSI_SYSCLK>,
+                 <&cpg CPG_MOD R9A07G044_MIPI_DSI_ACLK>,
+                 <&cpg CPG_MOD R9A07G044_MIPI_DSI_PCLK>,
+                 <&cpg CPG_MOD R9A07G044_MIPI_DSI_VCLK>,
+                 <&cpg CPG_MOD R9A07G044_MIPI_DSI_LPCLK>;
+        clock-names = "pllclk", "sysclk", "aclk", "pclk", "vclk", "lpclk";
+        resets = <&cpg R9A07G044_MIPI_DSI_CMN_RSTB>,
+                 <&cpg R9A07G044_MIPI_DSI_ARESET_N>,
+                 <&cpg R9A07G044_MIPI_DSI_PRESET_N>;
+        reset-names = "rst", "arst", "prst";
+        power-domains = <&cpg>;
+
+        panel@0 {
+            compatible = "rocktech,jh057n00900";
+            reg = <0>;
+            vcc-supply = <&reg_2v8_p>;
+            iovcc-supply = <&reg_1v8_p>;
+            reset-gpios = <&gpio3 13 GPIO_ACTIVE_LOW>;
+
+            port {
+                panel_in: endpoint {
+                    remote-endpoint = <&dsi1_out>;
+                };
+            };
+        };
+
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@0 {
+                reg = <0>;
+                dsi1_in: endpoint {
+                    remote-endpoint = <&du_out_dsi1>;
+                };
+            };
+
+            port@1 {
+                reg = <1>;
+                dsi1_out: endpoint {
+                    data-lanes = <1 2 3 4>;
+                    remote-endpoint = <&panel_in>;
+                };
+            };
+        };
+    };
 ...
index 9b5f3f3eab198914f36c4243c4d22d1fe69bb8b7..e69b6343a8ebbdb4a8a244e0b81bde0333037973 100644 (file)
@@ -118,15 +118,11 @@ $defs:
           ti,lvds-vod-swing-clock-microvolt:
             description: LVDS diferential output voltage <min max> for clock
               lanes in microvolts.
-            $ref: /schemas/types.yaml#/definitions/uint32-array
-            minItems: 2
             maxItems: 2
 
           ti,lvds-vod-swing-data-microvolt:
             description: LVDS diferential output voltage <min max> for data
               lanes in microvolts.
-            $ref: /schemas/types.yaml#/definitions/uint32-array
-            minItems: 2
             maxItems: 2
 
 allOf:
diff --git a/Bindings/display/fsl,tcon.txt b/Bindings/display/fsl,tcon.txt
deleted file mode 100644 (file)
index 4750087..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Device Tree bindings for Freescale TCON Driver
-
-Required properties:
-- compatible:          Should be one of
-       * "fsl,vf610-tcon".
-
-- reg:                 Address and length of the register set for tcon.
-- clocks:              From common clock binding: handle to tcon ipg clock.
-- clock-names:         From common clock binding: Shall be "ipg".
-
-Examples:
-timing-controller@4003d000 {
-       compatible = "fsl,vf610-tcon";
-       reg = <0x4003d000 0x1000>;
-       clocks = <&clks VF610_CLK_TCON0>;
-       clock-names = "ipg";
-};
diff --git a/Bindings/display/fsl,vf610-tcon.yaml b/Bindings/display/fsl,vf610-tcon.yaml
new file mode 100644 (file)
index 0000000..06bd680
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/fsl,vf610-tcon.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale TCON
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,vf610-tcon
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: ipg
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/vf610-clock.h>
+
+    timing-controller@4003d000 {
+        compatible = "fsl,vf610-tcon";
+        reg = <0x4003d000 0x1000>;
+        clocks = <&clks VF610_CLK_TCON0>;
+        clock-names = "ipg";
+    };
diff --git a/Bindings/display/imx/fsl,imx-display-subsystem.yaml b/Bindings/display/imx/fsl,imx-display-subsystem.yaml
new file mode 100644 (file)
index 0000000..92a0a79
--- /dev/null
@@ -0,0 +1,36 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx-display-subsystem.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX DRM master device
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+description:
+  The freescale i.MX DRM master device is a virtual device needed to list all
+  IPU or other display interface nodes that comprise the graphics subsystem.
+
+properties:
+  compatible:
+    const: fsl,imx-display-subsystem
+
+  ports:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description:
+      Should contain a list of phandles pointing to camera
+      sensor interface ports of IPU devices.
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    display-subsystem {
+        compatible = "fsl,imx-display-subsystem";
+        ports = <&ipu_di0>;
+    };
diff --git a/Bindings/display/imx/fsl,imx-parallel-display.yaml b/Bindings/display/imx/fsl,imx-parallel-display.yaml
new file mode 100644 (file)
index 0000000..bbcfe7e
--- /dev/null
@@ -0,0 +1,74 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx-parallel-display.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Parallel display support
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx-parallel-display
+
+  interface-pix-fmt:
+    $ref: /schemas/types.yaml#/definitions/string
+    enum:
+      - rgb24
+      - rgb565
+      - bgr666
+      - lvds666
+
+  ddc:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      phandle describing the i2c bus handling the display data channel
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  port@0:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description: input port connected to the IPU display interface
+
+  port@1:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description: output port connected to a panel
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    display {
+        compatible = "fsl,imx-parallel-display";
+        #address-cells = <1>;
+        #size-cells = <0>;
+        interface-pix-fmt = "rgb24";
+
+        port@0 {
+            reg = <0>;
+
+            endpoint {
+                remote-endpoint = <&ipu_di0_disp0>;
+            };
+        };
+
+        port@1 {
+            reg = <1>;
+
+            endpoint {
+                remote-endpoint = <&panel_in>;
+            };
+        };
+    };
+
diff --git a/Bindings/display/imx/fsl,imx6q-ipu.yaml b/Bindings/display/imx/fsl,imx6q-ipu.yaml
new file mode 100644 (file)
index 0000000..ec78645
--- /dev/null
@@ -0,0 +1,97 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx6q-ipu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX IPUv3
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - fsl,imx51-ipu
+          - fsl,imx53-ipu
+          - fsl,imx6q-ipu
+      - items:
+          - const: fsl,imx6qp-ipu
+          - const: fsl,imx6q-ipu
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    minItems: 1
+    maxItems: 2
+
+  clocks:
+    maxItems: 3
+
+  clock-names:
+    items:
+      - const: bus
+      - const: di0
+      - const: di1
+
+  resets:
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  fsl,prg:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: phandle to prg node associated with this IPU instance
+
+  port@0:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description: CSI0
+
+  port@1:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description: CSI1
+
+  port@2:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description: DI0
+
+  port@3:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description: DI1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - resets
+
+additionalProperties: false
+
+examples:
+  - |
+    display-controller@18000000 {
+        compatible = "fsl,imx53-ipu";
+        reg = <0x18000000 0x080000000>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        interrupts = <11 10>;
+        resets = <&src 2>;
+
+        port@2 {
+            reg = <2>;
+
+            endpoint {
+                remote-endpoint = <&display_in>;
+            };
+        };
+    };
diff --git a/Bindings/display/imx/fsl,imx6q-ldb.yaml b/Bindings/display/imx/fsl,imx6q-ldb.yaml
new file mode 100644 (file)
index 0000000..1646f41
--- /dev/null
@@ -0,0 +1,193 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx6q-ldb.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale LVDS Display Bridge (ldb)
+
+description:
+  The LVDS Display Bridge device tree node contains up to two lvds-channel
+  nodes describing each of the two LVDS encoder channels of the bridge.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - fsl,imx53-ldb
+      - items:
+          - enum:
+              - fsl,imx6q-ldb
+          - const: fsl,imx53-ldb
+
+  reg:
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  gpr:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      The phandle points to the iomuxc-gpr region containing the LVDS
+      control register.
+
+  clocks:
+    minItems: 6
+    maxItems: 8
+
+  clock-names:
+    oneOf:
+      - items:
+          - const: di0_pll
+          - const: di1_pll
+          - const: di0_sel
+          - const: di1_sel
+          - const: di0
+          - const: di1
+      - items:
+          - const: di0_pll
+          - const: di1_pll
+          - const: di0_sel
+          - const: di1_sel
+          - const: di2_sel
+          - const: di3_sel
+          - const: di0
+          - const: di1
+
+  fsl,dual-channel:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      if it exists, only LVDS channel 0 should
+      be configured - one input will be distributed on both outputs in dual
+      channel mode
+
+patternProperties:
+  '^lvds-channel@[0-1]$':
+    type: object
+    description:
+      Each LVDS Channel has to contain either an of graph link to a panel device node
+      or a display-timings node that describes the video timings for the connected
+      LVDS display as well as the fsl,data-mapping and fsl,data-width properties.
+
+    properties:
+      reg:
+        maxItems: 1
+
+      '#address-cells':
+        const: 1
+
+      '#size-cells':
+        const: 0
+
+      display-timings:
+        $ref: /schemas/display/panel/display-timings.yaml#
+
+      fsl,data-mapping:
+        enum:
+          - spwg
+          - jeida
+
+      fsl,data-width:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description: should be <18> or <24>
+        enum:
+          - 18
+          - 24
+
+      fsl,panel:
+        $ref: /schemas/types.yaml#/definitions/phandle
+        description: phandle to lcd panel
+
+    patternProperties:
+      '^port@[0-4]$':
+        $ref: /schemas/graph.yaml#/properties/port
+        description:
+          On i.MX5, the internal two-input-multiplexer is used. Due to hardware
+          limitations, only one input port (port@[0,1]) can be used for each channel
+          (lvds-channel@[0,1], respectively).
+          On i.MX6, there should be four input ports (port@[0-3]) that correspond
+          to the four LVDS multiplexer inputs.
+          A single output port (port@2 on i.MX5, port@4 on i.MX6) must be connected
+          to a panel input port. Optionally, the output port can be left out if
+          display-timings are used instead.
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - gpr
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx5-clock.h>
+
+    ldb@53fa8008 {
+        compatible = "fsl,imx53-ldb";
+        reg = <0x53fa8008 0x4>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        gpr = <&gpr>;
+        clocks = <&clks IMX5_CLK_LDB_DI0_SEL>,
+                 <&clks IMX5_CLK_LDB_DI1_SEL>,
+                 <&clks IMX5_CLK_IPU_DI0_SEL>,
+                 <&clks IMX5_CLK_IPU_DI1_SEL>,
+                 <&clks IMX5_CLK_LDB_DI0_GATE>,
+                 <&clks IMX5_CLK_LDB_DI1_GATE>;
+        clock-names = "di0_pll", "di1_pll",
+                      "di0_sel", "di1_sel",
+                      "di0", "di1";
+
+        /* Using an of-graph endpoint link to connect the panel */
+        lvds-channel@0 {
+                reg = <0>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    endpoint {
+                        remote-endpoint = <&ipu_di0_lvds0>;
+                    };
+                };
+
+                port@2 {
+                    reg = <2>;
+
+                    endpoint {
+                        remote-endpoint = <&panel_in>;
+                    };
+               };
+        };
+
+        /* Using display-timings and fsl,data-mapping/width instead */
+        lvds-channel@1 {
+                reg = <1>;
+                #address-cells = <1>;
+                #size-cells = <0>;
+                fsl,data-mapping = "spwg";
+                fsl,data-width = <24>;
+
+                display-timings {/* ... */
+                };
+
+                port@1 {
+                     reg = <1>;
+
+                     endpoint {
+                         remote-endpoint = <&ipu_di1_lvds1>;
+                     };
+                };
+        };
+    };
diff --git a/Bindings/display/imx/fsl,imx6qp-pre.yaml b/Bindings/display/imx/fsl,imx6qp-pre.yaml
new file mode 100644 (file)
index 0000000..73bc73f
--- /dev/null
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx6qp-pre.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX PRE (Prefetch Resolve Engine)
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx6qp-pre
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: axi
+  fsl,iram:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      phandle pointing to the mmio-sram device node, that should be
+      used for the PRE SRAM double buffer.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx6qdl-clock.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    pre@21c8000 {
+        compatible = "fsl,imx6qp-pre";
+        reg = <0x021c8000 0x1000>;
+        interrupts = <GIC_SPI 90 IRQ_TYPE_EDGE_RISING>;
+        clocks = <&clks IMX6QDL_CLK_PRE0>;
+        clock-names = "axi";
+        fsl,iram = <&ocram2>;
+    };
diff --git a/Bindings/display/imx/fsl,imx6qp-prg.yaml b/Bindings/display/imx/fsl,imx6qp-prg.yaml
new file mode 100644 (file)
index 0000000..582da8c
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/imx/fsl,imx6qp-prg.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX PRG (Prefetch Resolve Gasket)
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx6qp-prg
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: ipg
+      - const: axi
+
+  fsl,pres:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      maxItems: 1
+    description:
+      phandles to the PRE units attached to this PRG, with the fixed
+      PRE as the first entry and the muxable PREs following.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx6qdl-clock.h>
+
+    prg@21cc000 {
+        compatible = "fsl,imx6qp-prg";
+        reg = <0x021cc000 0x1000>;
+        clocks = <&clks IMX6QDL_CLK_PRG0_APB>, <&clks IMX6QDL_CLK_PRG0_AXI>;
+        clock-names = "ipg", "axi";
+        fsl,pres = <&pre1>, <&pre2>, <&pre3>;
+    };
+
diff --git a/Bindings/display/imx/fsl-imx-drm.txt b/Bindings/display/imx/fsl-imx-drm.txt
deleted file mode 100644 (file)
index 269b1ae..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-Freescale i.MX DRM master device
-================================
-
-The freescale i.MX DRM master device is a virtual device needed to list all
-IPU or other display interface nodes that comprise the graphics subsystem.
-
-Required properties:
-- compatible: Should be "fsl,imx-display-subsystem"
-- ports: Should contain a list of phandles pointing to display interface ports
-  of IPU devices
-
-example:
-
-display-subsystem {
-       compatible = "fsl,imx-display-subsystem";
-       ports = <&ipu_di0>;
-};
-
-
-Freescale i.MX IPUv3
-====================
-
-Required properties:
-- compatible: Should be "fsl,<chip>-ipu" where <chip> is one of
-  - imx51
-  - imx53
-  - imx6q
-  - imx6qp
-- reg: should be register base and length as documented in the
-  datasheet
-- interrupts: Should contain sync interrupt and error interrupt,
-  in this order.
-- resets: phandle pointing to the system reset controller and
-          reset line index, see reset/fsl,imx-src.txt for details
-Additional required properties for fsl,imx6qp-ipu:
-- fsl,prg: phandle to prg node associated with this IPU instance
-Optional properties:
-- port@[0-3]: Port nodes with endpoint definitions as defined in
-  Documentation/devicetree/bindings/media/video-interfaces.txt.
-  Ports 0 and 1 should correspond to CSI0 and CSI1,
-  ports 2 and 3 should correspond to DI0 and DI1, respectively.
-
-example:
-
-ipu: ipu@18000000 {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       compatible = "fsl,imx53-ipu";
-       reg = <0x18000000 0x080000000>;
-       interrupts = <11 10>;
-       resets = <&src 2>;
-
-       ipu_di0: port@2 {
-               reg = <2>;
-
-               ipu_di0_disp0: endpoint {
-                       remote-endpoint = <&display_in>;
-               };
-       };
-};
-
-Freescale i.MX PRE (Prefetch Resolve Engine)
-============================================
-
-Required properties:
-- compatible: should be "fsl,imx6qp-pre"
-- reg: should be register base and length as documented in the
-  datasheet
-- clocks : phandle to the PRE axi clock input, as described
-  in Documentation/devicetree/bindings/clock/clock-bindings.txt and
-  Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
-- clock-names: should be "axi"
-- interrupts: should contain the PRE interrupt
-- fsl,iram: phandle pointing to the mmio-sram device node, that should be
-  used for the PRE SRAM double buffer.
-
-example:
-
-pre@21c8000 {
-       compatible = "fsl,imx6qp-pre";
-       reg = <0x021c8000 0x1000>;
-       interrupts = <GIC_SPI 90 IRQ_TYPE_EDGE_RISING>;
-       clocks = <&clks IMX6QDL_CLK_PRE0>;
-       clock-names = "axi";
-       fsl,iram = <&ocram2>;
-};
-
-Freescale i.MX PRG (Prefetch Resolve Gasket)
-============================================
-
-Required properties:
-- compatible: should be "fsl,imx6qp-prg"
-- reg: should be register base and length as documented in the
-  datasheet
-- clocks : phandles to the PRG ipg and axi clock inputs, as described
-  in Documentation/devicetree/bindings/clock/clock-bindings.txt and
-  Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
-- clock-names: should be "ipg" and "axi"
-- fsl,pres: phandles to the PRE units attached to this PRG, with the fixed
-  PRE as the first entry and the muxable PREs following.
-
-example:
-
-prg@21cc000 {
-       compatible = "fsl,imx6qp-prg";
-       reg = <0x021cc000 0x1000>;
-       clocks = <&clks IMX6QDL_CLK_PRG0_APB>,
-                <&clks IMX6QDL_CLK_PRG0_AXI>;
-       clock-names = "ipg", "axi";
-       fsl,pres = <&pre1>, <&pre2>, <&pre3>;
-};
-
-Parallel display support
-========================
-
-Required properties:
-- compatible: Should be "fsl,imx-parallel-display"
-Optional properties:
-- interface-pix-fmt: How this display is connected to the
-  display interface. Currently supported types: "rgb24", "rgb565", "bgr666"
-  and "lvds666".
-- ddc: phandle describing the i2c bus handling the display data
-  channel
-- port@[0-1]: Port nodes with endpoint definitions as defined in
-  Documentation/devicetree/bindings/media/video-interfaces.txt.
-  Port 0 is the input port connected to the IPU display interface,
-  port 1 is the output port connected to a panel.
-
-example:
-
-disp0 {
-       compatible = "fsl,imx-parallel-display";
-       interface-pix-fmt = "rgb24";
-
-       port@0 {
-               reg = <0>;
-
-               display_in: endpoint {
-                       remote-endpoint = <&ipu_di0_disp0>;
-               };
-       };
-
-       port@1 {
-               reg = <1>;
-
-               display_out: endpoint {
-                       remote-endpoint = <&panel_in>;
-               };
-       };
-};
-
-panel {
-       ...
-
-       port {
-               panel_in: endpoint {
-                       remote-endpoint = <&display_out>;
-               };
-       };
-};
diff --git a/Bindings/display/imx/ldb.txt b/Bindings/display/imx/ldb.txt
deleted file mode 100644 (file)
index 03653a2..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-Device-Tree bindings for LVDS Display Bridge (ldb)
-
-LVDS Display Bridge
-===================
-
-The LVDS Display Bridge device tree node contains up to two lvds-channel
-nodes describing each of the two LVDS encoder channels of the bridge.
-
-Required properties:
- - #address-cells : should be <1>
- - #size-cells : should be <0>
- - compatible : should be "fsl,imx53-ldb" or "fsl,imx6q-ldb".
-                Both LDB versions are similar, but i.MX6 has an additional
-                multiplexer in the front to select any of the four IPU display
-                interfaces as input for each LVDS channel.
- - gpr : should be <&gpr> on i.MX53 and i.MX6q.
-         The phandle points to the iomuxc-gpr region containing the LVDS
-         control register.
-- clocks, clock-names : phandles to the LDB divider and selector clocks and to
-                        the display interface selector clocks, as described in
-                        Documentation/devicetree/bindings/clock/clock-bindings.txt
-        The following clocks are expected on i.MX53:
-                "di0_pll" - LDB LVDS channel 0 mux
-                "di1_pll" - LDB LVDS channel 1 mux
-                "di0" - LDB LVDS channel 0 gate
-                "di1" - LDB LVDS channel 1 gate
-                "di0_sel" - IPU1 DI0 mux
-                "di1_sel" - IPU1 DI1 mux
-        On i.MX6q the following additional clocks are needed:
-                "di2_sel" - IPU2 DI0 mux
-                "di3_sel" - IPU2 DI1 mux
-        The needed clock numbers for each are documented in
-        Documentation/devicetree/bindings/clock/imx5-clock.yaml, and in
-        Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
-
-Optional properties:
- - pinctrl-names : should be "default" on i.MX53, not used on i.MX6q
- - pinctrl-0 : a phandle pointing to LVDS pin settings on i.MX53,
-               not used on i.MX6q
- - fsl,dual-channel : boolean. if it exists, only LVDS channel 0 should
-   be configured - one input will be distributed on both outputs in dual
-   channel mode
-
-LVDS Channel
-============
-
-Each LVDS Channel has to contain either an of graph link to a panel device node
-or a display-timings node that describes the video timings for the connected
-LVDS display as well as the fsl,data-mapping and fsl,data-width properties.
-
-Required properties:
- - reg : should be <0> or <1>
- - port: Input and output port nodes with endpoint definitions as defined in
-   Documentation/devicetree/bindings/graph.txt.
-   On i.MX5, the internal two-input-multiplexer is used. Due to hardware
-   limitations, only one input port (port@[0,1]) can be used for each channel
-   (lvds-channel@[0,1], respectively).
-   On i.MX6, there should be four input ports (port@[0-3]) that correspond
-   to the four LVDS multiplexer inputs.
-   A single output port (port@2 on i.MX5, port@4 on i.MX6) must be connected
-   to a panel input port. Optionally, the output port can be left out if
-   display-timings are used instead.
-
-Optional properties (required if display-timings are used):
- - display-timings : A node that describes the display timings as defined in
-   Documentation/devicetree/bindings/display/panel/display-timing.txt.
- - fsl,data-mapping : should be "spwg" or "jeida"
-                      This describes how the color bits are laid out in the
-                      serialized LVDS signal.
- - fsl,data-width : should be <18> or <24>
-
-example:
-
-gpr: iomuxc-gpr@53fa8000 {
-       /* ... */
-};
-
-ldb: ldb@53fa8008 {
-       #address-cells = <1>;
-       #size-cells = <0>;
-       compatible = "fsl,imx53-ldb";
-       gpr = <&gpr>;
-       clocks = <&clks IMX5_CLK_LDB_DI0_SEL>,
-                <&clks IMX5_CLK_LDB_DI1_SEL>,
-                <&clks IMX5_CLK_IPU_DI0_SEL>,
-                <&clks IMX5_CLK_IPU_DI1_SEL>,
-                <&clks IMX5_CLK_LDB_DI0_GATE>,
-                <&clks IMX5_CLK_LDB_DI1_GATE>;
-       clock-names = "di0_pll", "di1_pll",
-                     "di0_sel", "di1_sel",
-                     "di0", "di1";
-
-       /* Using an of-graph endpoint link to connect the panel */
-       lvds-channel@0 {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               reg = <0>;
-
-               port@0 {
-                       reg = <0>;
-
-                       lvds0_in: endpoint {
-                               remote-endpoint = <&ipu_di0_lvds0>;
-                       };
-               };
-
-               port@2 {
-                       reg = <2>;
-
-                       lvds0_out: endpoint {
-                               remote-endpoint = <&panel_in>;
-                       };
-               };
-       };
-
-       /* Using display-timings and fsl,data-mapping/width instead */
-       lvds-channel@1 {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               reg = <1>;
-               fsl,data-mapping = "spwg";
-               fsl,data-width = <24>;
-
-               display-timings {
-                       /* ... */
-               };
-
-               port@1 {
-                       reg = <1>;
-
-                       lvds1_in: endpoint {
-                               remote-endpoint = <&ipu_di1_lvds1>;
-                       };
-               };
-       };
-};
-
-panel: lvds-panel {
-       /* ... */
-
-       port {
-               panel_in: endpoint {
-                       remote-endpoint = <&lvds0_out>;
-               };
-       };
-};
index 5d2089dc596ec0b976f52283127895268e5aa900..daf90ebb39bfa9c191a3b061a695bf92d2f15830 100644 (file)
@@ -25,6 +25,10 @@ properties:
           - mediatek,mt8173-disp-aal
           - mediatek,mt8183-disp-aal
           - mediatek,mt8195-mdp3-aal
+      - items:
+          - enum:
+              - mediatek,mt8188-mdp3-aal
+          - const: mediatek,mt8195-mdp3-aal
       - items:
           - enum:
               - mediatek,mt2712-disp-aal
index 6160439ce4d7e4936da02844a30a1e5471a09c57..5564f4063317b2b0e9212860aba5440944c785cb 100644 (file)
@@ -27,6 +27,10 @@ properties:
           - mediatek,mt8167-disp-color
           - mediatek,mt8173-disp-color
           - mediatek,mt8195-mdp3-color
+      - items:
+          - enum:
+              - mediatek,mt8188-mdp3-color
+          - const: mediatek,mt8195-mdp3-color
       - items:
           - enum:
               - mediatek,mt7623-disp-color
index 0de9f64f3f8456d3068bfd50f48c0ade4aad568f..3798a25402d3c76d046a15a5a626ccac0ceb8bd0 100644 (file)
@@ -25,6 +25,10 @@ properties:
           - mediatek,mt8173-disp-merge
           - mediatek,mt8195-disp-merge
           - mediatek,mt8195-mdp3-merge
+      - items:
+          - enum:
+              - mediatek,mt8188-mdp3-merge
+          - const: mediatek,mt8195-mdp3-merge
       - items:
           - const: mediatek,mt6795-disp-merge
           - const: mediatek,mt8173-disp-merge
diff --git a/Bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml b/Bindings/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml
new file mode 100644 (file)
index 0000000..bde4dc5
--- /dev/null
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MediaTek HDMI MT8195 series HDMI Display Data Channel (DDC)
+
+maintainers:
+  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+  - CK Hu <ck.hu@mediatek.com>
+
+properties:
+  compatible:
+    oneOf:
+      - const: mediatek,mt8195-hdmi-ddc
+      - items:
+          - const: mediatek,mt8188-hdmi-ddc
+          - const: mediatek,mt8195-hdmi-ddc
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    hdmi {
+        hdmi_ddc: i2c {
+            compatible = "mediatek,mt8195-hdmi-ddc";
+            clocks = <&clk26m>;
+        };
+    };
+...
diff --git a/Bindings/display/mediatek/mediatek,mt8195-hdmi.yaml b/Bindings/display/mediatek/mediatek,mt8195-hdmi.yaml
new file mode 100644 (file)
index 0000000..1b382f9
--- /dev/null
@@ -0,0 +1,151 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/mediatek/mediatek,mt8195-hdmi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MediaTek MT8195 series HDMI-TX Encoder
+
+maintainers:
+  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+  - CK Hu <ck.hu@mediatek.com>
+
+description:
+  The MediaTek HDMI-TX v2 encoder can generate HDMI format data based on
+  the HDMI Specification 2.0b.
+
+properties:
+  compatible:
+    enum:
+      - mediatek,mt8188-hdmi-tx
+      - mediatek,mt8195-hdmi-tx
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: HDMI Peripheral Bus (APB) clock
+      - description: HDCP and HDMI_TOP clock
+      - description: HDCP, HDMI_TOP and HDMI Audio reference clock
+      - description: VPP HDMI Split clock
+
+  clock-names:
+    items:
+      - const: bus
+      - const: hdcp
+      - const: hdcp24m
+      - const: hdmi-split
+
+  i2c:
+    type: object
+    $ref: /schemas/display/mediatek/mediatek,mt8195-hdmi-ddc.yaml
+    unevaluatedProperties: false
+    description: HDMI DDC I2C controller
+
+  phys:
+    maxItems: 1
+    description: PHY providing clocking TMDS and pixel to controller
+
+  phy-names:
+    items:
+      - const: hdmi
+
+  power-domains:
+    maxItems: 1
+
+  '#sound-dai-cells':
+    const: 1
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description:
+          Input port, usually connected to the output port of a DPI
+
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description:
+          Output port that must be connected either to the input port of
+          a HDMI connector node containing a ddc-i2c-bus, or to the input
+          port of an attached bridge chip, such as a SlimPort transmitter.
+
+    required:
+      - port@0
+      - port@1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - power-domains
+  - phys
+  - phy-names
+  - ports
+
+allOf:
+  - $ref: /schemas/sound/dai-common.yaml#
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/mt8195-clk.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/mt8195-power.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        hdmi@1c300000 {
+            compatible = "mediatek,mt8195-hdmi-tx";
+            reg = <0 0x1c300000 0 0x1000>;
+            clocks = <&topckgen CLK_TOP_HDMI_APB>,
+                     <&topckgen CLK_TOP_HDCP>,
+                     <&topckgen CLK_TOP_HDCP_24M>,
+                     <&vppsys1 CLK_VPP1_VPP_SPLIT_HDMI>;
+            clock-names = "bus", "hdcp", "hdcp24m", "hdmi-split";
+            interrupts = <GIC_SPI 677 IRQ_TYPE_LEVEL_HIGH 0>;
+            phys = <&hdmi_phy>;
+            phy-names = "hdmi";
+            power-domains = <&spm MT8195_POWER_DOMAIN_HDMI_TX>;
+            pinctrl-names = "default";
+            pinctrl-0 = <&hdmi_pins>;
+            #sound-dai-cells = <1>;
+
+            hdmitx_ddc: i2c {
+                compatible = "mediatek,mt8195-hdmi-ddc";
+                clocks = <&clk26m>;
+            };
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    hdmi_in: endpoint {
+                        remote-endpoint = <&dpi1_out>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+
+                    hdmi_out: endpoint {
+                        remote-endpoint = <&hdmi_connector_in>;
+                    };
+                };
+            };
+        };
+    };
index be07bbdc54e3430a6aa24ae934a88212074f6c86..86787866ced0fa0b08e522f44894b43196e9d33d 100644 (file)
@@ -20,9 +20,13 @@ description:
 
 properties:
   compatible:
-    enum:
-      - mediatek,mt8188-disp-padding
-      - mediatek,mt8195-mdp3-padding
+    oneOf:
+      - enum:
+          - mediatek,mt8188-disp-padding
+          - mediatek,mt8195-mdp3-padding
+      - items:
+          - const: mediatek,mt8188-mdp3-padding
+          - const: mediatek,mt8195-mdp3-padding
 
   reg:
     maxItems: 1
index e00b88332f2fed2fc33f6d72c5cc3d827cd7594e..246bbb509bea18bed32e3a442d0926a24498c960 100644 (file)
@@ -31,6 +31,7 @@ properties:
           - qcom,sm8650-dp
       - items:
           - enum:
+              - qcom,sar2130p-dp
               - qcom,sm6350-dp
               - qcom,sm8150-dp
               - qcom,sm8250-dp
index 2aab33cd0017cd4a0c915b7297bb3952e62561fa..82fe95a6d9599b5799549356451278564dc070de 100644 (file)
@@ -23,6 +23,8 @@ properties:
               - qcom,msm8996-dsi-ctrl
               - qcom,msm8998-dsi-ctrl
               - qcom,qcm2290-dsi-ctrl
+              - qcom,sa8775p-dsi-ctrl
+              - qcom,sar2130p-dsi-ctrl
               - qcom,sc7180-dsi-ctrl
               - qcom,sc7280-dsi-ctrl
               - qcom,sdm660-dsi-ctrl
@@ -314,6 +316,8 @@ allOf:
           contains:
             enum:
               - qcom,msm8998-dsi-ctrl
+              - qcom,sa8775p-dsi-ctrl
+              - qcom,sar2130p-dsi-ctrl
               - qcom,sc7180-dsi-ctrl
               - qcom,sc7280-dsi-ctrl
               - qcom,sdm845-dsi-ctrl
index 321470435e654f1d569fc54f6a810e3f70fb168c..3c75ff42999a59183d5c6f9ad164023d6361ac07 100644 (file)
@@ -17,6 +17,8 @@ properties:
     enum:
       - qcom,dsi-phy-7nm
       - qcom,dsi-phy-7nm-8150
+      - qcom,sa8775p-dsi-phy-5nm
+      - qcom,sar2130p-dsi-phy-5nm
       - qcom,sc7280-dsi-phy-7nm
       - qcom,sm6375-dsi-phy-7nm
       - qcom,sm8350-dsi-phy-5nm
index d4a2033afea8d4e4f83c9859f8840d30ae9d53f8..dfec6c3480f3fdd0dcafcedc6d42ae8d5c41e7eb 100644 (file)
@@ -66,21 +66,6 @@ properties:
     maxItems: 1
     description: hpd pin
 
-  qcom,hdmi-tx-mux-en-gpios:
-    maxItems: 1
-    deprecated: true
-    description: HDMI mux enable pin
-
-  qcom,hdmi-tx-mux-sel-gpios:
-    maxItems: 1
-    deprecated: true
-    description: HDMI mux select pin
-
-  qcom,hdmi-tx-mux-lpm-gpios:
-    maxItems: 1
-    deprecated: true
-    description: HDMI mux lpm pin
-
   '#sound-dai-cells':
     const: 1
 
@@ -89,12 +74,12 @@ properties:
     $ref: /schemas/graph.yaml#/properties/ports
     properties:
       port@0:
-        $ref: /schemas/graph.yaml#/$defs/port-base
+        $ref: /schemas/graph.yaml#/properties/port
         description: |
           Input endpoints of the controller.
 
       port@1:
-        $ref: /schemas/graph.yaml#/$defs/port-base
+        $ref: /schemas/graph.yaml#/properties/port
         description: |
           Output endpoints of the controller.
 
index 35204a2875795e2c1f7582c8fab227f8a9107ed9..03ee09faa335f332259b64a42eefa3ec199b8e03 100644 (file)
@@ -18,9 +18,10 @@ properties:
 
   clocks:
     minItems: 6
-    maxItems: 6
+    maxItems: 8
 
   clock-names:
+    minItems: 6
     items:
       - const: core_clk
       - const: iface_clk
@@ -28,6 +29,12 @@ properties:
       - const: lut_clk
       - const: hdmi_clk
       - const: tv_clk
+      - const: lcdc_clk
+      - const: pxo
+        description: XO used to drive the internal LVDS PLL
+
+  '#clock-cells':
+    const: 0
 
   reg:
     maxItems: 1
index 7c6462caa4428bc284619275e61ddacc26d0c06e..db9c43b20e2a705bcaae4a9e0e11ce13be853b78 100644 (file)
@@ -84,6 +84,18 @@ properties:
     items:
       - description: MDSS_CORE reset
 
+  interconnects:
+    minItems: 1
+    items:
+      - description: Interconnect path from mdp0 (or a single mdp) port to the data bus
+      - description: Interconnect path from CPU to the reg bus
+
+  interconnect-names:
+    minItems: 1
+    items:
+      - const: mdp0-mem
+      - const: cpu-cfg
+
 required:
   - compatible
   - reg
index 5fac3e26670328f65a147d6a463472f575f7f5fd..1053b3bc49086185d17c7c18d56fb4caf98c2eda 100644 (file)
@@ -52,12 +52,23 @@ patternProperties:
         items:
           - const: qcom,sa8775p-dp
 
+  "^dsi@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        contains:
+          const: qcom,sa8775p-dsi-ctrl
+
   "^phy@[0-9a-f]+$":
     type: object
     additionalProperties: true
     properties:
       compatible:
-        const: qcom,sa8775p-edp-phy
+        contains:
+          enum:
+            - qcom,sa8775p-dsi-phy-5nm
+            - qcom,sa8775p-edp-phy
 
 required:
   - compatible
@@ -139,6 +150,20 @@ examples:
                         remote-endpoint = <&mdss0_dp0_in>;
                     };
                 };
+
+                port@1 {
+                    reg = <1>;
+                    dpu_intf1_out: endpoint {
+                        remote-endpoint = <&mdss0_dsi0_in>;
+                    };
+                };
+
+                port@2 {
+                    reg = <2>;
+                    dpu_intf2_out: endpoint {
+                        remote-endpoint = <&mdss0_dsi1_in>;
+                    };
+                };
             };
 
             mdss0_mdp_opp_table: opp-table {
@@ -186,6 +211,160 @@ examples:
             vdda-pll-supply = <&vreg_l4a>;
         };
 
+        dsi@ae94000 {
+            compatible = "qcom,sa8775p-dsi-ctrl", "qcom,mdss-dsi-ctrl";
+            reg = <0x0ae94000 0x400>;
+            reg-names = "dsi_ctrl";
+
+            interrupt-parent = <&mdss>;
+            interrupts = <4>;
+
+            clocks = <&dispc_byte_clk>,
+                     <&dispcc_intf_clk>,
+                     <&dispcc_pclk>,
+                     <&dispcc_esc_clk>,
+                     <&dispcc_ahb_clk>,
+                     <&gcc_bus_clk>;
+            clock-names = "byte",
+                          "byte_intf",
+                          "pixel",
+                          "core",
+                          "iface",
+                          "bus";
+            assigned-clocks = <&dispcc_byte_clk>,
+                              <&dispcc_pclk>;
+            assigned-clock-parents = <&mdss0_dsi0_phy 0>, <&mdss0_dsi0_phy 1>;
+            phys = <&mdss0_dsi0_phy>;
+
+            operating-points-v2 = <&dsi0_opp_table>;
+            power-domains = <&rpmhpd SA8775P_MMCX>;
+
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+                    mdss0_dsi0_in: endpoint {
+                        remote-endpoint = <&dpu_intf1_out>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+                    mdss0_dsi0_out: endpoint { };
+                };
+            };
+
+            dsi0_opp_table: opp-table {
+                compatible = "operating-points-v2";
+
+                opp-358000000 {
+                    opp-hz = /bits/ 64 <358000000>;
+                    required-opps = <&rpmhpd_opp_svs_l1>;
+                };
+            };
+        };
+
+        mdss0_dsi0_phy: phy@ae94400 {
+            compatible = "qcom,sa8775p-dsi-phy-5nm";
+            reg = <0x0ae94400 0x200>,
+                  <0x0ae94600 0x280>,
+                  <0x0ae94900 0x27c>;
+            reg-names = "dsi_phy",
+                        "dsi_phy_lane",
+                        "dsi_pll";
+
+            #clock-cells = <1>;
+            #phy-cells = <0>;
+
+            clocks = <&dispcc_iface_clk>,
+                     <&rpmhcc_ref_clk>;
+            clock-names = "iface", "ref";
+
+            vdds-supply = <&vreg_dsi_supply>;
+        };
+
+        dsi@ae96000 {
+            compatible = "qcom,sa8775p-dsi-ctrl", "qcom,mdss-dsi-ctrl";
+            reg = <0x0ae96000 0x400>;
+            reg-names = "dsi_ctrl";
+
+            interrupt-parent = <&mdss>;
+            interrupts = <4>;
+
+            clocks = <&dispc_byte_clk>,
+                     <&dispcc_intf_clk>,
+                     <&dispcc_pclk>,
+                     <&dispcc_esc_clk>,
+                     <&dispcc_ahb_clk>,
+                     <&gcc_bus_clk>;
+            clock-names = "byte",
+                          "byte_intf",
+                          "pixel",
+                          "core",
+                          "iface",
+                          "bus";
+            assigned-clocks = <&dispcc_byte_clk>,
+                              <&dispcc_pclk>;
+            assigned-clock-parents = <&mdss0_dsi1_phy 0>, <&mdss0_dsi1_phy 1>;
+            phys = <&mdss0_dsi1_phy>;
+
+            operating-points-v2 = <&dsi1_opp_table>;
+            power-domains = <&rpmhpd SA8775P_MMCX>;
+
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+                    mdss0_dsi1_in: endpoint {
+                        remote-endpoint = <&dpu_intf2_out>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+                    mdss0_dsi1_out: endpoint { };
+                };
+            };
+
+            dsi1_opp_table: opp-table {
+                compatible = "operating-points-v2";
+
+                opp-358000000 {
+                    opp-hz = /bits/ 64 <358000000>;
+                    required-opps = <&rpmhpd_opp_svs_l1>;
+                };
+            };
+        };
+
+        mdss0_dsi1_phy: phy@ae96400 {
+            compatible = "qcom,sa8775p-dsi-phy-5nm";
+            reg = <0x0ae96400 0x200>,
+                  <0x0ae96600 0x280>,
+                  <0x0ae96900 0x27c>;
+            reg-names = "dsi_phy",
+                        "dsi_phy_lane",
+                        "dsi_pll";
+
+            #clock-cells = <1>;
+            #phy-cells = <0>;
+
+            clocks = <&dispcc_iface_clk>,
+                     <&rpmhcc_ref_clk>;
+            clock-names = "iface", "ref";
+
+            vdds-supply = <&vreg_dsi_supply>;
+        };
+
         displayport-controller@af54000 {
             compatible = "qcom,sa8775p-dp";
 
diff --git a/Bindings/display/msm/qcom,sar2130p-mdss.yaml b/Bindings/display/msm/qcom,sar2130p-mdss.yaml
new file mode 100644 (file)
index 0000000..870144b
--- /dev/null
@@ -0,0 +1,439 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/msm/qcom,sar2130p-mdss.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SAR2130P Display MDSS
+
+maintainers:
+  - Dmitry Baryshkov <lumag@kernel.org>
+
+description:
+  SAR2310P MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
+  DPU display controller, DSI and DP interfaces etc.
+
+$ref: /schemas/display/msm/mdss-common.yaml#
+
+properties:
+  compatible:
+    const: qcom,sar2130p-mdss
+
+  clocks:
+    items:
+      - description: Display MDSS AHB
+      - description: Display AHB
+      - description: Display hf AXI
+      - description: Display core
+
+  iommus:
+    maxItems: 1
+
+  interconnects:
+    items:
+      - description: Interconnect path from mdp0 port to the data bus
+      - description: Interconnect path from CPU to the reg bus
+
+  interconnect-names:
+    items:
+      - const: mdp0-mem
+      - const: cpu-cfg
+
+patternProperties:
+  "^display-controller@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        const: qcom,sar2130p-dpu
+
+  "^displayport-controller@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        contains:
+          const: qcom,sar2130p-dp
+
+  "^dsi@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        contains:
+          const: qcom,sar2130p-dsi-ctrl
+
+  "^phy@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        const: qcom,sar2130p-dsi-phy-5nm
+
+required:
+  - compatible
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/qcom,rpmhpd.h>
+    #include <dt-bindings/phy/phy-qcom-qmp.h>
+
+    display-subsystem@ae00000 {
+        compatible = "qcom,sar2130p-mdss";
+        reg = <0x0ae00000 0x1000>;
+        reg-names = "mdss";
+
+        interconnects = <&mmss_noc_master_mdp &mc_virt_slave_ebi1>,
+                        <&gem_noc_master_appss_proc &config_noc_slave_display_cfg>;
+        interconnect-names = "mdp0-mem", "cpu-cfg";
+
+        resets = <&dispcc_disp_cc_mdss_core_bcr>;
+
+        power-domains = <&dispcc_mdss_gdsc>;
+
+        clocks = <&dispcc_disp_cc_mdss_ahb_clk>,
+                 <&gcc_gcc_disp_ahb_clk>,
+                 <&gcc_gcc_disp_hf_axi_clk>,
+                 <&dispcc_disp_cc_mdss_mdp_clk>;
+        clock-names = "iface", "bus", "nrt_bus", "core";
+
+        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+
+        iommus = <&apps_smmu 0x1c00 0x2>;
+
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+
+        display-controller@ae01000 {
+            compatible = "qcom,sar2130p-dpu";
+            reg = <0x0ae01000 0x8f000>,
+                  <0x0aeb0000 0x2008>;
+            reg-names = "mdp", "vbif";
+
+            clocks = <&gcc_gcc_disp_ahb_clk>,
+                     <&gcc_gcc_disp_hf_axi_clk>,
+                     <&dispcc_disp_cc_mdss_ahb_clk>,
+                     <&dispcc_disp_cc_mdss_mdp_lut_clk>,
+                     <&dispcc_disp_cc_mdss_mdp_clk>,
+                     <&dispcc_disp_cc_mdss_vsync_clk>;
+            clock-names = "bus",
+                          "nrt_bus",
+                          "iface",
+                          "lut",
+                          "core",
+                          "vsync";
+
+            assigned-clocks = <&dispcc_disp_cc_mdss_vsync_clk>;
+            assigned-clock-rates = <19200000>;
+
+            operating-points-v2 = <&mdp_opp_table>;
+            power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+            interrupt-parent = <&mdss>;
+            interrupts = <0>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    dpu_intf0_out: endpoint {
+                        remote-endpoint = <&mdss_dp0_in>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+
+                    dpu_intf1_out: endpoint {
+                        remote-endpoint = <&mdss_dsi0_in>;
+                    };
+                };
+
+                port@2 {
+                    reg = <2>;
+
+                    dpu_intf2_out: endpoint {
+                        remote-endpoint = <&mdss_dsi1_in>;
+                    };
+                };
+            };
+
+            mdp_opp_table: opp-table {
+                compatible = "operating-points-v2";
+
+                opp-200000000 {
+                    opp-hz = /bits/ 64 <200000000>;
+                    required-opps = <&rpmhpd_opp_low_svs>;
+                };
+
+                opp-325000000 {
+                    opp-hz = /bits/ 64 <325000000>;
+                    required-opps = <&rpmhpd_opp_svs>;
+                };
+
+                opp-375000000 {
+                    opp-hz = /bits/ 64 <375000000>;
+                    required-opps = <&rpmhpd_opp_svs_l1>;
+                };
+
+                opp-514000000 {
+                    opp-hz = /bits/ 64 <514000000>;
+                    required-opps = <&rpmhpd_opp_nom>;
+                };
+            };
+        };
+
+        displayport-controller@ae90000 {
+            compatible = "qcom,sar2130p-dp",
+                         "qcom,sm8350-dp";
+            reg = <0xae90000 0x200>,
+                  <0xae90200 0x200>,
+                  <0xae90400 0xc00>,
+                  <0xae91000 0x400>,
+                  <0xae91400 0x400>;
+
+            interrupt-parent = <&mdss>;
+            interrupts = <12>;
+            clocks = <&dispcc_disp_cc_mdss_ahb_clk>,
+                     <&dispcc_disp_cc_mdss_dptx0_aux_clk>,
+                     <&dispcc_disp_cc_mdss_dptx0_link_clk>,
+                     <&dispcc_disp_cc_mdss_dptx0_link_intf_clk>,
+                     <&dispcc_disp_cc_mdss_dptx0_pixel0_clk>;
+            clock-names = "core_iface",
+                          "core_aux",
+                          "ctrl_link",
+                          "ctrl_link_iface",
+                          "stream_pixel";
+
+            assigned-clocks = <&dispcc_disp_cc_mdss_dptx0_link_clk_src>,
+                              <&dispcc_disp_cc_mdss_dptx0_pixel0_clk_src>;
+            assigned-clock-parents = <&usb_dp_qmpphy_QMP_USB43DP_DP_LINK_CLK>,
+                                     <&usb_dp_qmpphy_QMP_USB43DP_DP_VCO_DIV_CLK>;
+
+            phys = <&usb_dp_qmpphy QMP_USB43DP_DP_PHY>;
+            phy-names = "dp";
+
+            #sound-dai-cells = <0>;
+
+            operating-points-v2 = <&dp_opp_table>;
+            power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+                    mdss_dp0_in: endpoint {
+                        remote-endpoint = <&dpu_intf0_out>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+                    mdss_dp0_out: endpoint {
+                        remote-endpoint = <&usb_dp_qmpphy_dp_in>;
+                    };
+                };
+        };
+
+        dp_opp_table: opp-table {
+                compatible = "operating-points-v2";
+
+                opp-162000000 {
+                    opp-hz = /bits/ 64 <162000000>;
+                    required-opps = <&rpmhpd_opp_low_svs_d1>;
+                };
+
+                opp-270000000 {
+                    opp-hz = /bits/ 64 <270000000>;
+                    required-opps = <&rpmhpd_opp_low_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>;
+                };
+            };
+        };
+
+        dsi@ae94000 {
+            compatible = "qcom,sar2130p-dsi-ctrl",
+                         "qcom,mdss-dsi-ctrl";
+            reg = <0x0ae94000 0x400>;
+            reg-names = "dsi_ctrl";
+
+            interrupt-parent = <&mdss>;
+            interrupts = <4>;
+
+            clocks = <&dispcc_disp_cc_mdss_byte0_clk>,
+                     <&dispcc_disp_cc_mdss_byte0_intf_clk>,
+                     <&dispcc_disp_cc_mdss_pclk0_clk>,
+                     <&dispcc_disp_cc_mdss_esc0_clk>,
+                     <&dispcc_disp_cc_mdss_ahb_clk>,
+                     <&gcc_gcc_disp_hf_axi_clk>;
+            clock-names = "byte",
+                          "byte_intf",
+                          "pixel",
+                          "core",
+                          "iface",
+                          "bus";
+
+            assigned-clocks = <&dispcc_disp_cc_mdss_byte0_clk_src>,
+                              <&dispcc_disp_cc_mdss_pclk0_clk_src>;
+            assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+
+            operating-points-v2 = <&dsi_opp_table>;
+            power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+            phys = <&mdss_dsi0_phy>;
+            phy-names = "dsi";
+
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    mdss_dsi0_in: endpoint {
+                        remote-endpoint = <&dpu_intf1_out>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+
+                    mdss_dsi0_out: endpoint {
+                    };
+                };
+            };
+
+            dsi_opp_table: opp-table {
+                compatible = "operating-points-v2";
+
+                opp-187500000 {
+                    opp-hz = /bits/ 64 <187500000>;
+                    required-opps = <&rpmhpd_opp_low_svs>;
+                };
+
+                opp-300000000 {
+                    opp-hz = /bits/ 64 <300000000>;
+                    required-opps = <&rpmhpd_opp_svs>;
+                };
+
+                opp-358000000 {
+                    opp-hz = /bits/ 64 <358000000>;
+                    required-opps = <&rpmhpd_opp_svs_l1>;
+                };
+            };
+        };
+
+        mdss_dsi0_phy: phy@ae94400 {
+            compatible = "qcom,sar2130p-dsi-phy-5nm";
+            reg = <0x0ae95000 0x200>,
+                  <0x0ae95200 0x280>,
+                  <0x0ae95500 0x400>;
+            reg-names = "dsi_phy",
+                        "dsi_phy_lane",
+                        "dsi_pll";
+
+            #clock-cells = <1>;
+            #phy-cells = <0>;
+
+            clocks = <&dispcc_disp_cc_mdss_ahb_clk>,
+                     <&rpmhcc_rpmh_cxo_clk>;
+            clock-names = "iface", "ref";
+        };
+
+        dsi@ae96000 {
+            compatible = "qcom,sar2130p-dsi-ctrl",
+                         "qcom,mdss-dsi-ctrl";
+            reg = <0x0ae96000 0x400>;
+            reg-names = "dsi_ctrl";
+
+            interrupt-parent = <&mdss>;
+            interrupts = <5>;
+
+            clocks = <&dispcc_disp_cc_mdss_byte1_clk>,
+                     <&dispcc_disp_cc_mdss_byte1_intf_clk>,
+                     <&dispcc_disp_cc_mdss_pclk1_clk>,
+                     <&dispcc_disp_cc_mdss_esc1_clk>,
+                     <&dispcc_disp_cc_mdss_ahb_clk>,
+                     <&gcc_gcc_disp_hf_axi_clk>;
+            clock-names = "byte",
+                          "byte_intf",
+                          "pixel",
+                          "core",
+                          "iface",
+                          "bus";
+
+            assigned-clocks = <&dispcc_disp_cc_mdss_byte1_clk_src>,
+                              <&dispcc_disp_cc_mdss_pclk1_clk_src>;
+            assigned-clock-parents = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
+
+            operating-points-v2 = <&dsi_opp_table>;
+            power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+            phys = <&mdss_dsi1_phy>;
+            phy-names = "dsi";
+
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    mdss_dsi1_in: endpoint {
+                        remote-endpoint = <&dpu_intf2_out>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+
+                    mdss_dsi1_out: endpoint {
+                    };
+                };
+            };
+        };
+
+        mdss_dsi1_phy: phy@ae97000 {
+            compatible = "qcom,sar2130p-dsi-phy-5nm";
+            reg = <0x0ae97000 0x200>,
+                  <0x0ae97200 0x280>,
+                  <0x0ae97500 0x400>;
+            reg-names = "dsi_phy",
+                        "dsi_phy_lane",
+                        "dsi_pll";
+
+            #clock-cells = <1>;
+            #phy-cells = <0>;
+
+            clocks = <&dispcc_disp_cc_mdss_ahb_clk>,
+                     <&rpmhcc_rpmh_cxo_clk>;
+            clock-names = "iface", "ref";
+        };
+    };
+...
index 6902795b4e2c249c2b543c1c5350f739a30553f2..df9ec15ad6c3ca1f77bebaab19ffa3adb985733d 100644 (file)
@@ -17,6 +17,7 @@ $ref: /schemas/display/msm/dpu-common.yaml#
 properties:
   compatible:
     enum:
+      - qcom,sar2130p-dpu
       - qcom,sc7280-dpu
       - qcom,sc8280xp-dpu
       - qcom,sm8350-dpu
index 163fc83c1e80cf07383f9aef510f2f58a26e1ecc..68176de854b36b9d5e31bce2753c468b569989b3 100644 (file)
@@ -38,12 +38,16 @@ properties:
     maxItems: 1
 
   interconnects:
-    maxItems: 2
+    items:
+      - description: Interconnect path from the MDP0 port to the data bus
+      - description: Interconnect path from the MDP1 port to the data bus
+      - description: Interconnect path from the CPU to the reg bus
 
   interconnect-names:
     items:
       - const: mdp0-mem
       - const: mdp1-mem
+      - const: cpu-cfg
 
 patternProperties:
   "^display-controller@[0-9a-f]+$":
@@ -88,6 +92,7 @@ examples:
     #include <dt-bindings/clock/qcom,gcc-sm8350.h>
     #include <dt-bindings/clock/qcom,rpmh.h>
     #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interconnect/qcom,icc.h>
     #include <dt-bindings/interconnect/qcom,sm8350.h>
     #include <dt-bindings/power/qcom,rpmhpd.h>
 
@@ -97,8 +102,10 @@ examples:
         reg-names = "mdss";
 
         interconnects = <&mmss_noc MASTER_MDP0 0 &mc_virt SLAVE_EBI1 0>,
-                        <&mmss_noc MASTER_MDP1 0 &mc_virt SLAVE_EBI1 0>;
-        interconnect-names = "mdp0-mem", "mdp1-mem";
+                        <&mmss_noc MASTER_MDP1 0 &mc_virt SLAVE_EBI1 0>,
+                        <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                         &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
+        interconnect-names = "mdp0-mem", "mdp1-mem", "cpu-cfg";
 
         power-domains = <&dispcc MDSS_GDSC>;
         resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
diff --git a/Bindings/display/panel/boe,td4320.yaml b/Bindings/display/panel/boe,td4320.yaml
new file mode 100644 (file)
index 0000000..c6bff0e
--- /dev/null
@@ -0,0 +1,65 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/boe,td4320.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: BOE TD4320 MIPI-DSI panels
+
+maintainers:
+  - Barnabas Czeman <barnabas.czeman@mainlining.org>
+
+description:
+  BOE TD4320 6.3" 1080x2340 panel found in Xiaomi Redmi Note 7 smartphone.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    items:
+      - const: boe,td4320
+
+  reg:
+    maxItems: 1
+
+  iovcc-supply:
+    description: I/O voltage rail
+
+  vsn-supply:
+    description: Negative source voltage rail
+
+  vsp-supply:
+    description: Positive source voltage rail
+
+required:
+  - compatible
+  - reg
+  - reset-gpios
+  - port
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "boe,td4320";
+            reg = <0>;
+            backlight = <&backlight>;
+            reset-gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
+
+            port {
+                panel_in: endpoint {
+                    remote-endpoint = <&dsi_out>;
+                };
+            };
+        };
+    };
+
+...
diff --git a/Bindings/display/panel/himax,hx8279.yaml b/Bindings/display/panel/himax,hx8279.yaml
new file mode 100644 (file)
index 0000000..f619aea
--- /dev/null
@@ -0,0 +1,75 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/himax,hx8279.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Himax HX8279/HX8279-D based MIPI-DSI panels
+
+maintainers:
+  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+
+description:
+  The Himax HX8279 is a 1803 channel outputs source driver with MIPI
+  TCON, which generates the horizontal and vertical control timing to
+  the source and gate drivers.
+  This DriverIC is most suitable for 1200x1920, 1080x1920, 1200x1600,
+  and 600x1024 panels and outputs full RGB888 over two or four lanes,
+  single or dual, MIPI-DSI video interface.
+
+allOf:
+  - $ref: panel-common-dual.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - aoly,sl101pm1794fog-v15
+          - startek,kd070fhfid078
+      - const: himax,hx8279
+
+  reg:
+    maxItems: 1
+
+  iovcc-supply:
+    description: I/O voltage supply
+
+  vdd-supply:
+    description: Panel power supply
+
+required:
+  - compatible
+  - reg
+  - backlight
+  - reset-gpios
+  - iovcc-supply
+  - vdd-supply
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "startek,kd070fhfid078", "himax,hx8279";
+            reg = <0>;
+            backlight = <&backlight>;
+            enable-gpios = <&pio 25 GPIO_ACTIVE_HIGH>;
+            reset-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
+            iovcc-supply = <&vreg_lcm_vio>;
+            vdd-supply = <&vreg_lcm_vdd>;
+
+            port {
+                panel_in: endpoint {
+                    remote-endpoint = <&dsi_out>;
+                };
+            };
+        };
+    };
+
+...
index e2a2dd4ef5fa21546ac833fbae40bb5525687272..5fcea62fd58f74a190129fccc20924115b7fa273 100644 (file)
@@ -23,6 +23,7 @@ properties:
     maxItems: 1
 
   backlight: true
+  port: true
   reset-gpios: true
   iovcc-supply:
     description: regulator that supplies the iovcc voltage
index af9e0ea0e72f94f3fe30fac4eaf4ec0691e93144..b0e2c82232d33509e0eefe007ea2be6b3f56ff06 100644 (file)
@@ -22,6 +22,7 @@ properties:
     maxItems: 1
 
   backlight: true
+  port: true
   reset-gpios: true
   iovcc-supply:
     description: regulator that supplies the iovcc voltage
index bbaaa783d184eb97e45d740085e2f24a84275c39..2219d3d4ac43bc369abebb853ecff18bf99333fb 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: LG SW43408 1080x2160 DSI panel
 
 maintainers:
-  - Caleb Connolly <caleb.connolly@linaro.org>
+  - Casey Connolly <casey.connolly@linaro.org>
 
 description:
   This panel is used on the Pixel 3, it is a 60hz OLED panel which
diff --git a/Bindings/display/panel/novatek,nt37801.yaml b/Bindings/display/panel/novatek,nt37801.yaml
new file mode 100644 (file)
index 0000000..1b38c1d
--- /dev/null
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/novatek,nt37801.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Novatek NT37801 AMOLED DSI Panel
+
+maintainers:
+  - Krzysztof Kozlowski <krzk@kernel.org>
+
+description:
+  Naming is inconclusive and different sources claim this is either Novatek
+  NT37801 or NT37810 AMOLED DSI Panel.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    const: novatek,nt37801
+
+  reg:
+    maxItems: 1
+    description: DSI virtual channel
+
+  vci-supply: true
+  vdd-supply: true
+  vddio-supply: true
+  port: true
+  reset-gpios: true
+
+required:
+  - compatible
+  - reg
+  - vci-supply
+  - vdd-supply
+  - vddio-supply
+  - port
+  - reset-gpios
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "novatek,nt37801";
+            reg = <0>;
+
+            vci-supply = <&vreg_l13b_3p0>;
+            vdd-supply = <&vreg_l11b_1p2>;
+            vddio-supply = <&vreg_l12b_1p8>;
+
+            reset-gpios = <&tlmm 98 GPIO_ACTIVE_LOW>;
+
+            port {
+                endpoint {
+                    remote-endpoint = <&dsi0_out>;
+                };
+            };
+        };
+    };
+...
index b0de4fd6f3d4129d10e07b46533bb551784d8d53..5542c9229d54a000a6493ed64f03eda59c7efb02 100644 (file)
@@ -226,6 +226,8 @@ properties:
       - netron-dy,e231732
         # Newhaven Display International 480 x 272 TFT LCD panel
       - newhaven,nhd-4.3-480272ef-atxl
+        # NLT Technologies, Ltd. 15.6" WXGA (1366×768) LVDS TFT LCD panel
+      - nlt,nl13676bc25-03f
         # New Vision Display 7.0" 800 RGB x 480 TFT LCD panel
       - nvd,9128
         # OKAYA Electric America, Inc. RS800480T-7X0GP 7" WVGA LCD panel
@@ -246,6 +248,8 @@ properties:
       - osddisplays,osd070t1718-19ts
         # One Stop Displays OSD101T2045-53TS 10.1" 1920x1200 panel
       - osddisplays,osd101t2045-53ts
+        # POWERTIP PH128800T004-ZZA01 10.1" WXGA TFT LCD panel
+      - powertip,ph128800t004-zza01
         # POWERTIP PH128800T006-ZHC01 10.1" WXGA TFT LCD panel
       - powertip,ph128800t006-zhc01
         # POWERTIP PH800480T013-IDF2 7.0" WVGA TFT LCD panel
@@ -284,6 +288,8 @@ properties:
       - startek,kd070wvfpa
         # Team Source Display Technology TST043015CMHX 4.3" WQVGA TFT LCD panel
       - team-source-display,tst043015cmhx
+        # Tianma Micro-electronics P0700WXF1MBAA 7.0" WXGA (1280x800) LVDS TFT LCD panel
+      - tianma,p0700wxf1mbaa
         # Tianma Micro-electronics TM070JDHG30 7.0" WXGA TFT LCD panel
       - tianma,tm070jdhg30
         # Tianma Micro-electronics TM070JDHG34-00 7.0" WXGA (1280x800) LVDS TFT LCD panel
index 684c2896d2387077cf2d91cc5a025e0838c0f536..31f0c0f038e494234d896691f3cf0b9b7cd8842d 100644 (file)
@@ -19,6 +19,8 @@ properties:
       - const: samsung,atna33xc20
       - items:
           - enum:
+              # Samsung 14" WQXGA+ (2880×1800 pixels) eDP AMOLED panel
+              - samsung,atna40yk20
               # Samsung 14.5" WQXGA+ (2880x1800 pixels) eDP AMOLED panel
               - samsung,atna45af01
               # Samsung 14.5" 3K (2944x1840 pixels) eDP AMOLED panel
diff --git a/Bindings/display/panel/truly,nt35597-2K-display.yaml b/Bindings/display/panel/truly,nt35597-2K-display.yaml
new file mode 100644 (file)
index 0000000..36be09c
--- /dev/null
@@ -0,0 +1,97 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/truly,nt35597-2K-display.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Truly NT35597 DSI 2K display
+
+maintainers:
+  - Neil Armstrong <neil.armstrong@linaro.org>
+
+description: |
+  Truly NT35597 DSI 2K display is used on the Qualcomm SDM845 MTP board.
+
+allOf:
+  - $ref: panel-common-dual.yaml#
+
+properties:
+  compatible:
+    const: truly,nt35597-2K-display
+
+  reg:
+    maxItems: 1
+
+  vdda-supply:
+    description: regulator that provides the supply voltage Power IC supply
+
+  vdispp-supply:
+    description: regulator that provides the supply voltage for positive LCD bias
+
+  vdispn-supply:
+    description: regulator that provides the supply voltage for negative LCD bias
+
+  reset-gpios: true
+
+  mode-gpios:
+    description:
+      Gpio for choosing the mode of the display for single DSI or Dual DSI.
+      This should be low for dual DSI and high for single DSI mode.
+
+  ports:
+    required:
+      - port@0
+      - port@1
+
+required:
+  - compatible
+  - reg
+  - vdda-supply
+  - reset-gpios
+  - mode-gpios
+  - ports
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "truly,nt35597-2K-display";
+            reg = <0>;
+
+            vdda-supply = <&pm8998_l14>;
+            vdispp-supply = <&lab_regulator>;
+            vdispn-supply = <&ibb_regulator>;
+
+            reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
+            mode-gpios = <&tlmm 52 GPIO_ACTIVE_HIGH>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+
+                    panel0_in: endpoint {
+                        remote-endpoint = <&dsi0_out>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+
+                    panel1_in: endpoint {
+                        remote-endpoint = <&dsi1_out>;
+                    };
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/display/panel/visionox,g2647fb105.yaml b/Bindings/display/panel/visionox,g2647fb105.yaml
new file mode 100644 (file)
index 0000000..49dcd9b
--- /dev/null
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/panel/visionox,g2647fb105.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Visionox G2647FB105 6.47" 1080x2340 MIPI-DSI Panel
+
+maintainers:
+  - Alexander Baransky <sanyapilot496@gmail.com>
+
+description:
+  The Visionox G2647FB105 is a 6.47 inch 1080x2340 MIPI-DSI CMD mode OLED panel.
+
+allOf:
+  - $ref: panel-common.yaml#
+
+properties:
+  compatible:
+    const: visionox,g2647fb105
+
+  reg:
+    maxItems: 1
+
+  vdd3p3-supply:
+    description: 3.3V source voltage rail
+
+  vddio-supply:
+    description: I/O source voltage rail
+
+  vsn-supply:
+    description: Negative source voltage rail
+
+  vsp-supply:
+    description: Positive source voltage rail
+
+  reset-gpios: true
+  port: true
+
+required:
+  - compatible
+  - reg
+  - vdd3p3-supply
+  - vddio-supply
+  - vsn-supply
+  - vsp-supply
+  - reset-gpios
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    dsi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        panel@0 {
+            compatible = "visionox,g2647fb105";
+            reg = <0>;
+
+            vdd3p3-supply = <&vreg_l7c_3p0>;
+            vddio-supply = <&vreg_l13a_1p8>;
+            vsn-supply = <&vreg_ibb>;
+            vsp-supply = <&vreg_lab>;
+
+            reset-gpios = <&pm6150l_gpios 9 GPIO_ACTIVE_LOW>;
+
+            port {
+                panel_in: endpoint {
+                    remote-endpoint = <&mdss_dsi0_out>;
+                };
+            };
+        };
+    };
+
+...
diff --git a/Bindings/display/rockchip/cdn-dp-rockchip.txt b/Bindings/display/rockchip/cdn-dp-rockchip.txt
deleted file mode 100644 (file)
index 8df7d2e..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-Rockchip RK3399 specific extensions to the cdn Display Port
-================================
-
-Required properties:
-- compatible: must be "rockchip,rk3399-cdn-dp"
-
-- reg: physical base address of the controller and length
-
-- clocks: from common clock binding: handle to dp clock.
-
-- clock-names: from common clock binding:
-              Required elements: "core-clk" "pclk" "spdif" "grf"
-
-- resets : a list of phandle + reset specifier pairs
-- reset-names : string of reset names
-               Required elements: "apb", "core", "dptx", "spdif"
-- power-domains : power-domain property defined with a phandle
-                 to respective power domain.
-- assigned-clocks: main clock, should be <&cru SCLK_DP_CORE>
-- assigned-clock-rates : the DP core clk frequency, shall be: 100000000
-
-- rockchip,grf: this soc should set GRF regs, so need get grf here.
-
-- ports: contain a port nodes with endpoint definitions as defined in
-        Documentation/devicetree/bindings/media/video-interfaces.txt.
-        contained 2 endpoints, connecting to the output of vop.
-
-- phys: from general PHY binding: the phandle for the PHY device.
-
-- extcon: extcon specifier for the Power Delivery
-
-- #sound-dai-cells = it must be 1 if your system is using 2 DAIs: I2S, SPDIF
-
--------------------------------------------------------------------------------
-
-Example:
-       cdn_dp: dp@fec00000 {
-               compatible = "rockchip,rk3399-cdn-dp";
-               reg = <0x0 0xfec00000 0x0 0x100000>;
-               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru SCLK_DP_CORE>, <&cru PCLK_DP_CTRL>,
-                        <&cru SCLK_SPDIF_REC_DPTX>, <&cru PCLK_VIO_GRF>;
-               clock-names = "core-clk", "pclk", "spdif", "grf";
-               assigned-clocks = <&cru SCLK_DP_CORE>;
-               assigned-clock-rates = <100000000>;
-               power-domains = <&power RK3399_PD_HDCP>;
-               phys = <&tcphy0_dp>, <&tcphy1_dp>;
-               resets = <&cru SRST_DPTX_SPDIF_REC>;
-               reset-names = "spdif";
-               extcon = <&fusb0>, <&fusb1>;
-               rockchip,grf = <&grf>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               #sound-dai-cells = <1>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       dp_in: port {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               dp_in_vopb: endpoint@0 {
-                                       reg = <0>;
-                                       remote-endpoint = <&vopb_out_dp>;
-                               };
-
-                               dp_in_vopl: endpoint@1 {
-                                       reg = <1>;
-                                       remote-endpoint = <&vopl_out_dp>;
-                               };
-                       };
-               };
-       };
index 60dedf9b2be73ebcea7bf282e964843ac4b40e49..d99b23b88cc59da7dd60f5d9e35c0f7e3a9e67ae 100644 (file)
@@ -15,6 +15,7 @@ properties:
     enum:
       - rockchip,rk3288-dp
       - rockchip,rk3399-edp
+      - rockchip,rk3588-edp
 
   clocks:
     minItems: 2
@@ -31,16 +32,23 @@ properties:
     maxItems: 1
 
   resets:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
 
   reset-names:
-    const: dp
+    minItems: 1
+    items:
+      - const: dp
+      - const: apb
 
   rockchip,grf:
     $ref: /schemas/types.yaml#/definitions/phandle
     description:
       This SoC makes use of GRF regs.
 
+  aux-bus:
+    $ref: /schemas/display/dp-aux-bus.yaml#
+
 required:
   - compatible
   - clocks
@@ -52,6 +60,19 @@ required:
 allOf:
   - $ref: /schemas/display/bridge/analogix,dp.yaml#
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rockchip,rk3588-edp
+    then:
+      properties:
+        resets:
+          minItems: 2
+        reset-names:
+          minItems: 2
+
 unevaluatedProperties: false
 
 examples:
index 5b87b0f1963e169e41ba18e8e4f535b064072a58..290376bec079ab434b097c35e42c2bbf9f6a69cf 100644 (file)
@@ -23,13 +23,11 @@ properties:
     maxItems: 1
 
   clocks:
-    minItems: 1
     items:
       - description: The HDMI controller main clock
       - description: The HDMI PHY reference clock
 
   clock-names:
-    minItems: 1
     items:
       - const: pclk
       - const: ref
@@ -58,6 +56,12 @@ properties:
       - port@0
       - port@1
 
+  rockchip,grf:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to GRF used for control the polarity of hsync/vsync of rk3036
+      HDMI.
+
 required:
   - compatible
   - reg
@@ -77,6 +81,8 @@ allOf:
             const: rockchip,rk3036-inno-hdmi
 
     then:
+      required:
+        - rockchip,grf
       properties:
         power-domains: false
 
@@ -87,11 +93,6 @@ allOf:
             const: rockchip,rk3128-inno-hdmi
 
     then:
-      properties:
-        clocks:
-          minItems: 2
-        clock-names:
-          minItems: 2
       required:
         - power-domains
 
@@ -106,10 +107,11 @@ examples:
       compatible = "rockchip,rk3036-inno-hdmi";
       reg = <0x20034000 0x4000>;
       interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
-      clocks = <&cru  PCLK_HDMI>;
-      clock-names = "pclk";
+      clocks = <&cru PCLK_HDMI>, <&cru SCLK_LCDC>;
+      clock-names = "pclk", "ref";
       pinctrl-names = "default";
       pinctrl-0 = <&hdmi_ctl>;
+      rockchip,grf = <&grf>;
       #sound-dai-cells = <0>;
 
       ports {
diff --git a/Bindings/display/rockchip/rockchip,rk3399-cdn-dp.yaml b/Bindings/display/rockchip/rockchip,rk3399-cdn-dp.yaml
new file mode 100644 (file)
index 0000000..1a33128
--- /dev/null
@@ -0,0 +1,170 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip RK3399 specific extensions to the CDN Display Port
+
+maintainers:
+  - Andy Yan <andy.yan@rock-chip.com>
+  - Heiko Stuebner <heiko@sntech.de>
+  - Sandy Huang <hjc@rock-chips.com>
+
+allOf:
+  - $ref: /schemas/sound/dai-common.yaml#
+
+properties:
+  compatible:
+    items:
+      - const: rockchip,rk3399-cdn-dp
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: DP core work clock
+      - description: APB clock
+      - description: SPDIF interface clock
+      - description: GRF clock
+
+  clock-names:
+    items:
+      - const: core-clk
+      - const: pclk
+      - const: spdif
+      - const: grf
+
+  extcon:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    minItems: 1
+    items:
+      - description: Extcon device providing the cable state for DP PHY device 0
+      - description: Extcon device providing the cable state for DP PHY device 1
+    description:
+      List of phandle to the extcon device providing the cable state for the DP PHY.
+
+  interrupts:
+    maxItems: 1
+
+  phys:
+    minItems: 1
+    items:
+      - description: DP output to the DP PHY device 0
+      - description: DP output to the DP PHY device 1
+    description:
+      RK3399 have two DP-USB PHY, specifying one PHY which want to use, or
+      specify two PHYs here to let the driver determine which PHY to use.
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Input of the CDN DP
+
+        properties:
+          endpoint@0:
+            description: Connection to the VOPB
+
+          endpoint@1:
+            description: Connection to the VOPL
+
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Output of the CDN DP
+
+    required:
+      - port@0
+      - port@1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 4
+
+  reset-names:
+    items:
+      - const: spdif
+      - const: dptx
+      - const: apb
+      - const: core
+
+  rockchip,grf:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to GRF register to control HPD.
+
+  "#sound-dai-cells":
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - phys
+  - ports
+  - resets
+  - reset-names
+  - rockchip,grf
+  - "#sound-dai-cells"
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/rk3399-cru.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/power/rk3399-power.h>
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        dp@fec00000 {
+            compatible = "rockchip,rk3399-cdn-dp";
+            reg = <0x0 0xfec00000 0x0 0x100000>;
+            assigned-clocks = <&cru SCLK_DP_CORE>;
+            assigned-clock-rates = <100000000>;
+            interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&cru SCLK_DP_CORE>, <&cru PCLK_DP_CTRL>, <&cru SCLK_SPDIF_REC_DPTX>,
+                    <&cru PCLK_VIO_GRF>;
+            clock-names = "core-clk", "pclk", "spdif", "grf";
+            power-domains = <&power RK3399_PD_HDCP>;
+            phys = <&tcphy0_dp>, <&tcphy1_dp>;
+            resets = <&cru SRST_DPTX_SPDIF_REC>, <&cru SRST_P_UPHY0_DPTX>,
+                    <&cru SRST_P_UPHY0_APB>, <&cru SRST_DP_CORE>;
+            reset-names = "spdif", "dptx", "apb", "core";
+            rockchip,grf = <&grf>;
+            #sound-dai-cells = <1>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                dp_in: port@0 {
+                    reg = <0>;
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    dp_in_vopb: endpoint@0 {
+                        reg = <0>;
+                        remote-endpoint = <&vopb_out_dp>;
+                    };
+
+                    dp_in_vopl: endpoint@1 {
+                        reg = <1>;
+                        remote-endpoint = <&vopl_out_dp>;
+                    };
+                };
+
+                dp_out: port@1 {
+                    reg = <1>;
+                };
+            };
+        };
+    };
index b339b7e708c658c11a15e9ba32479f74609533bc..8b5f58103dda9165e261e93b959b54ee6b64b0f3 100644 (file)
@@ -73,12 +73,6 @@ properties:
   port:
     $ref: /schemas/graph.yaml#/properties/port
 
-  assigned-clocks:
-    maxItems: 2
-
-  assigned-clock-rates:
-    maxItems: 2
-
   iommus:
     maxItems: 1
 
diff --git a/Bindings/display/sitronix,st7571.yaml b/Bindings/display/sitronix,st7571.yaml
new file mode 100644 (file)
index 0000000..4fea782
--- /dev/null
@@ -0,0 +1,73 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/sitronix,st7571.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sitronix ST7571 Display Controller
+
+maintainers:
+  - Marcus Folkesson <marcus.folkesson@gmail.com>
+
+description:
+  Sitronix ST7571 is a driver and controller for 4-level gray
+  scale and monochrome dot matrix LCD panels.
+
+allOf:
+  - $ref: panel/panel-common.yaml#
+
+properties:
+  compatible:
+    const: sitronix,st7571
+
+  reg:
+    maxItems: 1
+
+  sitronix,grayscale:
+    type: boolean
+    description:
+      Display supports 4-level grayscale.
+
+  reset-gpios: true
+  width-mm: true
+  height-mm: true
+  panel-timing: true
+
+required:
+  - compatible
+  - reg
+  - reset-gpios
+  - width-mm
+  - height-mm
+  - panel-timing
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      display@3f {
+        compatible = "sitronix,st7571";
+        reg = <0x3f>;
+        reset-gpios = <&gpio0 3 GPIO_ACTIVE_LOW>;
+        width-mm = <37>;
+        height-mm = <27>;
+
+        panel-timing {
+          hactive = <128>;
+          vactive = <96>;
+          hback-porch = <0>;
+          vback-porch = <0>;
+          clock-frequency = <0>;
+          hfront-porch = <0>;
+          hsync-len = <0>;
+          vfront-porch = <0>;
+          vsync-len = <0>;
+        };
+      };
+    };
diff --git a/Bindings/display/truly,nt35597.txt b/Bindings/display/truly,nt35597.txt
deleted file mode 100644 (file)
index f39c77e..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-Truly model NT35597 DSI display driver
-
-The Truly NT35597 is a generic display driver, currently only configured
-for use in the 2K display on the Qualcomm SDM845 MTP board.
-
-Required properties:
-- compatible: should be "truly,nt35597-2K-display"
-- vdda-supply: phandle of the regulator that provides the supply voltage
-  Power IC supply
-- vdispp-supply: phandle of the regulator that provides the supply voltage
-  for positive LCD bias
-- vdispn-supply: phandle of the regulator that provides the supply voltage
-  for negative LCD bias
-- reset-gpios: phandle of gpio for reset line
-  This should be 8mA, gpio can be configured using mux, pinctrl, pinctrl-names
-  (active low)
-- mode-gpios: phandle of the gpio for choosing the mode of the display
-  for single DSI or Dual DSI
-  This should be low for dual DSI and high for single DSI mode
-- ports: This device has two video ports driven by two DSIs. Their connections
-  are modeled using the OF graph bindings specified in
-  Documentation/devicetree/bindings/graph.txt.
-  - port@0: DSI input port driven by master DSI
-  - port@1: DSI input port driven by secondary DSI
-
-Example:
-
-       dsi@ae94000 {
-               panel@0 {
-                       compatible = "truly,nt35597-2K-display";
-                       reg = <0>;
-                       vdda-supply = <&pm8998_l14>;
-                       vdispp-supply = <&lab_regulator>;
-                       vdispn-supply = <&ibb_regulator>;
-                       pinctrl-names = "default", "suspend";
-                       pinctrl-0 = <&dpu_dsi_active>;
-                       pinctrl-1 = <&dpu_dsi_suspend>;
-
-                       reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
-                       mode-gpios = <&tlmm 52 GPIO_ACTIVE_HIGH>;
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-                               port@0 {
-                                       reg = <0>;
-                                       panel0_in: endpoint {
-                                               remote-endpoint = <&dsi0_out>;
-                                       };
-                               };
-
-                               port@1 {
-                                       reg = <1>;
-                                       panel1_in: endpoint {
-                                               remote-endpoint = <&dsi1_out>;
-                                       };
-                               };
-                       };
-               };
-       };
diff --git a/Bindings/dma/arm,dma-350.yaml b/Bindings/dma/arm,dma-350.yaml
new file mode 100644 (file)
index 0000000..429f682
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dma/arm,dma-350.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Arm CoreLink DMA-350 Controller
+
+maintainers:
+  - Robin Murphy <robin.murphy@arm.com>
+
+allOf:
+  - $ref: dma-controller.yaml#
+
+properties:
+  compatible:
+    const: arm,dma-350
+
+  reg:
+    items:
+      - description: Base and size of the full register map
+
+  interrupts:
+    minItems: 1
+    items:
+      - description: Channel 0 interrupt
+      - description: Channel 1 interrupt
+      - description: Channel 2 interrupt
+      - description: Channel 3 interrupt
+      - description: Channel 4 interrupt
+      - description: Channel 5 interrupt
+      - description: Channel 6 interrupt
+      - description: Channel 7 interrupt
+
+  "#dma-cells":
+    const: 1
+    description: The cell is the trigger input number
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+unevaluatedProperties: false
index 950e8fa4f4ab446e59a9f2934716f79ddda9c91d..fa4248e2f1b9cecd00f1535744bfe6d9ecdba613 100644 (file)
@@ -48,11 +48,11 @@ properties:
 
   interrupts:
     minItems: 1
-    maxItems: 64
+    maxItems: 65
 
   interrupt-names:
     minItems: 1
-    maxItems: 64
+    maxItems: 65
 
   "#dma-cells":
     description: |
diff --git a/Bindings/dma/nvidia,tegra20-apbdma.txt b/Bindings/dma/nvidia,tegra20-apbdma.txt
deleted file mode 100644 (file)
index 447fb44..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-* NVIDIA Tegra APB DMA controller
-
-Required properties:
-- compatible: Should be "nvidia,<chip>-apbdma"
-- reg: Should contain DMA registers location and length. This should include
-  all of the per-channel registers.
-- interrupts: Should contain all of the per-channel DMA interrupts.
-- clocks: Must contain one entry, for the module clock.
-  See ../clocks/clock-bindings.txt for details.
-- resets : Must contain an entry for each entry in reset-names.
-  See ../reset/reset.txt for details.
-- reset-names : Must include the following entries:
-  - dma
-- #dma-cells : Must be <1>. This dictates the length of DMA specifiers in
-  client nodes' dmas properties. The specifier represents the DMA request
-  select value for the peripheral. For more details, consult the Tegra TRM's
-  documentation of the APB DMA channel control register REQ_SEL field.
-
-Examples:
-
-apbdma: dma@6000a000 {
-       compatible = "nvidia,tegra20-apbdma";
-       reg = <0x6000a000 0x1200>;
-       interrupts = < 0 136 0x04
-                      0 137 0x04
-                      0 138 0x04
-                      0 139 0x04
-                      0 140 0x04
-                      0 141 0x04
-                      0 142 0x04
-                      0 143 0x04
-                      0 144 0x04
-                      0 145 0x04
-                      0 146 0x04
-                      0 147 0x04
-                      0 148 0x04
-                      0 149 0x04
-                      0 150 0x04
-                      0 151 0x04 >;
-       clocks = <&tegra_car 34>;
-       resets = <&tegra_car 34>;
-       reset-names = "dma";
-       #dma-cells = <1>;
-};
diff --git a/Bindings/dma/nvidia,tegra20-apbdma.yaml b/Bindings/dma/nvidia,tegra20-apbdma.yaml
new file mode 100644 (file)
index 0000000..a2ffd52
--- /dev/null
@@ -0,0 +1,90 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dma/nvidia,tegra20-apbdma.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVIDIA Tegra APB DMA Controller
+
+description:
+  The NVIDIA Tegra APB DMA controller is a hardware component that
+  enables direct memory access (DMA) on Tegra systems. It facilitates
+  data transfer between I/O devices and main memory without constant
+  CPU intervention.
+
+maintainers:
+  - Jonathan Hunter <jonathanh@nvidia.com>
+
+properties:
+  compatible:
+    oneOf:
+      - const: nvidia,tegra20-apbdma
+      - items:
+          - const: nvidia,tegra30-apbdma
+          - const: nvidia,tegra20-apbdma
+
+  reg:
+    maxItems: 1
+
+  "#dma-cells":
+    const: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    description:
+      Should contain all of the per-channel DMA interrupts in
+      ascending order with respect to the DMA channel index.
+    minItems: 1
+    maxItems: 32
+
+  resets:
+    maxItems: 1
+
+  reset-names:
+    const: dma
+
+required:
+  - compatible
+  - reg
+  - "#dma-cells"
+  - clocks
+  - interrupts
+  - resets
+  - reset-names
+
+allOf:
+  - $ref: dma-controller.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/reset/tegra186-reset.h>
+    dma-controller@6000a000 {
+        compatible = "nvidia,tegra30-apbdma", "nvidia,tegra20-apbdma";
+        reg = <0x6000a000 0x1200>;
+        interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 139 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 149 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&tegra_car 34>;
+        resets = <&tegra_car 34>;
+        reset-names = "dma";
+        #dma-cells = <1>;
+    };
+...
index d3f8c269916c7732ee2b73cab7f30cd5b22f5bb5..da0235e451d68c5158e5cd8959430a0dbeb66df9 100644 (file)
@@ -19,6 +19,7 @@ properties:
       - enum:
           - nvidia,tegra210-adma
           - nvidia,tegra186-adma
+          - nvidia,tegra264-adma
       - items:
           - enum:
               - nvidia,tegra234-adma
@@ -92,6 +93,7 @@ allOf:
           contains:
             enum:
               - nvidia,tegra186-adma
+              - nvidia,tegra264-adma
     then:
       anyOf:
         - properties:
index 3ad0d9b1fbc5e4f83dd316d1ad79773c288748ba..f2f87f0f545bc54f1c01419d7c6d438a128050e1 100644 (file)
@@ -42,6 +42,8 @@ properties:
   interrupts:
     maxItems: 1
 
+  dma-coherent: true
+
   iommus:
     minItems: 1
     maxItems: 6
index b356251de5a829f6da466cdcc77c3e2d3f063d6b..92b12762c4722c8de68952117f6cf12e6b5390f6 100644 (file)
@@ -11,19 +11,23 @@ maintainers:
 
 properties:
   compatible:
-    items:
-      - enum:
-          - renesas,r7s72100-dmac # RZ/A1H
-          - renesas,r9a07g043-dmac # RZ/G2UL and RZ/Five
-          - renesas,r9a07g044-dmac # RZ/G2{L,LC}
-          - renesas,r9a07g054-dmac # RZ/V2L
-          - renesas,r9a08g045-dmac # RZ/G3S
-      - const: renesas,rz-dmac
+    oneOf:
+      - items:
+          - enum:
+              - renesas,r7s72100-dmac # RZ/A1H
+              - renesas,r9a07g043-dmac # RZ/G2UL and RZ/Five
+              - renesas,r9a07g044-dmac # RZ/G2{L,LC}
+              - renesas,r9a07g054-dmac # RZ/V2L
+              - renesas,r9a08g045-dmac # RZ/G3S
+          - const: renesas,rz-dmac
+
+      - const: renesas,r9a09g057-dmac # RZ/V2H(P)
 
   reg:
     items:
       - description: Control and channel register block
       - description: DMA extended resource selector block
+    minItems: 1
 
   interrupts:
     maxItems: 17
@@ -52,6 +56,7 @@ properties:
     items:
       - description: DMA main clock
       - description: DMA register access clock
+    minItems: 1
 
   clock-names:
     items:
@@ -61,10 +66,10 @@ properties:
   '#dma-cells':
     const: 1
     description:
-      The cell specifies the encoded MID/RID values of the DMAC port
-      connected to the DMA client and the slave channel configuration
-      parameters.
-      bits[0:9] - Specifies MID/RID value
+      The cell specifies the encoded MID/RID or the REQ No values of
+      the DMAC port connected to the DMA client and the slave channel
+      configuration parameters.
+      bits[0:9] - Specifies the MID/RID or the REQ No value
       bit[10] - Specifies DMA request high enable (HIEN)
       bit[11] - Specifies DMA request detection type (LVL)
       bits[12:14] - Specifies DMAACK output mode (AM)
@@ -80,12 +85,26 @@ properties:
     items:
       - description: Reset for DMA ARESETN reset terminal
       - description: Reset for DMA RST_ASYNC reset terminal
+    minItems: 1
 
   reset-names:
     items:
       - const: arst
       - const: rst_async
 
+  renesas,icu:
+    description:
+      It must contain the phandle to the ICU and the index of the DMAC as seen
+      from the ICU.
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      - items:
+          - description: Phandle to the ICU node.
+          - description:
+              The number of the DMAC as seen from the ICU, i.e. parameter k from
+              register ICU_DMkSELy. This may differ from the actual DMAC instance
+              number.
+
 required:
   - compatible
   - reg
@@ -98,13 +117,25 @@ allOf:
   - $ref: dma-controller.yaml#
 
   - if:
-      not:
-        properties:
-          compatible:
-            contains:
-              enum:
-                - renesas,r7s72100-dmac
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,r9a07g043-dmac
+              - renesas,r9a07g044-dmac
+              - renesas,r9a07g054-dmac
+              - renesas,r9a08g045-dmac
     then:
+      properties:
+        reg:
+          minItems: 2
+        clocks:
+          minItems: 2
+        resets:
+          minItems: 2
+
+        renesas,icu: false
+
       required:
         - clocks
         - clock-names
@@ -112,6 +143,46 @@ allOf:
         - resets
         - reset-names
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r7s72100-dmac
+    then:
+      properties:
+        reg:
+          minItems: 2
+
+        clocks: false
+        clock-names: false
+        power-domains: false
+        resets: false
+        reset-names: false
+        renesas,icu: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a09g057-dmac
+    then:
+      properties:
+        reg:
+          maxItems: 1
+        clocks:
+          maxItems: 1
+        resets:
+          maxItems: 1
+
+        clock-names: false
+        reset-names: false
+
+      required:
+        - clocks
+        - power-domains
+        - renesas,icu
+        - resets
+
 additionalProperties: false
 
 examples:
index 484f8babcda4b93af14216874c523f0e834cfacf..c731d5045e805c089ed5ebe72c59a81385110d22 100644 (file)
@@ -178,7 +178,9 @@ properties:
     description: Child nodes are just another property from a json-schema
       perspective.
     type: object  # DT nodes are json objects
-    # Child nodes also need additionalProperties or unevaluatedProperties
+    # Child nodes also need additionalProperties or unevaluatedProperties, where
+    # 'false' should be used in most cases (see 'child-node-with-own-schema'
+    # below).
     additionalProperties: false
     properties:
       vendor,a-child-node-property:
@@ -189,6 +191,17 @@ properties:
     required:
       - vendor,a-child-node-property
 
+  child-node-with-own-schema:
+    description: |
+      Child node with their own compatible and device schema which ends in
+      'additionalProperties: false' or 'unevaluatedProperties: false' can
+      mention only the compatible and use here 'additionalProperties: true'.
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        const: vendor,sub-device
+
 # Describe the relationship between different properties
 dependencies:
   # 'vendor,bool-property' is only allowed when 'vendor,string-array-property'
index 2cdad1bbae73bb1795eccf47e1a58e270acd022c..9785aac3b5f34955bbfe2718eec48581d050954f 100644 (file)
@@ -27,6 +27,15 @@ properties:
   mboxes:
     maxItems: 1
 
+  pmic:
+    description: Child node describing the main PMIC.
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        const: samsung,s2mpg10-pmic
+
   shmem:
     description:
       List of phandle pointing to the shared memory (SHM) area. The memory
@@ -43,8 +52,34 @@ additionalProperties: false
 
 examples:
   - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
     power-management {
         compatible = "google,gs101-acpm-ipc";
         mboxes = <&ap2apm_mailbox>;
         shmem = <&apm_sram>;
+
+        pmic {
+            compatible = "samsung,s2mpg10-pmic";
+            interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>;
+
+            regulators {
+                LDO1 {
+                    regulator-name = "vdd_ldo1";
+                    regulator-min-microvolt = <700000>;
+                    regulator-max-microvolt = <1300000>;
+                    regulator-always-on;
+                };
+
+                // ...
+
+                BUCK1 {
+                    regulator-name = "vdd_mif";
+                    regulator-min-microvolt = <450000>;
+                    regulator-max-microvolt = <1300000>;
+                    regulator-always-on;
+                    regulator-boot-on;
+                };
+            };
+        };
     };
diff --git a/Bindings/firmware/intel,stratix10-svc.txt b/Bindings/firmware/intel,stratix10-svc.txt
deleted file mode 100644 (file)
index 6eff1af..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-Intel Service Layer Driver for Stratix10 SoC
-============================================
-Intel Stratix10 SoC is composed of a 64 bit quad-core ARM Cortex A53 hard
-processor system (HPS) and Secure Device Manager (SDM). When the FPGA is
-configured from HPS, there needs to be a way for HPS to notify SDM the
-location and size of the configuration data. Then SDM will get the
-configuration data from that location and perform the FPGA configuration.
-
-To meet the whole system security needs and support virtual machine requesting
-communication with SDM, only the secure world of software (EL3, Exception
-Layer 3) can interface with SDM. All software entities running on other
-exception layers must channel through the EL3 software whenever it needs
-service from SDM.
-
-Intel Stratix10 service layer driver, running at privileged exception level
-(EL1, Exception Layer 1), interfaces with the service providers and provides
-the services for FPGA configuration, QSPI, Crypto and warm reset. Service layer
-driver also manages secure monitor call (SMC) to communicate with secure monitor
-code running in EL3.
-
-Required properties:
--------------------
-The svc node has the following mandatory properties, must be located under
-the firmware node.
-
-- compatible: "intel,stratix10-svc" or "intel,agilex-svc"
-- method: smc or hvc
-        smc - Secure Monitor Call
-        hvc - Hypervisor Call
-- memory-region:
-       phandle to the reserved memory node. See
-       Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
-       for details
-
-Example:
--------
-
-       reserved-memory {
-                #address-cells = <2>;
-                #size-cells = <2>;
-                ranges;
-
-                service_reserved: svcbuffer@0 {
-                        compatible = "shared-dma-pool";
-                        reg = <0x0 0x0 0x0 0x1000000>;
-                        alignment = <0x1000>;
-                        no-map;
-                };
-        };
-
-       firmware {
-               svc {
-                       compatible = "intel,stratix10-svc";
-                       method = "smc";
-                       memory-region = <&service_reserved>;
-               };
-       };
diff --git a/Bindings/firmware/intel,stratix10-svc.yaml b/Bindings/firmware/intel,stratix10-svc.yaml
new file mode 100644 (file)
index 0000000..fac1e95
--- /dev/null
@@ -0,0 +1,93 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/firmware/intel,stratix10-svc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Intel Service Layer Driver for Stratix10 SoC
+
+maintainers:
+  - Dinh Nguyen <dinguyen@kernel.org>
+  - Mahesh Rao <mahesh.rao@altera.com>
+
+description: >
+  Intel Stratix10 SoC is composed of a 64 bit quad-core ARM Cortex A53 hard
+  processor system (HPS) and Secure Device Manager (SDM). When the FPGA is
+  configured from HPS, there needs to be a way for HPS to notify SDM the
+  location and size of the configuration data. Then SDM will get the
+  configuration data from that location and perform the FPGA configuration.
+
+  To meet the whole system security needs and support virtual machine requesting
+  communication with SDM, only the secure world of software (EL3, Exception
+  Layer 3) can interface with SDM. All software entities running on other
+  exception layers must channel through the EL3 software whenever it needs
+  service from SDM.
+
+  Intel Stratix10 service layer driver, running at privileged exception level
+  (EL1, Exception Layer 1), interfaces with the service providers and provides
+  the services for FPGA configuration, QSPI, Crypto and warm reset. Service layer
+  driver also manages secure monitor call (SMC) to communicate with secure monitor
+  code running in EL3.
+
+properties:
+  compatible:
+    enum:
+      - intel,stratix10-svc
+      - intel,agilex-svc
+
+  method:
+    description: |
+      Supervisory call method to be used to communicate with the
+      secure service layer.
+      Permitted values are:
+      - "smc" : SMC #0, following the SMCCC
+      - "hvc" : HVC #0, following the SMCCC
+
+    $ref: /schemas/types.yaml#/definitions/string-array
+    enum:
+      - smc
+      - hvc
+
+  memory-region:
+    maxItems: 1
+    description:
+      reserved memory region for the service layer driver to
+      communicate with the secure device manager.
+
+  fpga-mgr:
+    $ref: /schemas/fpga/intel,stratix10-soc-fpga-mgr.yaml
+    description: Optional child node for fpga manager to perform fabric configuration.
+
+required:
+  - compatible
+  - method
+  - memory-region
+
+additionalProperties: false
+
+examples:
+  - |
+    reserved-memory {
+      #address-cells = <2>;
+      #size-cells = <2>;
+
+      service_reserved: svcbuffer@0 {
+              compatible = "shared-dma-pool";
+              reg = <0x0 0x0 0x0 0x1000000>;
+              alignment = <0x1000>;
+              no-map;
+      };
+    };
+
+    firmware {
+      svc {
+        compatible = "intel,stratix10-svc";
+        method = "smc";
+        memory-region = <&service_reserved>;
+
+        fpga-mgr {
+          compatible = "intel,stratix10-soc-fpga-mgr";
+        };
+      };
+    };
+
index 1a95010a546b14b1d3d97aa990c0305a551f2620..2bda2e0e13693f12816762137e07dc308d2c49e4 100644 (file)
@@ -11,6 +11,18 @@ maintainers:
   - Peng Fan <peng.fan@nxp.com>
 
 properties:
+  protocol@80:
+    description:
+      SCMI LMM protocol which is for boot, shutdown, and reset of other logical
+      machines (LM). It is usually used to allow one LM to manage another used
+      as an offload or accelerator engine.
+    $ref: '/schemas/firmware/arm,scmi.yaml#/$defs/protocol-node'
+    unevaluatedProperties: false
+
+    properties:
+      reg:
+        const: 0x80
+
   protocol@81:
     $ref: '/schemas/firmware/arm,scmi.yaml#/$defs/protocol-node'
     unevaluatedProperties: false
@@ -19,6 +31,17 @@ properties:
       reg:
         const: 0x81
 
+  protocol@82:
+    description:
+      SCMI CPU Protocol which allows an agent to start or stop a CPU. It is
+      used to manage auxiliary CPUs in a LM.
+    $ref: '/schemas/firmware/arm,scmi.yaml#/$defs/protocol-node'
+    unevaluatedProperties: false
+
+    properties:
+      reg:
+        const: 0x82
+
   protocol@84:
     $ref: '/schemas/firmware/arm,scmi.yaml#/$defs/protocol-node'
     unevaluatedProperties: false
diff --git a/Bindings/fpga/intel,stratix10-soc-fpga-mgr.yaml b/Bindings/fpga/intel,stratix10-soc-fpga-mgr.yaml
new file mode 100644 (file)
index 0000000..6e536d6
--- /dev/null
@@ -0,0 +1,36 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/fpga/intel,stratix10-soc-fpga-mgr.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Intel Stratix10 SoC FPGA Manager
+
+maintainers:
+  - Mahesh Rao <mahesh.rao@altera.com>
+  - Adrian Ng Ho Yin <adrian.ho.yin.ng@altera.com>
+  - Niravkumar L Rabara <nirav.rabara@altera.com>
+
+description:
+  The Intel Stratix10 SoC consists of a 64-bit quad-core ARM Cortex A53 hard
+  processor system (HPS) and a Secure Device Manager (SDM). The Stratix10
+  SoC FPGA Manager driver is used to configure/reconfigure the FPGA fabric
+  on the die.The driver communicates with SDM/ATF via the stratix10-svc
+  platform driver for performing its operations.
+
+properties:
+  compatible:
+    enum:
+      - intel,stratix10-soc-fpga-mgr
+      - intel,agilex-soc-fpga-mgr
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    fpga-mgr {
+      compatible = "intel,stratix10-soc-fpga-mgr";
+    };
diff --git a/Bindings/fpga/intel-stratix10-soc-fpga-mgr.txt b/Bindings/fpga/intel-stratix10-soc-fpga-mgr.txt
deleted file mode 100644 (file)
index 0f87413..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-Intel Stratix10 SoC FPGA Manager
-
-Required properties:
-The fpga_mgr node has the following mandatory property, must be located under
-firmware/svc node.
-
-- compatible : should contain "intel,stratix10-soc-fpga-mgr" or
-              "intel,agilex-soc-fpga-mgr"
-
-Example:
-
-       firmware {
-               svc {
-                       fpga_mgr: fpga-mgr {
-                               compatible = "intel,stratix10-soc-fpga-mgr";
-                       };
-               };
-       };
index 3dd70933ed8edcc9c78b3a111fa335b53dc430ea..d810043b56b65dfaf35991d8444f0ee3ae304593 100644 (file)
@@ -69,13 +69,13 @@ examples:
     #include <dt-bindings/interrupt-controller/irq.h>
 
     gpio@fffff400 {
-            compatible = "atmel,at91rm9200-gpio";
-            reg = <0xfffff400 0x200>;
-            interrupts = <2 IRQ_TYPE_LEVEL_HIGH 1>;
-            #gpio-cells = <2>;
-            gpio-controller;
-            interrupt-controller;
-            #interrupt-cells = <2>;
-            clocks = <&pmc PMC_TYPE_PERIPHERAL 2>;
+        compatible = "atmel,at91rm9200-gpio";
+        reg = <0xfffff400 0x200>;
+        interrupts = <2 IRQ_TYPE_LEVEL_HIGH 1>;
+        #gpio-cells = <2>;
+        gpio-controller;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        clocks = <&pmc PMC_TYPE_PERIPHERAL 2>;
     };
 ...
diff --git a/Bindings/gpio/blaize,blzp1600-gpio.yaml b/Bindings/gpio/blaize,blzp1600-gpio.yaml
new file mode 100644 (file)
index 0000000..a05f6ea
--- /dev/null
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/blaize,blzp1600-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Blaize BLZP1600 GPIO controller
+
+description:
+  Blaize BLZP1600 GPIO controller is an implementation of the VeriSilicon
+  APB GPIO v0.2 IP block. It has 32 ports each of which are intended to be
+  represented as child nodes with the generic GPIO-controller properties
+  as described in this binding's file.
+
+maintainers:
+  - Nikolaos Pasaloukos <nikolaos.pasaloukos@blaize.com>
+  - James Cowgill <james.cowgill@blaize.com>
+  - Matt Redfearn <matt.redfearn@blaize.com>
+  - Neil Jones <neil.jones@blaize.com>
+
+properties:
+  $nodename:
+    pattern: "^gpio@[0-9a-f]+$"
+
+  compatible:
+    enum:
+      - blaize,blzp1600-gpio
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    const: 2
+
+  ngpios:
+    default: 32
+    minimum: 1
+    maximum: 32
+
+  interrupts:
+    maxItems: 1
+
+  gpio-line-names: true
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - '#gpio-cells'
+
+dependencies:
+  interrupt-controller: [ interrupts ]
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    gpio: gpio@4c0000 {
+      compatible = "blaize,blzp1600-gpio";
+      reg = <0x004c0000 0x1000>;
+      gpio-controller;
+      #gpio-cells = <2>;
+      ngpios = <32>;
+      interrupt-controller;
+      #interrupt-cells = <2>;
+      interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+    };
+...
index 0e5c22929bdebd2a0f24ea7276fa6e5f3f464223..ab35bcf981016bf7b5f2c41e51027c25b423d5da 100644 (file)
@@ -71,15 +71,15 @@ unevaluatedProperties: false
 examples:
   - |
     spi {
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            gpio5: gpio5@0 {
-                    compatible = "fairchild,74hc595";
-                    reg = <0>;
-                    gpio-controller;
-                    #gpio-cells = <2>;
-                    registers-number = <4>;
-                    spi-max-frequency = <100000>;
-            };
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        gpio5@0 {
+            compatible = "fairchild,74hc595";
+            reg = <0>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            registers-number = <4>;
+            spi-max-frequency = <100000>;
+        };
     };
index 8ff54369d16c888620c7fe9ea79e7fa0a2b62008..b58e08c8ecd8a1052101b0b9f032ae15915bf4b4 100644 (file)
@@ -84,52 +84,52 @@ examples:
         reg = <0x80018000 0x2000>;
 
         gpio@0 {
-                compatible = "fsl,imx28-gpio";
-                reg = <0>;
-                interrupts = <127>;
-                gpio-controller;
-                #gpio-cells = <2>;
-                interrupt-controller;
-                #interrupt-cells = <2>;
+            compatible = "fsl,imx28-gpio";
+            reg = <0>;
+            interrupts = <127>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
         };
 
         gpio@1 {
-                compatible = "fsl,imx28-gpio";
-                reg = <1>;
-                interrupts = <126>;
-                gpio-controller;
-                #gpio-cells = <2>;
-                interrupt-controller;
-                #interrupt-cells = <2>;
+            compatible = "fsl,imx28-gpio";
+            reg = <1>;
+            interrupts = <126>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
         };
 
         gpio@2 {
-                compatible = "fsl,imx28-gpio";
-                reg = <2>;
-                interrupts = <125>;
-                gpio-controller;
-                #gpio-cells = <2>;
-                interrupt-controller;
-                #interrupt-cells = <2>;
+            compatible = "fsl,imx28-gpio";
+            reg = <2>;
+            interrupts = <125>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
         };
 
         gpio@3 {
-                compatible = "fsl,imx28-gpio";
-                reg = <3>;
-                interrupts = <124>;
-                gpio-controller;
-                #gpio-cells = <2>;
-                interrupt-controller;
-                #interrupt-cells = <2>;
+            compatible = "fsl,imx28-gpio";
+            reg = <3>;
+            interrupts = <124>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
         };
 
         gpio@4 {
-                compatible = "fsl,imx28-gpio";
-                reg = <4>;
-                interrupts = <123>;
-                gpio-controller;
-                #gpio-cells = <2>;
-                interrupt-controller;
-                #interrupt-cells = <2>;
+            compatible = "fsl,imx28-gpio";
+            reg = <4>;
+            interrupts = <123>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
         };
     };
index 7b1eb08fa055cc75fc8c2f4efb0efe0e8a123c1d..4d3f52f8d1b8272987de6c4ad5243e877ddcd412 100644 (file)
@@ -16,6 +16,9 @@ description: |+
 properties:
   compatible:
     oneOf:
+      - items:
+          - const: toradex,ecgpiol16
+          - const: nxp,pcal6416
       - items:
           - const: diodes,pi4ioe5v6534q
           - const: nxp,pcal6534
@@ -132,6 +135,7 @@ allOf:
               - maxim,max7325
               - maxim,max7326
               - maxim,max7327
+              - toradex,ecgpiol16
     then:
       properties:
         reset-gpios: false
index 4fb32e9aec0a341a50088f3e4352ed4d36f649d3..a31f64b6d40b4bca79672d4eb54a405aa546e243 100644 (file)
@@ -70,6 +70,13 @@ properties:
     minItems: 1
     maxItems: 4
 
+  gpio-reserved-ranges: true
+
+  ngpios:
+    minimum: 1
+    maximum: 32
+    default: 32
+
 patternProperties:
   "^.+-hog(-[0-9]+)?$":
     type: object
diff --git a/Bindings/gpio/maxim,max77759-gpio.yaml b/Bindings/gpio/maxim,max77759-gpio.yaml
new file mode 100644 (file)
index 0000000..5573419
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/maxim,max77759-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim Integrated MAX77759 GPIO
+
+maintainers:
+  - André Draszik <andre.draszik@linaro.org>
+
+description: |
+  This module is part of the MAX77759 PMIC. For additional information, see
+  Documentation/devicetree/bindings/mfd/maxim,max77759.yaml.
+
+  The MAX77759 is a PMIC integrating, amongst others, a GPIO controller
+  including interrupt support for 2 GPIO lines.
+
+properties:
+  compatible:
+    const: maxim,max77759-gpio
+
+  "#gpio-cells":
+    const: 2
+
+  gpio-controller: true
+
+  gpio-line-names:
+    minItems: 1
+    maxItems: 2
+
+  "#interrupt-cells":
+    const: 2
+
+  interrupt-controller: true
+
+required:
+  - compatible
+  - "#gpio-cells"
+  - gpio-controller
+  - "#interrupt-cells"
+  - interrupt-controller
+
+additionalProperties: false
index 4ef06b2ff1ff04c38801b621b8e9be2ed749861f..065f5761a93f61d6b2c501102eadd492026a64d0 100644 (file)
@@ -111,6 +111,9 @@ properties:
 
   gpio-controller: true
 
+  gpio-ranges:
+    maxItems: 1
+
   "#gpio-cells":
     description: |
       Indicates how many cells are used in a consumer's GPIO specifier. In the
index 8bca574bb66d491d984cb1b1665743048bcf4566..5a6ecaa7b44bcfa87b4f0cec99cbe28f9e0bdcb4 100644 (file)
@@ -128,17 +128,17 @@ additionalProperties: false
 examples:
   - |
     i2c {
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            pcf8575: gpio@20 {
-                    compatible = "nxp,pcf8575";
-                    reg = <0x20>;
-                    interrupt-parent = <&irqpin2>;
-                    interrupts = <3 0>;
-                    gpio-controller;
-                    #gpio-cells = <2>;
-                    interrupt-controller;
-                    #interrupt-cells = <2>;
-            };
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        gpio@20 {
+            compatible = "nxp,pcf8575";
+            reg = <0x20>;
+            interrupt-parent = <&irqpin2>;
+            interrupts = <3 0>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
+        };
     };
index 39fd959c45d20e8a200780d331ab6d337d0edc04..728099c658246f5b1d9d55e329b189a1ab179226 100644 (file)
@@ -81,7 +81,7 @@ dependencies:
 
 examples:
   - |
-      gpio@3500 {
+    gpio@3500 {
         compatible = "realtek,rtl8380-gpio", "realtek,otto-gpio";
         reg = <0x3500 0x1c>;
         gpio-controller;
@@ -91,9 +91,9 @@ examples:
         #interrupt-cells = <2>;
         interrupt-parent = <&rtlintc>;
         interrupts = <23>;
-      };
+    };
   - |
-      gpio@3300 {
+    gpio@3300 {
         compatible = "realtek,rtl9300-gpio", "realtek,otto-gpio";
         reg = <0x3300 0x1c>, <0x3338 0x8>;
         gpio-controller;
@@ -103,6 +103,6 @@ examples:
         #interrupt-cells = <2>;
         interrupt-parent = <&rtlintc>;
         interrupts = <13>;
-      };
+    };
 
 ...
index 8bdef812c87c3771627f0fb883ec10708f5f3650..49fb8f613ead448190a7b95b37cd4ff8a5237369 100644 (file)
@@ -57,14 +57,14 @@ examples:
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     gpio0: gpio@e0050000 {
-            compatible = "renesas,em-gio";
-            reg = <0xe0050000 0x2c>, <0xe0050040 0x20>;
-            interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
-            gpio-controller;
-            #gpio-cells = <2>;
-            gpio-ranges = <&pfc 0 0 32>;
-            ngpios = <32>;
-            interrupt-controller;
-            #interrupt-cells = <2>;
+        compatible = "renesas,em-gio";
+        reg = <0xe0050000 0x2c>, <0xe0050040 0x20>;
+        interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        gpio-ranges = <&pfc 0 0 32>;
+        ngpios = <32>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
     };
index cc7a950a6030999ebc1f77109eecaeb9b25a7e22..d32e103a64aacce302d68b46717c8e505d80f08d 100644 (file)
@@ -138,16 +138,16 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/power/r8a77470-sysc.h>
     gpio3: gpio@e6053000 {
-            compatible = "renesas,gpio-r8a77470", "renesas,rcar-gen2-gpio";
-            reg = <0xe6053000 0x50>;
-            interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
-            clocks = <&cpg CPG_MOD 909>;
-            power-domains = <&sysc R8A77470_PD_ALWAYS_ON>;
-            resets = <&cpg 909>;
-            gpio-controller;
-            #gpio-cells = <2>;
-            gpio-ranges = <&pfc 0 96 30>;
-            gpio-reserved-ranges = <17 10>;
-            interrupt-controller;
-            #interrupt-cells = <2>;
+        compatible = "renesas,gpio-r8a77470", "renesas,rcar-gen2-gpio";
+        reg = <0xe6053000 0x50>;
+        interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&cpg CPG_MOD 909>;
+        power-domains = <&sysc R8A77470_PD_ALWAYS_ON>;
+        resets = <&cpg 909>;
+        gpio-controller;
+        #gpio-cells = <2>;
+        gpio-ranges = <&pfc 0 96 30>;
+        gpio-reserved-ranges = <17 10>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
      };
index fc095646adeae0ef37ef92a19f88af651b44abd3..4bdc201b719ef479adae195210b168e6af73afea 100644 (file)
@@ -76,8 +76,8 @@ additionalProperties: false
 
 examples:
   - |
-      #include <dt-bindings/clock/sifive-fu540-prci.h>
-      gpio@10060000 {
+    #include <dt-bindings/clock/sifive-fu540-prci.h>
+    gpio@10060000 {
         compatible = "sifive,fu540-c000-gpio", "sifive,gpio0";
         interrupt-parent = <&plic>;
         interrupts = <7>, <8>, <9>, <10>, <11>, <12>, <13>, <14>, <15>, <16>,
@@ -88,6 +88,6 @@ examples:
         #gpio-cells = <2>;
         interrupt-controller;
         #interrupt-cells = <2>;
-      };
+    };
 
 ...
diff --git a/Bindings/gpio/spacemit,k1-gpio.yaml b/Bindings/gpio/spacemit,k1-gpio.yaml
new file mode 100644 (file)
index 0000000..ec0232e
--- /dev/null
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/gpio/spacemit,k1-gpio.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SpacemiT K1 GPIO controller
+
+maintainers:
+  - Yixun Lan <dlan@gentoo.org>
+
+description:
+  The controller's registers are organized as sets of eight 32-bit
+  registers with each set of port controlling 32 pins.  A single
+  interrupt line is shared for all of the pins by the controller.
+
+properties:
+  $nodename:
+    pattern: "^gpio@[0-9a-f]+$"
+
+  compatible:
+    const: spacemit,k1-gpio
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: GPIO Core Clock
+      - description: GPIO Bus Clock
+
+  clock-names:
+    items:
+      - const: core
+      - const: bus
+
+  resets:
+    maxItems: 1
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 3
+    description:
+      The first two cells are the GPIO bank index and offset inside the bank,
+      the third cell should specify GPIO flag.
+
+  gpio-ranges: true
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 3
+    description:
+      The first two cells are the GPIO bank index and offset inside the bank,
+      the third cell should specify interrupt flag. The controller does not
+      support level interrupts, so flags of IRQ_TYPE_LEVEL_HIGH,
+      IRQ_TYPE_LEVEL_LOW should not be used.
+      Refer <dt-bindings/interrupt-controller/irq.h> for valid flags.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - gpio-controller
+  - "#gpio-cells"
+  - interrupts
+  - interrupt-controller
+  - "#interrupt-cells"
+  - gpio-ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    gpio@d4019000 {
+      compatible = "spacemit,k1-gpio";
+      reg = <0xd4019000 0x800>;
+      clocks =<&ccu 9>, <&ccu 61>;
+      clock-names = "core", "bus";
+      gpio-controller;
+      #gpio-cells = <3>;
+      interrupts = <58>;
+      interrupt-controller;
+      interrupt-parent = <&plic>;
+      #interrupt-cells = <3>;
+      gpio-ranges = <&pinctrl 0 0 0 32>,
+                    <&pinctrl 1 0 32 32>,
+                    <&pinctrl 2 0 64 32>,
+                    <&pinctrl 3 0 96 32>;
+    };
+...
index b085450b527f81969355dafa49a0fd1d7356853e..712063417bc896743ba4b8d48cf97da10b3aecee 100644 (file)
@@ -48,22 +48,22 @@ additionalProperties: false
 
 examples:
   - |
-      #include <dt-bindings/interrupt-controller/irq.h>
-      #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
 
-      soc {
+    soc {
         #address-cells = <2>;
         #size-cells = <2>;
 
         gpio: gpio@28020000 {
-          compatible = "toshiba,gpio-tmpv7708";
-          reg = <0 0x28020000 0 0x1000>;
-          #gpio-cells = <0x2>;
-          gpio-ranges = <&pmux 0 0 32>;
-          gpio-controller;
-          interrupt-controller;
-          #interrupt-cells = <2>;
-          interrupt-parent = <&gic>;
+            compatible = "toshiba,gpio-tmpv7708";
+            reg = <0 0x28020000 0 0x1000>;
+            #gpio-cells = <0x2>;
+            gpio-ranges = <&pmux 0 0 32>;
+            gpio-controller;
+            interrupt-controller;
+            #interrupt-cells = <2>;
+            interrupt-parent = <&gic>;
         };
-      };
+    };
 ...
index d3d8a2e143ed25dee5634ae9539c413c4f51f865..8fbf12ca067eebba8c77fe3f0df363ba0e4b1eee 100644 (file)
@@ -126,29 +126,29 @@ examples:
   - |
     #include <dt-bindings/interrupt-controller/arm-gic.h>
 
-        gpio@a0020000 {
-            compatible = "xlnx,xps-gpio-1.00.a";
-            reg = <0xa0020000 0x10000>;
-            #gpio-cells = <2>;
-            #interrupt-cells = <0x2>;
-            clocks = <&zynqmp_clk 71>;
-            gpio-controller;
-            interrupt-controller;
-            interrupt-names = "ip2intc_irpt";
-            interrupt-parent = <&gic>;
-            interrupts = <0 89 4>;
-            xlnx,all-inputs = <0x0>;
-            xlnx,all-inputs-2 = <0x0>;
-            xlnx,all-outputs = <0x0>;
-            xlnx,all-outputs-2 = <0x0>;
-            xlnx,dout-default = <0x0>;
-            xlnx,dout-default-2 = <0x0>;
-            xlnx,gpio-width = <0x20>;
-            xlnx,gpio2-width = <0x20>;
-            xlnx,interrupt-present = <0x1>;
-            xlnx,is-dual = <0x1>;
-            xlnx,tri-default = <0xFFFFFFFF>;
-            xlnx,tri-default-2 = <0xFFFFFFFF>;
-        };
+    gpio@a0020000 {
+        compatible = "xlnx,xps-gpio-1.00.a";
+        reg = <0xa0020000 0x10000>;
+        #gpio-cells = <2>;
+        #interrupt-cells = <0x2>;
+        clocks = <&zynqmp_clk 71>;
+        gpio-controller;
+        interrupt-controller;
+        interrupt-names = "ip2intc_irpt";
+        interrupt-parent = <&gic>;
+        interrupts = <0 89 4>;
+        xlnx,all-inputs = <0x0>;
+        xlnx,all-inputs-2 = <0x0>;
+        xlnx,all-outputs = <0x0>;
+        xlnx,all-outputs-2 = <0x0>;
+        xlnx,dout-default = <0x0>;
+        xlnx,dout-default-2 = <0x0>;
+        xlnx,gpio-width = <0x20>;
+        xlnx,gpio2-width = <0x20>;
+        xlnx,interrupt-present = <0x1>;
+        xlnx,is-dual = <0x1>;
+        xlnx,tri-default = <0xFFFFFFFF>;
+        xlnx,tri-default-2 = <0xFFFFFFFF>;
+    };
 
 ...
index 019bd28a29f19bb4f7a9c32434b208b6d04db221..b8d659d272d060bf850be34f760495b401a19adf 100644 (file)
@@ -25,6 +25,8 @@ properties:
               - realtek,rtd1619-mali
               - renesas,r9a07g044-mali
               - renesas,r9a07g054-mali
+              - renesas,r9a09g047-mali
+              - renesas,r9a09g056-mali
               - renesas,r9a09g057-mali
               - rockchip,px30-mali
               - rockchip,rk3562-mali
@@ -145,6 +147,8 @@ allOf:
             enum:
               - renesas,r9a07g044-mali
               - renesas,r9a07g054-mali
+              - renesas,r9a09g047-mali
+              - renesas,r9a09g056-mali
               - renesas,r9a09g057-mali
     then:
       properties:
index dc078ceeca9ac3447ba54a7c8830821f0b2a7f9f..43c6d2d7245653509c18ac7adc4d15d2baf9f08e 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Broadcom V3D GPU
 
 maintainers:
-  - Eric Anholt <eric@anholt.net>
+  - Maíra Canal <mcanal@igalia.com>
   - Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
 
 properties:
@@ -22,20 +22,12 @@ properties:
       - brcm,7278-v3d
 
   reg:
-    items:
-      - description: hub register (required)
-      - description: core0 register (required)
-      - description: GCA cache controller register (if GCA controller present)
-      - description: bridge register (if no external reset controller)
     minItems: 2
+    maxItems: 4
 
   reg-names:
-    items:
-      - const: hub
-      - const: core0
-      - enum: [ bridge, gca ]
-      - enum: [ bridge, gca ]
     minItems: 2
+    maxItems: 4
 
   interrupts:
     items:
@@ -58,6 +50,76 @@ required:
   - reg-names
   - interrupts
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,2711-v3d
+    then:
+      properties:
+        reg:
+          items:
+            - description: hub register
+            - description: core0 register
+        reg-names:
+          items:
+            - const: hub
+            - const: core0
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,2712-v3d
+    then:
+      properties:
+        reg:
+          items:
+            - description: hub register
+            - description: core0 register
+            - description: SMS state manager register
+        reg-names:
+          items:
+            - const: hub
+            - const: core0
+            - const: sms
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,7268-v3d
+    then:
+      properties:
+        reg:
+          items:
+            - description: hub register
+            - description: core0 register
+            - description: GCA cache controller register
+            - description: bridge register
+        reg-names:
+          items:
+            - const: hub
+            - const: core0
+            - const: gca
+            - const: bridge
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,7278-v3d
+    then:
+      properties:
+        reg:
+          items:
+            - description: hub register
+            - description: core0 register
+            - description: bridge register
+        reg-names:
+          items:
+            - const: hub
+            - const: core0
+            - const: bridge
+
 additionalProperties: false
 
 examples:
@@ -66,9 +128,9 @@ examples:
       compatible = "brcm,7268-v3d";
       reg = <0xf1200000 0x4000>,
             <0xf1208000 0x4000>,
-            <0xf1204000 0x100>,
-            <0xf1204100 0x100>;
-      reg-names = "hub", "core0", "bridge", "gca";
+            <0xf1204100 0x100>,
+            <0xf1204000 0x100>;
+      reg-names = "hub", "core0", "gca", "bridge";
       interrupts = <0 78 4>,
                    <0 77 4>;
     };
index 256e252f8087fa0d6081f771a01601d34b66fe19..4450e2e73b3ccf74d29f0e31e2e6687d7cbe5d65 100644 (file)
@@ -12,10 +12,28 @@ maintainers:
 
 properties:
   compatible:
-    items:
-      - enum:
-          - ti,am62-gpu
-      - const: img,img-axe # IMG AXE GPU model/revision is fully discoverable
+    oneOf:
+      - items:
+          - enum:
+              - ti,am62-gpu
+          - const: img,img-axe-1-16m
+          # This deprecated element must be kept around to allow old kernels to
+          # work with newer dts.
+          - const: img,img-axe
+          - const: img,img-rogue
+      - items:
+          - enum:
+              - ti,j721s2-gpu
+          - const: img,img-bxs-4-64
+          - const: img,img-rogue
+
+      # This legacy combination of compatible strings was introduced early on
+      # before the more specific GPU identifiers were used.
+      - items:
+          - enum:
+              - ti,am62-gpu
+          - const: img,img-axe
+        deprecated: true
 
   reg:
     maxItems: 1
@@ -35,6 +53,18 @@ properties:
     maxItems: 1
 
   power-domains:
+    minItems: 1
+    maxItems: 2
+
+  power-domain-names:
+    items:
+      - const: a
+      - const: b
+    minItems: 1
+
+  dma-coherent: true
+
+  resets:
     maxItems: 1
 
 required:
@@ -47,11 +77,49 @@ required:
 additionalProperties: false
 
 allOf:
+  # Constraints added alongside the new compatible strings that would otherwise
+  # create an ABI break.
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: img,img-rogue
+    then:
+      required:
+        - power-domains
+        - power-domain-names
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: img,img-axe-1-16m
+    then:
+      properties:
+        power-domains:
+          maxItems: 1
+        power-domain-names:
+          maxItems: 1
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: img,img-bxs-4-64
+    then:
+      properties:
+        power-domains:
+          minItems: 2
+        power-domain-names:
+          minItems: 2
+
   - if:
       properties:
         compatible:
           contains:
-            const: ti,am62-gpu
+            enum:
+              - ti,am62-gpu
+              - ti,j721s2-gpu
     then:
       properties:
         clocks:
@@ -64,10 +132,12 @@ examples:
     #include <dt-bindings/soc/ti,sci_pm_domain.h>
 
     gpu@fd00000 {
-        compatible = "ti,am62-gpu", "img,img-axe";
+        compatible = "ti,am62-gpu", "img,img-axe-1-16m", "img,img-axe",
+                     "img,img-rogue";
         reg = <0x0fd00000 0x20000>;
         clocks = <&k3_clks 187 0>;
         clock-names = "core";
         interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
         power-domains = <&k3_pds 187 TI_SCI_PD_EXCLUSIVE>;
+        power-domain-names = "a";
     };
diff --git a/Bindings/hwinfo/via,vt8500-scc-id.yaml b/Bindings/hwinfo/via,vt8500-scc-id.yaml
new file mode 100644 (file)
index 0000000..b0f425a
--- /dev/null
@@ -0,0 +1,37 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwinfo/via,vt8500-scc-id.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: VIA/WonderMedia SoC system configuration information
+
+maintainers:
+  - Alexey Charkov <alchark@gmail.com>
+
+description:
+  The system configuration controller on VIA/WonderMedia SoC's contains a chip
+  identifier and revision used to differentiate between different hardware
+  versions of on-chip IP blocks having their own peculiarities which may or
+  may not be captured by their respective DT compatible strings
+
+properties:
+  compatible:
+    items:
+      - const: via,vt8500-scc-id
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    chipid@d8120000 {
+        compatible = "via,vt8500-scc-id";
+        reg = <0xd8120000 0x4>;
+    };
diff --git a/Bindings/hwmon/pmbus/adi,lt3074.yaml b/Bindings/hwmon/pmbus/adi,lt3074.yaml
new file mode 100644 (file)
index 0000000..bf028a8
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/pmbus/adi,lt3074.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices LT3074 voltage regulator
+
+maintainers:
+  - Cedric Encarnacion <cedricjustine.encarnacion@analog.com>
+
+description: |
+  The LT3074 is a low voltage, ultra-low noise and ultra-fast transient
+  response linear regulator. It allows telemetry for input/output voltage,
+  output current and temperature through the PMBus serial interface.
+
+  Datasheet:
+    https://www.analog.com/en/products/lt3074.html
+
+allOf:
+  - $ref: /schemas/regulator/regulator.yaml#
+
+properties:
+  compatible:
+    enum:
+      - adi,lt3074
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        regulator@6d {
+            compatible = "adi,lt3074";
+            reg = <0x6d>;
+            regulator-name = "vout";
+            regulator-max-microvolt = <1250000>;
+            regulator-min-microvolt = <1150000>;
+        };
+    };
diff --git a/Bindings/hwmon/pmbus/mps,mpq8785.yaml b/Bindings/hwmon/pmbus/mps,mpq8785.yaml
new file mode 100644 (file)
index 0000000..90970a0
--- /dev/null
@@ -0,0 +1,74 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/hwmon/pmbus/mps,mpq8785.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Monolithic Power Systems Multiphase Voltage Regulators with PMBus
+
+maintainers:
+  - Charles Hsu <ythsu0511@gmail.com>
+
+description:
+  Monolithic Power Systems digital multiphase voltage regulators with PMBus.
+
+properties:
+  compatible:
+    enum:
+      - mps,mpm3695
+      - mps,mpm3695-25
+      - mps,mpm82504
+      - mps,mpq8785
+
+  reg:
+    maxItems: 1
+
+  mps,vout-fb-divider-ratio-permille:
+    description:
+      The feedback resistor divider ratio, expressed in permille
+      (Vfb / Vout * 1000). This value is written to the PMBUS_VOUT_SCALE_LOOP
+      register and is required for correct output voltage presentation.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 1
+    maximum: 4095
+    default: 706
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          enum:
+            - mps,mpm3695
+            - mps,mpm82504
+    then:
+      properties:
+        mps,vout-fb-divider-ratio-permille:
+          maximum: 1023
+
+  - if:
+      properties:
+        compatible:
+          const: mps,mpq8785
+    then:
+      properties:
+        mps,vout-fb-divider-ratio-permille:
+          maximum: 2047
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      pmic@30 {
+        compatible = "mps,mpm82504";
+        reg = <0x30>;
+        mps,vout-fb-divider-ratio-permille = <600>;
+      };
+    };
index f0667ac41d75c4a759aaeb7ebf730bfd51266681..b76805d394270795576a8dec35ad6c2fa3722c19 100644 (file)
@@ -11,7 +11,11 @@ maintainers:
 
 properties:
   compatible:
-    const: sophgo,sg2042-hwmon-mcu
+    oneOf:
+      - items:
+          - const: sophgo,sg2044-hwmon-mcu
+          - const: sophgo,sg2042-hwmon-mcu
+      - const: sophgo,sg2042-hwmon-mcu
 
   reg:
     maxItems: 1
index 5d33f1a23d0325abe906dfb1d30cfac3c3ec9805..9ca7356760a74b1ab5e6c5a4966ba30f050a1eed 100644 (file)
@@ -28,6 +28,17 @@ properties:
   i2c-mux:
     type: object
 
+  fan:
+    $ref: fan-common.yaml#
+    unevaluatedProperties: false
+
+  "#pwm-cells":
+    const: 2
+    description: |
+      Number of cells in a PWM specifier.
+      - cell 0: PWM period in nanoseconds
+      - cell 1: PWM polarity: 0 or PWM_POLARITY_INVERTED
+
 required:
   - compatible
   - reg
@@ -50,9 +61,14 @@ examples:
         #address-cells = <1>;
         #size-cells = <0>;
 
-        fan@18 {
+        fan_controller: fan@18 {
             compatible = "ti,amc6821";
             reg = <0x18>;
+            #pwm-cells = <2>;
+
+            fan {
+                pwms = <&fan_controller 40000 0>;
+            };
         };
     };
 
index bc03781342c0eb6dc836ce1d6955e2988ba9ec5c..d1fb7b9abda081113ac28ed999d9c28da9d4daf9 100644 (file)
@@ -19,6 +19,7 @@ description: |
 properties:
   compatible:
     enum:
+      - silergy,sq52206
       - silergy,sy24655
       - ti,ina209
       - ti,ina219
@@ -58,6 +59,9 @@ properties:
       shunt voltage, and a value of 4 maps to ADCRANGE=0 such that a wider
       voltage range is used.
 
+      For SQ52206,the shunt-gain value 1 mapps to ADCRANGE=10/11, the value 2
+      mapps to ADCRANGE=01, and the value 4 mapps to ADCRANGE=00.
+
       The default value is device dependent, and is defined by the reset value
       of PGA/ADCRANGE in the respective configuration registers.
     $ref: /schemas/types.yaml#/definitions/uint32
@@ -97,6 +101,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - silergy,sq52206
               - silergy,sy24655
               - ti,ina209
               - ti,ina219
index 7e5b62a0215dd4df7be82f6598f37f0475dfa939..4c89448eba0dc0a7cc7dc3764231fcb524651b4c 100644 (file)
@@ -23,6 +23,9 @@ properties:
   "#thermal-sensor-cells":
     const: 1
 
+  vcc-supply:
+    description: Power supply for tmp102
+
 required:
   - compatible
   - reg
@@ -42,6 +45,7 @@ examples:
             reg = <0x48>;
             interrupt-parent = <&gpio7>;
             interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
+            vcc-supply = <&supply>;
             #thermal-sensor-cells = <1>;
         };
     };
index fda0467cdd954599d556fb865f78b55c20ffa163..23fe8ff76645e440c19469999ae9a86b7fdabe68 100644 (file)
@@ -52,6 +52,7 @@ properties:
           - const: mediatek,mt8173-i2c
       - items:
           - enum:
+              - mediatek,mt6893-i2c
               - mediatek,mt8195-i2c
           - const: mediatek,mt8192-i2c
 
index 8101afa6f1469a8e35cea87a5040c7981c9f2b4e..2f1e97969c3f7cb8bda2c7c7a2019c92a1d339e7 100644 (file)
@@ -37,6 +37,7 @@ properties:
               - rockchip,px30-i2c
               - rockchip,rk3308-i2c
               - rockchip,rk3328-i2c
+              - rockchip,rk3528-i2c
               - rockchip,rk3562-i2c
               - rockchip,rk3568-i2c
               - rockchip,rk3576-i2c
diff --git a/Bindings/i2c/i2c-wmt.txt b/Bindings/i2c/i2c-wmt.txt
deleted file mode 100644 (file)
index 94a425e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-* Wondermedia I2C Controller
-
-Required properties :
-
- - compatible : should be "wm,wm8505-i2c"
- - reg : Offset and length of the register set for the device
- - interrupts : <IRQ> where IRQ is the interrupt number
- - clocks : phandle to the I2C clock source
-
-Optional properties :
-
- - clock-frequency : desired I2C bus clock frequency in Hz.
-       Valid values are 100000 and 400000.
-       Default to 100000 if not specified, or invalid value.
-
-Example :
-
-       i2c_0: i2c@d8280000 {
-               compatible = "wm,wm8505-i2c";
-               reg = <0xd8280000 0x1000>;
-               interrupts = <19>;
-               clocks = <&clki2c0>;
-               clock-frequency = <400000>;
-       };
index b57ae6963e62988f008f036c5d3f4c81f68c1530..6b6f6762d122f9deef34f35ee7d137747ea09dba 100644 (file)
@@ -97,7 +97,10 @@ properties:
 
   resets:
     items:
-      - description: module reset
+      - description:
+          Module reset. This property is optional for controllers in Tegra194,
+          Tegra234 etc where an internal software reset is available as an
+          alternative.
 
   reset-names:
     items:
@@ -116,6 +119,13 @@ properties:
       - const: rx
       - const: tx
 
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
 allOf:
   - $ref: /schemas/i2c/i2c-controller.yaml
   - if:
@@ -169,6 +179,18 @@ allOf:
       properties:
         power-domains: false
 
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              enum:
+                - nvidia,tegra194-i2c
+    then:
+      required:
+        - resets
+        - reset-names
+
 unevaluatedProperties: false
 
 examples:
index eddfd329c67b74792852acb80b57e90170d6bf17..69ac5db8b91489be0c42dbeb9fddf6b109e867a8 100644 (file)
@@ -26,7 +26,8 @@ properties:
       - const: realtek,rtl9301-i2c
 
   reg:
-    description: Register offset and size this I2C controller.
+    items:
+      - description: Register offset and size this I2C controller.
 
   "#address-cells":
     const: 1
index 1b7fed23264234d6b3c01e3816f6a324eaecf217..cc39511a49d639b9b37ebcbe99db9460059ca869 100644 (file)
@@ -29,6 +29,7 @@ properties:
           - enum:
               - renesas,riic-r9a08g045   # RZ/G3S
               - renesas,riic-r9a09g047   # RZ/G3E
+              - renesas,riic-r9a09g056   # RZ/V2N
           - const: renesas,riic-r9a09g057   # RZ/V2H(P)
 
       - const: renesas,riic-r9a09g057   # RZ/V2H(P)
index bc5d0fb5abfec3ef7aa67df4b5f00614068246f5..d904191bb0c6eac219a87fbfe87757c2ed547c73 100644 (file)
@@ -32,15 +32,13 @@ properties:
           - const: renesas,r9a06g032-i2c  # RZ/N1D
           - const: renesas,rzn1-i2c       # RZ/N1
           - const: snps,designware-i2c
-      - description: Microsemi Ocelot SoCs I2C controller
-        items:
-          - const: mscc,ocelot-i2c
-          - const: snps,designware-i2c
       - description: Baikal-T1 SoC System I2C controller
         const: baikal,bt1-sys-i2c
-      - description: T-HEAD TH1520 SoCs I2C controller
-        items:
-          - const: thead,th1520-i2c
+      - items:
+          - enum:
+              - mscc,ocelot-i2c
+              - sophgo,sg2044-i2c
+              - thead,th1520-i2c
           - const: snps,designware-i2c
 
   reg:
diff --git a/Bindings/i2c/wm,wm8505-i2c.yaml b/Bindings/i2c/wm,wm8505-i2c.yaml
new file mode 100644 (file)
index 0000000..e498ce4
--- /dev/null
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/wm,wm8505-i2c.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: I2C Controller on WonderMedia WM8505 and related SoCs
+
+maintainers:
+  - Alexey Charkov <alchark@gmail.com>
+
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+properties:
+  compatible:
+    const: wm,wm8505-i2c
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-frequency:
+    enum: [100000, 400000]
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    i2c_0: i2c@d8280000 {
+        compatible = "wm,wm8505-i2c";
+        reg = <0xd8280000 0x1000>;
+        interrupts = <19>;
+        clocks = <&clki2c0>;
+        clock-frequency = <400000>;
+    };
index 4fbdcdac0aee528d6c9bd2d60e8f2b6704f153af..853092f7522d3c8d5f2de61da79307ee9456ead2 100644 (file)
@@ -9,14 +9,17 @@ title: Silvaco I3C master
 maintainers:
   - Conor Culhane <conor.culhane@silvaco.com>
 
-allOf:
-  - $ref: i3c.yaml#
-
 properties:
   compatible:
-    enum:
-      - nuvoton,npcm845-i3c
-      - silvaco,i3c-master-v1
+    oneOf:
+      - enum:
+          - nuvoton,npcm845-i3c
+          - silvaco,i3c-master-v1
+      - items:
+          - enum:
+              - nxp,imx94-i3c
+              - nxp,imx95-i3c
+          - const: silvaco,i3c-master-v1
 
   reg:
     maxItems: 1
@@ -25,12 +28,14 @@ properties:
     maxItems: 1
 
   clocks:
+    minItems: 2
     items:
       - description: system clock
       - description: bus clock
       - description: other (slower) events clock
 
   clock-names:
+    minItems: 2
     items:
       - const: pclk
       - const: fast_clk
@@ -46,6 +51,34 @@ required:
   - clock-names
   - clocks
 
+allOf:
+  - $ref: i3c.yaml#
+  - if:
+      properties:
+        compatible:
+          enum:
+            - nuvoton,npcm845-i3c
+            - silvaco,i3c-master-v1
+    then:
+      properties:
+        clocks:
+          minItems: 3
+        clock-names:
+          minItems: 3
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - nxp,imx94-i3c
+              - nxp,imx95-i3c
+    then:
+      properties:
+        clocks:
+          maxItems: 2
+        clock-names:
+          maxItems: 2
+
 unevaluatedProperties: false
 
 examples:
index ff4f5c21c5482b77ee2774b01ad6d426e68cf207..8dae89ecb64d723dcf2b4af1e0505fc5db49595b 100644 (file)
@@ -25,6 +25,7 @@ description: |
   * https://www.analog.com/en/products/ad7386-4.html
   * https://www.analog.com/en/products/ad7387-4.html
   * https://www.analog.com/en/products/ad7388-4.html
+  * https://www.analog.com/en/products/ad7389-4.html
   * https://www.analog.com/en/products/adaq4370-4.html
   * https://www.analog.com/en/products/adaq4380-4.html
   * https://www.analog.com/en/products/adaq4381-4.html
@@ -49,6 +50,7 @@ properties:
       - adi,ad7386-4
       - adi,ad7387-4
       - adi,ad7388-4
+      - adi,ad7389-4
       - adi,adaq4370-4
       - adi,adaq4380-4
       - adi,adaq4381-4
@@ -213,6 +215,15 @@ allOf:
       properties:
         refin-supply: false
 
+  # adi,ad7389-4 is internal reference only
+  - if:
+      properties:
+        compatible:
+          const: adi,ad7389-4
+    then:
+      properties:
+        refio-supply: false
+
   # adaq devices need more supplies and using channel to declare gain property
   # only applies to adaq devices
   - if:
index 44c671eeda734d6120ff53f2d22f27aa03dc9116..d0cb32f136e58827358688ab43909e05d8f7eb90 100644 (file)
@@ -17,35 +17,40 @@ description: |
 
 properties:
   compatible:
-    enum:
-      - adi,ad7091
-      - adi,ad7091r
-      - adi,ad7273
-      - adi,ad7274
-      - adi,ad7276
-      - adi,ad7277
-      - adi,ad7278
-      - adi,ad7466
-      - adi,ad7467
-      - adi,ad7468
-      - adi,ad7475
-      - adi,ad7476
-      - adi,ad7476a
-      - adi,ad7477
-      - adi,ad7477a
-      - adi,ad7478
-      - adi,ad7478a
-      - adi,ad7495
-      - adi,ad7910
-      - adi,ad7920
-      - adi,ad7940
-      - ti,adc081s
-      - ti,adc101s
-      - ti,adc121s
-      - ti,ads7866
-      - ti,ads7867
-      - ti,ads7868
-      - lltc,ltc2314-14
+    oneOf:
+      - items:
+          - enum:
+              - adi,ad7091
+              - adi,ad7091r
+              - adi,ad7273
+              - adi,ad7274
+              - adi,ad7276
+              - adi,ad7277
+              - adi,ad7278
+              - adi,ad7466
+              - adi,ad7467
+              - adi,ad7468
+              - adi,ad7475
+              - adi,ad7476
+              - adi,ad7476a
+              - adi,ad7477
+              - adi,ad7477a
+              - adi,ad7478
+              - adi,ad7478a
+              - adi,ad7495
+              - adi,ad7910
+              - adi,ad7920
+              - adi,ad7940
+              - ti,adc081s
+              - ti,adc101s
+              - ti,adc121s
+              - ti,ads7866
+              - ti,ads7867
+              - ti,ads7868
+              - lltc,ltc2314-14
+      - items:
+          - const: rohm,bu79100g
+          - const: ti,ads7866
 
   reg:
     maxItems: 1
index 52d3f1ce336783084d601d361779ebc766124f7a..1a5209139e1338f803c66ad2b4d63ad53cc11d96 100644 (file)
@@ -45,6 +45,14 @@ properties:
   "#size-cells":
     const: 0
 
+  '#trigger-source-cells':
+    description: |
+      Cell indicates the output signal: 0 = BUSY, 1 = FIRSTDATA.
+
+      For convenience, macros for these values are available in
+      dt-bindings/iio/adc/adi,ad7606.h.
+    const: 1
+
   # According to the datasheet, "Data is clocked in from SDI on the falling
   # edge of SCLK, while data is clocked out on DOUTA on the rising edge of
   # SCLK".  Also, even if not stated textually in the datasheet, it is made
@@ -215,12 +223,6 @@ allOf:
       - required:
           - pwms
 
-  - oneOf:
-      - required:
-          - interrupts
-      - required:
-          - io-backends
-
   - if:
       properties:
         compatible:
index b0962a4583ac716edc0cd4e15bbbc6a331efd1a0..bb9825e7346dd0878325f9cc870301c42cce97cc 100644 (file)
@@ -23,6 +23,7 @@ properties:
               - amlogic,meson8m2-saradc
               - amlogic,meson-gxbb-saradc
               - amlogic,meson-gxl-saradc
+              - amlogic,meson-gxlx-saradc
               - amlogic,meson-gxm-saradc
               - amlogic,meson-axg-saradc
               - amlogic,meson-g12a-saradc
index 6168b44ea72cf6eedde042dc9c61c15f1cf54b19..b489c984c1bbff8f4ef835b8e886dcebd6a43294 100644 (file)
@@ -34,6 +34,7 @@ properties:
           - const: mediatek,mt2701-auxadc
       - items:
           - enum:
+              - mediatek,mt6893-auxadc
               - mediatek,mt8183-auxadc
               - mediatek,mt8186-auxadc
               - mediatek,mt8188-auxadc
index 06951ec5f5da381a9bb942d0ac7416128eebd3bc..3a69ec60edb915ae16312b94fddd32f5c87f37a7 100644 (file)
@@ -32,6 +32,9 @@ properties:
   spi-max-frequency:
     maximum: 20000000
 
+  reset-gpios:
+    maxItems: 1
+
   clocks:
     description: |
       Phandle and clock identifier for external sampling clock.
@@ -71,6 +74,7 @@ unevaluatedProperties: false
 
 examples:
   - |
+    #include <dt-bindings/gpio/gpio.h>
     spi {
       #address-cells = <1>;
       #size-cells = <0>;
@@ -80,6 +84,7 @@ examples:
         reg = <0>;
         interrupt-parent = <&gpio5>;
         interrupts = <15 2>;
+        reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
         spi-max-frequency = <20000000>;
         microchip,device-addr = <0>;
         vref-supply = <&vref_reg>;
diff --git a/Bindings/iio/adc/nuvoton,nct7201.yaml b/Bindings/iio/adc/nuvoton,nct7201.yaml
new file mode 100644 (file)
index 0000000..8ce7d41
--- /dev/null
@@ -0,0 +1,70 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/nuvoton,nct7201.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Nuvoton nct7201 and similar ADCs
+
+maintainers:
+  - Eason Yang <j2anfernee@gmail.com>
+
+description: |
+  The NCT7201/NCT7202 is a Nuvoton Hardware Monitor IC, contains up to 12
+  voltage monitoring channels, with SMBus interface, and up to 4 sets SMBus
+  address selection by ADDR connection. It also provides ALERT# signal for
+  event notification and reset input RSTIN# to recover it from a fault
+  condition.
+
+  NCT7201 contains 8 voltage monitor inputs (VIN1~VIN8).
+  NCT7202 contains 12 voltage monitor inputs (VIN1~VIN12).
+
+properties:
+  compatible:
+    enum:
+      - nuvoton,nct7201
+      - nuvoton,nct7202
+
+  reg:
+    maxItems: 1
+
+  vdd-supply:
+    description:
+      A 3.3V to supply that powers the chip.
+
+  vref-supply:
+    description:
+      The regulator supply for the ADC reference voltage.
+
+  interrupts:
+    maxItems: 1
+
+  reset-gpios:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@1d {
+            compatible = "nuvoton,nct7202";
+            reg = <0x1d>;
+            vdd-supply = <&vdd>;
+            vref-supply = <&vref>;
+            interrupt-parent = <&gpio3>;
+            interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
+            reset-gpios = <&gpio3 28 GPIO_ACTIVE_LOW>;
+        };
+    };
+...
index f39bc92c2b99bb368326b4a7bb4c95f8f8b102be..862e450da214d24ed1ce41dbb2e39205e51efdaf 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Qualcomm's SPMI PMIC Round Robin ADC
 
 maintainers:
-  - Caleb Connolly <caleb.connolly@linaro.org>
+  - Casey Connolly <casey.connolly@linaro.org>
 
 description: |
   The Qualcomm SPMI Round Robin ADC (RRADC) provides interface to clients to
diff --git a/Bindings/iio/adc/rohm,bd79104.yaml b/Bindings/iio/adc/rohm,bd79104.yaml
new file mode 100644 (file)
index 0000000..2a8ad4f
--- /dev/null
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/rohm,bd79104.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM Semiconductor BD79104 ADC
+
+maintainers:
+  - Matti Vaittinen <mazziesaccount@gmail.com>
+
+description: |
+  12 bit SPI ADC with 8 channels.
+
+properties:
+  compatible:
+    const: rohm,bd79104
+
+  reg:
+    maxItems: 1
+
+  vdd-supply: true
+  iovdd-supply: true
+
+# The component data-sheet says the frequency is 20M. I, however, found
+# that the ROHM evaluation board BD79104FV-EVK-001 had problems with 20M.
+# I have successfully used it with 4M. My _assumption_ is that this is not
+# the limitation of the component itself, but a limitation of the EVK.
+  spi-max-frequency:
+    maximum: 20000000
+
+  "#io-channel-cells":
+    const: 1
+
+  spi-cpha: true
+  spi-cpol: true
+
+required:
+  - compatible
+  - reg
+  - vdd-supply
+  - iovdd-supply
+  - spi-cpha
+  - spi-cpol
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        adc@0 {
+            compatible = "rohm,bd79104";
+            reg = <0>;
+            vdd-supply = <&vdd_supply>;
+            iovdd-supply = <&iovdd_supply>;
+            spi-max-frequency = <4000000>;
+            spi-cpha;
+            spi-cpol;
+            #io-channel-cells = <1>;
+        };
+    };
+...
diff --git a/Bindings/iio/adc/rohm,bd79124.yaml b/Bindings/iio/adc/rohm,bd79124.yaml
new file mode 100644 (file)
index 0000000..5032858
--- /dev/null
@@ -0,0 +1,114 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/adc/rohm,bd79124.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM BD79124 ADC/GPO
+
+maintainers:
+  - Matti Vaittinen <mazziesaccount@gmail.com>
+
+description: |
+  The ROHM BD79124 is a 12-bit, 8-channel, SAR ADC. The ADC supports
+  an automatic measurement mode, with an alarm interrupt for out-of-window
+  measurements. ADC input pins can be also configured as general purpose
+  outputs.
+
+properties:
+  compatible:
+    const: rohm,bd79124
+
+  reg:
+    description:
+      I2C slave address.
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 1
+    description:
+      The pin number.
+
+  vdd-supply: true
+
+  iovdd-supply: true
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+patternProperties:
+  "^channel@[0-7]+$":
+    type: object
+    $ref: /schemas/iio/adc/adc.yaml#
+    description: Represents ADC channel.
+
+    properties:
+      reg:
+        description: AIN pin number
+        minimum: 0
+        maximum: 7
+
+    required:
+      - reg
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - iovdd-supply
+  - vdd-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/leds/common.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        adc: adc@10 {
+            compatible = "rohm,bd79124";
+            reg = <0x10>;
+
+            interrupt-parent = <&gpio1>;
+            interrupts = <29 8>;
+
+            vdd-supply = <&dummyreg>;
+            iovdd-supply = <&dummyreg>;
+
+            #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>;
+            };
+        };
+    };
index ef9dcc365eab5653531f4f355884471666d59eb0..17bb60e18a1c23879f2b3ebb003b51cea6f7d71b 100644 (file)
@@ -498,7 +498,7 @@ patternProperties:
 examples:
   - |
     // Example 1: with stm32f429, ADC1, single-ended channel 8
-      adc123: adc@40012000 {
+    adc123: adc@40012000 {
         compatible = "st,stm32f4-adc-core";
         reg = <0x40012000 0x400>;
         interrupts = <18>;
@@ -512,28 +512,28 @@ examples:
         #address-cells = <1>;
         #size-cells = <0>;
         adc@0 {
-          compatible = "st,stm32f4-adc";
-          #io-channel-cells = <1>;
-          reg = <0x0>;
-          clocks = <&rcc 0 168>;
-          interrupt-parent = <&adc123>;
-          interrupts = <0>;
-          st,adc-channels = <8>;
-          dmas = <&dma2 0 0 0x400 0x0>;
-          dma-names = "rx";
-          assigned-resolution-bits = <8>;
+            compatible = "st,stm32f4-adc";
+            #io-channel-cells = <1>;
+            reg = <0x0>;
+            clocks = <&rcc 0 168>;
+            interrupt-parent = <&adc123>;
+            interrupts = <0>;
+            st,adc-channels = <8>;
+            dmas = <&dma2 0 0 0x400 0x0>;
+            dma-names = "rx";
+            assigned-resolution-bits = <8>;
         };
         // ...
         // other adc child nodes follow...
-      };
+    };
 
   - |
     // Example 2: with stm32mp157c to setup ADC1 with:
     // - channels 0 & 1 as single-ended
     // - channels 2 & 3 as differential (with resp. 6 & 7 negative inputs)
-      #include <dt-bindings/interrupt-controller/arm-gic.h>
-      #include <dt-bindings/clock/stm32mp1-clks.h>
-      adc12: adc@48003000 {
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/stm32mp1-clks.h>
+    adc12: adc@48003000 {
         compatible = "st,stm32mp1-adc-core";
         reg = <0x48003000 0x400>;
         interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
@@ -550,27 +550,27 @@ examples:
         #address-cells = <1>;
         #size-cells = <0>;
         adc@0 {
-          compatible = "st,stm32mp1-adc";
-          #io-channel-cells = <1>;
-          reg = <0x0>;
-          interrupt-parent = <&adc12>;
-          interrupts = <0>;
-          st,adc-channels = <0 1>;
-          st,adc-diff-channels = <2 6>, <3 7>;
-          st,min-sample-time-nsecs = <5000>;
-          dmas = <&dmamux1 9 0x400 0x05>;
-          dma-names = "rx";
+            compatible = "st,stm32mp1-adc";
+            #io-channel-cells = <1>;
+            reg = <0x0>;
+            interrupt-parent = <&adc12>;
+            interrupts = <0>;
+            st,adc-channels = <0 1>;
+            st,adc-diff-channels = <2 6>, <3 7>;
+            st,min-sample-time-nsecs = <5000>;
+            dmas = <&dmamux1 9 0x400 0x05>;
+            dma-names = "rx";
         };
         // ...
         // other adc child node follow...
-      };
+    };
 
   - |
     // Example 3: with stm32mp157c to setup ADC2 with:
     // - internal channels 13, 14, 15.
-      #include <dt-bindings/interrupt-controller/arm-gic.h>
-      #include <dt-bindings/clock/stm32mp1-clks.h>
-      adc122: adc@48003000 {
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/stm32mp1-clks.h>
+    adc122: adc@48003000 {
         compatible = "st,stm32mp1-adc-core";
         reg = <0x48003000 0x400>;
         interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
@@ -587,28 +587,28 @@ examples:
         #address-cells = <1>;
         #size-cells = <0>;
         adc@100 {
-          compatible = "st,stm32mp1-adc";
-          #io-channel-cells = <1>;
-          reg = <0x100>;
-          interrupts = <1>;
-          #address-cells = <1>;
-          #size-cells = <0>;
-          channel@13 {
-            reg = <13>;
-            label = "vrefint";
-            st,min-sample-time-ns = <9000>;
-          };
-          channel@14 {
-            reg = <14>;
-            label = "vddcore";
-            st,min-sample-time-ns = <9000>;
-          };
-          channel@15 {
-            reg = <15>;
-            label = "vbat";
-            st,min-sample-time-ns = <9000>;
-          };
+            compatible = "st,stm32mp1-adc";
+            #io-channel-cells = <1>;
+            reg = <0x100>;
+            interrupts = <1>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+            channel@13 {
+                reg = <13>;
+                label = "vrefint";
+                st,min-sample-time-ns = <9000>;
+            };
+            channel@14 {
+                reg = <14>;
+                label = "vddcore";
+                st,min-sample-time-ns = <9000>;
+            };
+            channel@15 {
+                reg = <15>;
+                label = "vbat";
+                st,min-sample-time-ns = <9000>;
+            };
         };
-      };
+    };
 
 ...
diff --git a/Bindings/iio/chemical/winsen,mhz19b.yaml b/Bindings/iio/chemical/winsen,mhz19b.yaml
new file mode 100644 (file)
index 0000000..2a6ddb3
--- /dev/null
@@ -0,0 +1,33 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/chemical/winsen,mhz19b.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MHZ19B CO2 sensor
+
+maintainers:
+  - Gyeyoung Baek <gye976@gmail.com>
+
+properties:
+  compatible:
+    const: winsen,mhz19b
+
+  vin-supply:
+    description: Regulator that provides power to the sensor
+
+required:
+  - compatible
+  - vin-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    serial {
+      co2-sensor {
+        compatible = "winsen,mhz19b";
+        vin-supply = <&vdd>;
+      };
+    };
+...
diff --git a/Bindings/iio/dac/adi,ad3530r.yaml b/Bindings/iio/dac/adi,ad3530r.yaml
new file mode 100644 (file)
index 0000000..a355d52
--- /dev/null
@@ -0,0 +1,100 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/dac/adi,ad3530r.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD3530R and Similar DACs
+
+maintainers:
+  - Kim Seer Paller <kimseer.paller@analog.com>
+
+description: |
+  The AD3530/AD3530R (8-channel) and AD3531/AD3531R (4-channel) are low-power,
+  16-bit, buffered voltage output digital-to-analog converters (DACs) with
+  software-programmable gain controls, providing full-scale output spans of 2.5V
+  or 5V for reference voltages of 2.5V. These devices operate from a single 2.7V
+  to 5.5V supply and are guaranteed monotonic by design. The "R" variants
+  include a 2.5V, 5ppm/°C internal reference, which is disabled by default.
+  Datasheet can be found here:
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ad3530_ad530r.pdf
+  https://www.analog.com/media/en/technical-documentation/data-sheets/ad3531-ad3531r.pdf
+
+properties:
+  compatible:
+    enum:
+      - adi,ad3530
+      - adi,ad3530r
+      - adi,ad3531
+      - adi,ad3531r
+
+  reg:
+    maxItems: 1
+
+  spi-max-frequency:
+    maximum: 50000000
+
+  vdd-supply:
+    description: Power Supply Input.
+
+  iovdd-supply:
+    description: Digital Power Supply Input.
+
+  io-channels:
+    description:
+      ADC channel used to monitor internal die temperature, output voltages, and
+      current of a selected channel via the MUXOUT pin.
+    maxItems: 1
+
+  ref-supply:
+    description:
+      Reference Input/Output. The voltage at the REF pin sets the full-scale
+      range of all channels. If not provided the internal reference is used and
+      also provided on the VREF pin.
+
+  reset-gpios:
+    description:
+      Active low signal that is falling edge sensitive. When it is deasserted,
+      the digital core initialization is performed and all DAC registers except
+      the Interface Configuration A register are reset to their default values.
+    maxItems: 1
+
+  ldac-gpios:
+    description:
+      LDAC pin to be used as a hardware trigger to update the DAC channels. If
+      not present, the DAC channels are updated by Software LDAC.
+    maxItems: 1
+
+  adi,range-double:
+    description:
+      Configure the output range for all channels. If the property is present,
+      the output will range from 0V to 2Vref. If the property is not present,
+      the output will range from 0V to Vref.
+    type: boolean
+
+required:
+  - compatible
+  - reg
+  - vdd-supply
+  - iovdd-supply
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        dac@0 {
+            compatible = "adi,ad3530r";
+            reg = <0>;
+            spi-max-frequency = <1000000>;
+
+            vdd-supply = <&vdd>;
+            iovdd-supply = <&iovdd>;
+        };
+    };
+...
index 2d2561a526838db1a02be625b4a431dfc13e9f73..547044b8e246e928ef7b2feea611ef71ffaa8a0e 100644 (file)
@@ -217,7 +217,7 @@ required:
   - reg
   - spi-max-frequency
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index 5ee80bf6aa11b48e1a65f541860606dcf4954ac2..f994c1ef6d4101eefdb383b4033338642597bdeb 100644 (file)
@@ -27,6 +27,8 @@ properties:
 
   vdrive-supply: true
 
+  vrefin-supply: true
+
   reset-gpios:
     maxItems: 1
 
index 33490853497b85882a7b63c2cf14b3a3af2e6012..1aece3392b77a0cced35caf3711ad363d01870e8 100644 (file)
@@ -144,7 +144,7 @@ required:
 allOf:
   - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index c8c434c1064348ef94e21b57c9e90b934b8083b8..3c8e5781e42cfbc3934f04f8e257c1531ec2858d 100644 (file)
@@ -124,7 +124,7 @@ required:
 allOf:
   - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index 0dc577c339181da19b04b3e20af035467baaf1d1..26011b5639d877cf2f4c537677f66195d9f6d314 100644 (file)
@@ -64,7 +64,7 @@ required:
   - reg
   - vdd-supply
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index 941a49c93943ed11372f7cc38c273d22588705db..c00fa50e42e84ce8057974bbd980ad8cff572a31 100644 (file)
@@ -5,19 +5,26 @@
 $id: http://devicetree.org/schemas/iio/dac/rohm,bd79703.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: ROHM BD79703 DAC device driver
+title: ROHM BD79700, BD79701, BD79702 and BD79703 DACs
 
 maintainers:
   - Matti Vaittinen <mazziesaccount@gmail.com>
 
 description: |
-  The ROHM BD79703 is a 6 channel, 8-bit DAC.
-  Datasheet can be found here:
+  The ROHM BD7970[0,1,2,3] are 8-bit DACs. The BD79700 has 2 channels,
+  BD79701 3 channels, BD79702 4 channels and BD79703 has 6 channels.
+  Datasheets for BD79702 and BD79703 can be found from
   https://fscdn.rohm.com/en/products/databook/datasheet/ic/data_converter/dac/bd79702fv-lb_bd79703fv-lb-e.pdf
+  and for the BD79700 and the BD79701 from
+  https://fscdn.rohm.com/en/products/databook/datasheet/ic/data_converter/dac/bd79700fvm-lb_bd79701fvm-lb-e.pdf
 
 properties:
   compatible:
-    const: rohm,bd79703
+    enum:
+      - rohm,bd79700
+      - rohm,bd79701
+      - rohm,bd79702
+      - rohm,bd79703
 
   reg:
     maxItems: 1
@@ -27,23 +34,35 @@ properties:
 
   vfs-supply:
     description:
-      The regulator to use as a full scale voltage. The voltage should be between 2.7V .. VCC
+      The regulator to use as a full scale voltage. The voltage should be
+      between 2.7V .. VCC. Not present on BD79700 and BD79701.
 
   vcc-supply:
     description:
-      The regulator supplying the operating voltage. Should be between 2.7V ... 5.5V
+      The regulator supplying the operating voltage. Should be between
+      2.7V ... 5.5V. Is used also as a Vfs on BD79700 and BD79701.
 
 required:
   - compatible
   - reg
   - spi-max-frequency
-  - vfs-supply
   - vcc-supply
 
+if:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - rohm,bd79702
+          - rohm,bd79703
+then:
+  required:
+    - vfs-supply
+
 allOf:
   - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index b77e855bd5946122de3cbf23aa845d5d7154b327..ff0cb553e8716c70be5e0f2bcf05736debf7c39f 100644 (file)
@@ -44,6 +44,24 @@ properties:
   '#clock-cells':
     const: 0
 
+  adi,lpf-margin-mhz:
+    description:
+      Sets the minimum distance between the fundamental frequency of `rf_in`
+      and the corner frequency of the low-pass, output filter when operated in
+      'auto' mode. The selected low-pass corner frequency will be greater than,
+      or equal to, `rf_in` + `lpf-margin-hz`. If not setting is found that
+      satisfies this relationship the filter will be put into 'bypass'.
+    default: 0
+
+  adi,hpf-margin-mhz:
+    description:
+      Sets the minimum distance between the fundamental frequency of `rf_in`
+      and the corner frequency of the high-pass, input filter when operated in
+      'auto' mode. The selected high-pass corner frequency will be less than,
+      or equal to, `rf_in` - `hpf-margin-hz`. If not setting is found that
+      satisfies this relationship the filter will be put into 'bypass'.
+    default: 0
+
 required:
   - compatible
   - reg
@@ -61,6 +79,8 @@ examples:
         spi-max-frequency = <10000000>;
         clocks = <&admv8818_rfin>;
         clock-names = "rf_in";
+        adi,lpf-margin-mhz = <300>;
+        adi,hpf-margin-mhz = <300>;
       };
     };
 ...
index d1a6103fc37a0bdde07d5599d0c7ea9bf3c54bcc..f3242dc0e7e64fedd0dd01f4d3a7f4cc6e4bd9a5 100644 (file)
@@ -21,7 +21,7 @@ properties:
   vlogic-supply: true
 
   interrupts:
-    minItems: 1
+    maxItems: 1
     description:
       Interrupt mapping for the trigger interrupt from the internal oscillator.
 
index a4c273c7a67ffe3126a8aa1a8150bc744f383c2f..cf5324de4fd663c7aa5297368ae46c12cfcbe85f 100644 (file)
@@ -53,7 +53,7 @@ required:
 allOf:
   - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index 7e4492bbd0278a336587dc5ac04da7153453da29..d4d4e5c3d8562523872a737864610c26c8fccd82 100644 (file)
@@ -39,7 +39,16 @@ properties:
     maxItems: 1
 
   interrupts:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
+
+  interrupt-names:
+    minItems: 1
+    maxItems: 2
+    items:
+      enum:
+        - INT1
+        - INT2
 
   drive-open-drain:
     type: boolean
@@ -76,6 +85,7 @@ examples:
             reg = <0x68>;
             interrupt-parent = <&gpio2>;
             interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-names = "INT1";
             vdd-supply = <&vdd>;
             vddio-supply = <&vddio>;
         };
@@ -95,6 +105,7 @@ examples:
             spi-cpol;
             interrupt-parent = <&gpio1>;
             interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-names = "INT1";
             vdd-supply = <&vdd>;
             vddio-supply = <&vddio>;
         };
index 1a88b3c253d5bb7cced4c368e8fe7257c8add508..9df81c271411b39a7049f1df975a97d5ab9dd28b 100644 (file)
@@ -24,6 +24,10 @@ properties:
   reg:
     maxItems: 1
 
+  reset-gpios:
+    description: GPIO connected to the DVI reset pin (active low)
+    maxItems: 1
+
 required:
   - compatible
   - reg
@@ -32,6 +36,7 @@ additionalProperties: false
 
 examples:
   - |
+    #include <dt-bindings/gpio/gpio.h>
     i2c {
       #address-cells = <1>;
       #size-cells = <0>;
@@ -39,6 +44,7 @@ examples:
       light-sensor@23 {
         compatible = "rohm,bh1750";
         reg = <0x23>;
+        reset-gpios = <&gpio2 17 GPIO_ACTIVE_LOW>;
       };
     };
 
index 89977b9f01cfe1ef4dade090793d7058143130e6..412c7bcc310ff38d312124794280e1c8ca336bb1 100644 (file)
@@ -102,7 +102,7 @@ required:
 allOf:
   - $ref: /schemas/spi/spi-peripheral-props.yaml
 
-additionalProperties: false
+unevaluatedProperties: false
 
 dependentSchemas:
   honeywell,pmin-pascal:
index 6994b30015bdb69ac8e8d8cc847f93593bd029da..c756aa8631035cb4da1e2433f2394b1f333d2ffb 100644 (file)
@@ -115,7 +115,7 @@ allOf:
         honeywell,pmin-pascal: false
         honeywell,pmax-pascal: false
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
diff --git a/Bindings/input/dlg,da7280.txt b/Bindings/input/dlg,da7280.txt
deleted file mode 100644 (file)
index 96ee5d5..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-Dialog Semiconductor DA7280 Haptics bindings
-
-Required properties:
-- compatible: Should be "dlg,da7280".
-- reg: Specifies the I2C slave address.
-
-- interrupt-parent : Specifies the phandle of the interrupt controller to
-  which the IRQs from DA7280 are delivered to.
-
-- dlg,actuator-type: Set Actuator type. it should be one of:
-  "LRA" - Linear Resonance Actuator type.
-  "ERM-bar" - Bar type Eccentric Rotating Mass.
-  "ERM-coin" - Coin type Eccentric Rotating Mass.
-
-- dlg,const-op-mode: Haptic operation mode for FF_CONSTANT.
-  Possible values:
-       1 - Direct register override(DRO) mode triggered by i2c(default),
-       2 - PWM data source mode controlled by PWM duty,
-- dlg,periodic-op-mode: Haptic operation mode for FF_PERIODIC.
-  Possible values:
-       1 - Register triggered waveform memory(RTWM) mode, the pattern
-           assigned to the PS_SEQ_ID played as much times as PS_SEQ_LOOP,
-       2 - Edge triggered waveform memory(ETWM) mode, external GPI(N)
-           control are required to enable/disable and it needs to keep
-           device enabled by sending magnitude (X > 0),
-           the pattern is assigned to the GPI(N)_SEQUENCE_ID below.
-       The default value is 1 for both of the operation modes.
-       For more details, please see the datasheet.
-
-- dlg,nom-microvolt: Nominal actuator voltage rating.
-  Valid values: 0 - 6000000.
-- dlg,abs-max-microvolt: Absolute actuator maximum voltage rating.
-  Valid values: 0 - 6000000.
-- dlg,imax-microamp: Actuator max current rating.
-  Valid values: 0 - 252000.
-  Default: 130000.
-- dlg,impd-micro-ohms: the impedance of the actuator in micro ohms.
-  Valid values: 0 - 1500000000.
-
-Optional properties:
-- pwms : phandle to the physical PWM(Pulse Width Modulation) device.
-  PWM properties should be named "pwms". And number of cell is different
-  for each pwm device.
-  (See Documentation/devicetree/bindings/pwm/pwm.txt
-   for further information relating to pwm properties)
-
-- dlg,ps-seq-id: the PS_SEQ_ID(pattern ID in waveform memory inside chip)
-  to play back when RTWM-MODE is enabled.
-  Valid range: 0 - 15.
-- dlg,ps-seq-loop: the PS_SEQ_LOOP, Number of times the pre-stored sequence
-  pointed to by PS_SEQ_ID or GPI(N)_SEQUENCE_ID is repeated.
-  Valid range: 0 - 15.
-- dlg,gpiN-seq-id: the GPI(N)_SEQUENCE_ID, pattern to play
-  when gpi0 is triggered, 'N' must be 0 - 2.
-  Valid range: 0 - 15.
-- dlg,gpiN-mode: the pattern mode which can select either
-  "Single-pattern" or "Multi-pattern", 'N' must be 0 - 2.
-- dlg,gpiN-polarity: gpiN polarity which can be chosen among
-  "Rising-edge", "Falling-edge" and "Both-edge",
-  'N' must be 0 - 2
-  Haptic will work by this edge option in case of ETWM mode.
-
-- dlg,resonant-freq-hz: use in case of LRA.
-  the frequency range: 50 - 300.
-  Default: 205.
-
-- dlg,bemf-sens-enable: Enable for internal loop computations.
-- dlg,freq-track-enable: Enable for resonant frequency tracking.
-- dlg,acc-enable: Enable for active acceleration.
-- dlg,rapid-stop-enable: Enable for rapid stop.
-- dlg,amp-pid-enable: Enable for the amplitude PID.
-- dlg,mem-array: Customized waveform memory(patterns) data downloaded to
-  the device during initialization. This is an array of 100 values(u8).
-
-For further information, see device datasheet.
-
-======
-
-Example:
-
-       haptics: da7280-haptics@4a {
-               compatible = "dlg,da7280";
-               reg = <0x4a>;
-               interrupt-parent = <&gpio6>;
-               interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
-               dlg,actuator-type = "LRA";
-               dlg,dlg,const-op-mode = <1>;
-               dlg,dlg,periodic-op-mode = <1>;
-               dlg,nom-microvolt = <2000000>;
-               dlg,abs-max-microvolt = <2000000>;
-               dlg,imax-microamp = <170000>;
-               dlg,resonant-freq-hz = <180>;
-               dlg,impd-micro-ohms = <10500000>;
-               dlg,freq-track-enable;
-               dlg,rapid-stop-enable;
-               dlg,mem-array = <
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-                 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
-               >;
-       };
diff --git a/Bindings/input/dlg,da7280.yaml b/Bindings/input/dlg,da7280.yaml
new file mode 100644 (file)
index 0000000..0d06755
--- /dev/null
@@ -0,0 +1,248 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/dlg,da7280.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Dialog Semiconductor DA7280 Low Power High-Definition Haptic Driver
+
+maintainers:
+  - Roy Im <roy.im.opensource@diasemi.com>
+
+properties:
+  compatible:
+    const: dlg,da7280
+
+  reg:
+    maxItems: 1
+    description: I2C address of the device.
+
+  interrupts:
+    maxItems: 1
+
+  dlg,actuator-type:
+    enum:
+      - LRA # Linear Resonance Actuator type
+      - ERM-bar # Bar type Eccentric Rotating Mass
+      - ERM-coin # Coin type Eccentric Rotating Mass
+
+  dlg,const-op-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum:
+      - 1 # Direct register override (DRO) mode triggered by i2c (default)
+      - 2 # PWM data source mode controlled by PWM duty
+    description:
+      Haptic operation mode for FF_CONSTANT
+
+  dlg,periodic-op-mode:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum:
+      - 1 # Register triggered waveform memory(RTWM) mode, the pattern
+          # assigned to the PS_SEQ_ID played as much times as PS_SEQ_LOOP
+      - 2 # Edge triggered waveform memory(ETWM) mode, external GPI(N)
+          # control are required to enable/disable and it needs to keep
+          # device enabled by sending magnitude (X > 0),
+          # the pattern is assigned to the GPI(N)_SEQUENCE_ID below
+    default: 1
+    description:
+      Haptic operation mode for FF_PERIODIC.
+      The default value is 1 for both of the operation modes.
+      For more details, please see the datasheet
+
+  dlg,nom-microvolt:
+    minimum: 0
+    maximum: 6000000
+    description:
+      Nominal actuator voltage rating
+
+  dlg,abs-max-microvolt:
+    minimum: 0
+    maximum: 6000000
+    description:
+      Absolute actuator maximum voltage rating
+
+  dlg,imax-microamp:
+    minimum: 0
+    maximum: 252000
+    default: 130000
+    description:
+      Actuator max current rating
+
+  dlg,impd-micro-ohms:
+    minimum: 0
+    maximum: 1500000000
+    description:
+      Impedance of the actuator
+
+  pwms:
+    maxItems: 1
+
+  dlg,ps-seq-id:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    description:
+      The PS_SEQ_ID(pattern ID in waveform memory inside chip)
+      to play back when RTWM-MODE is enabled
+
+  dlg,ps-seq-loop:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    description:
+      The PS_SEQ_LOOP, Number of times the pre-stored sequence pointed to by
+      PS_SEQ_ID or GPI(N)_SEQUENCE_ID is repeated
+
+  dlg,gpi0-seq-id:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    description:
+      the GPI0_SEQUENCE_ID, pattern to play when gpi0 is triggered
+
+  dlg,gpi1-seq-id:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    description:
+      the GPI1_SEQUENCE_ID, pattern to play when gpi1 is triggered
+
+  dlg,gpi2-seq-id:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    description:
+      the GPI2_SEQUENCE_ID, pattern to play when gpi2 is triggered
+
+  dlg,gpi0-mode:
+    enum:
+      - Single-pattern
+      - Multi-pattern
+    description:
+      Pattern mode for gpi0
+
+  dlg,gpi1-mode:
+    enum:
+      - Single-pattern
+      - Multi-pattern
+    description:
+      Pattern mode for gpi1
+
+  dlg,gpi2-mode:
+    enum:
+      - Single-pattern
+      - Multi-pattern
+    description:
+      Pattern mode for gpi2
+
+  dlg,gpi0-polarity:
+    enum:
+      - Rising-edge
+      - Falling-edge
+      - Both-edge
+    description:
+      gpi0 polarity, Haptic will work by this edge option in case of ETWM mode
+
+  dlg,gpi1-polarity:
+    enum:
+      - Rising-edge
+      - Falling-edge
+      - Both-edge
+    description:
+      gpi1 polarity, Haptic will work by this edge option in case of ETWM mode
+
+  dlg,gpi2-polarity:
+    enum:
+      - Rising-edge
+      - Falling-edge
+      - Both-edge
+    description:
+      gpi2 polarity, Haptic will work by this edge option in case of ETWM mode
+
+  dlg,resonant-freq-hz:
+    minimum: 50
+    maximum: 300
+    default: 205
+
+  dlg,bemf-sens-enable:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Enable for internal loop computations
+
+  dlg,freq-track-enable:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Enable for resonant frequency tracking
+
+  dlg,acc-enable:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Enable for active acceleration
+
+  dlg,rapid-stop-enable:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Enable for rapid stop
+
+  dlg,amp-pid-enable:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description:
+      Enable for the amplitude PID
+
+  dlg,mem-array:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 100
+    description:
+      Customized waveform memory (patterns) data downloaded to the device during initialization.
+      Each entry value must be included between 0 and 255.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - dlg,actuator-type
+  - dlg,const-op-mode
+  - dlg,periodic-op-mode
+  - dlg,nom-microvolt
+  - dlg,abs-max-microvolt
+  - dlg,imax-microamp
+  - dlg,impd-micro-ohms
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        haptics@4a {
+            compatible = "dlg,da7280";
+            reg = <0x4a>;
+            interrupt-parent = <&gpio6>;
+            interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+            dlg,actuator-type = "LRA";
+            dlg,const-op-mode = <1>;
+            dlg,periodic-op-mode = <1>;
+            dlg,nom-microvolt = <2000000>;
+            dlg,abs-max-microvolt = <2000000>;
+            dlg,imax-microamp = <170000>;
+            dlg,resonant-freq-hz = <180>;
+            dlg,impd-micro-ohms = <10500000>;
+            dlg,freq-track-enable;
+            dlg,rapid-stop-enable;
+            dlg,mem-array = <0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
+                             0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00>;
+        };
+    };
index cb3e1801b0d3f5c9bf53f21c750f50252a625b38..0840e4ab28b7b700bacc416dec30c7c1b5544be1 100644 (file)
@@ -4,14 +4,14 @@
 $id: http://devicetree.org/schemas/input/elan,ekth6915.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Elan eKTH6915 touchscreen controller
+title: Elan I2C-HID touchscreen controllers
 
 maintainers:
   - Douglas Anderson <dianders@chromium.org>
 
 description:
-  Supports the Elan eKTH6915 touchscreen controller.
-  This touchscreen controller uses the i2c-hid protocol with a reset GPIO.
+  Supports the Elan eKTH6915 and other I2C-HID touchscreen controllers.
+  These touchscreen controller use the i2c-hid protocol with a reset GPIO.
 
 allOf:
   - $ref: /schemas/input/touchscreen/touchscreen.yaml#
@@ -23,12 +23,14 @@ properties:
           - enum:
               - elan,ekth5015m
           - const: elan,ekth6915
+      - items:
+          - const: elan,ekth8d18
+          - const: elan,ekth6a12nay
       - enum:
           - elan,ekth6915
           - elan,ekth6a12nay
 
-  reg:
-    const: 0x10
+  reg: true
 
   interrupts:
     maxItems: 1
index 70a922e213f2a62e3d0bd403e24ed9c3ccffd2d5..ab821490284ac0ea13568cb9ee357aea3faaa1b7 100644 (file)
@@ -103,16 +103,9 @@ properties:
     minimum: 0
     maximum: 255
 
-  touchscreen-size-x: true
-  touchscreen-size-y: true
-  touchscreen-fuzz-x: true
-  touchscreen-fuzz-y: true
-  touchscreen-inverted-x: true
-  touchscreen-inverted-y: true
-  touchscreen-swapped-x-y: true
   interrupt-controller: true
 
-additionalProperties: false
+unevaluatedProperties: false
 
 required:
   - compatible
index 4b08be72bbd7da76a7fcb61dfa8ee83677c5f5db..534644cccdcb4251efe71f0cbdaedcea39d92cef 100644 (file)
@@ -70,8 +70,8 @@ examples:
         reg = <0x00580000 0x14000>;
         #interconnect-cells = <1>;
 
-          snoc_mm: interconnect-snoc {
-              compatible = "qcom,msm8939-snoc-mm";
-              #interconnect-cells = <1>;
-          };
+        snoc_mm: interconnect-snoc {
+            compatible = "qcom,msm8939-snoc-mm";
+            #interconnect-cells = <1>;
+        };
     };
index 343ff62d7b65be0e2a8548c2ea96dde459b5fa24..56cdb77b369a8242de0dfbe839135f72a8a6f2c1 100644 (file)
@@ -84,17 +84,17 @@ additionalProperties: false
 
 examples:
   - |
-      #include <dt-bindings/clock/qcom,gcc-msm8953.h>
+    #include <dt-bindings/clock/qcom,gcc-msm8953.h>
 
-      snoc: interconnect@580000 {
-          compatible = "qcom,msm8953-snoc";
-          reg = <0x580000 0x16080>;
+    interconnect@580000 {
+        compatible = "qcom,msm8953-snoc";
+        reg = <0x580000 0x16080>;
 
-          #interconnect-cells = <2>;
+        #interconnect-cells = <2>;
 
-          snoc_mm: interconnect-snoc {
-              compatible = "qcom,msm8953-snoc-mm";
+        interconnect-snoc {
+            compatible = "qcom,msm8953-snoc-mm";
 
-              #interconnect-cells = <2>;
-          };
-      };
+            #interconnect-cells = <2>;
+        };
+    };
index 8004c4baf3977c17219203fecdd33c976278db4b..95ce25ce1f7d4b6e169e9dc3cec368a1d44059e8 100644 (file)
@@ -50,13 +50,13 @@ additionalProperties: false
 
 examples:
   - |
-      #include <dt-bindings/clock/qcom,rpmcc.h>
-
-      bimc: interconnect@fc380000 {
-              reg = <0xfc380000 0x6a000>;
-              compatible = "qcom,msm8974-bimc";
-              #interconnect-cells = <1>;
-              clock-names = "bus", "bus_a";
-              clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
-                       <&rpmcc RPM_SMD_BIMC_A_CLK>;
-      };
+    #include <dt-bindings/clock/qcom,rpmcc.h>
+
+    interconnect@fc380000 {
+        reg = <0xfc380000 0x6a000>;
+        compatible = "qcom,msm8974-bimc";
+        #interconnect-cells = <1>;
+        clock-names = "bus", "bus_a";
+        clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
+                 <&rpmcc RPM_SMD_BIMC_A_CLK>;
+    };
index 4ac0863205b3b30cdfcde6fe1bf5abc3b122a2f5..cd4bb912e0dc556b3b2125fb44531f9028133b23 100644 (file)
@@ -28,6 +28,7 @@ properties:
           - const: qcom,osm-l3
       - items:
           - enum:
+              - qcom,sa8775p-epss-l3
               - qcom,sc7280-epss-l3
               - qcom,sc8280xp-epss-l3
               - qcom,sm6375-cpucp-l3
index 5aaa92a7cef7c2789a66ab7e97c35658441eeb63..01d436d4a5532743751575fc169249c815ff89ac 100644 (file)
@@ -41,10 +41,10 @@ unevaluatedProperties: false
 
 examples:
   - |
-      #include <dt-bindings/clock/qcom,rpmcc.h>
+    #include <dt-bindings/clock/qcom,rpmcc.h>
 
-      bimc: interconnect@400000 {
-          compatible = "qcom,msm8916-bimc";
-          reg = <0x00400000 0x62000>;
-          #interconnect-cells = <1>;
-      };
+    interconnect@400000 {
+        compatible = "qcom,msm8916-bimc";
+        reg = <0x00400000 0x62000>;
+        #interconnect-cells = <1>;
+    };
index 1b9164dc162f35e061a9e9048b33c0752548c05a..dad3ad2fd93b8c9c4ba8e92b5c67162aca3ced64 100644 (file)
@@ -127,19 +127,19 @@ unevaluatedProperties: false
 
 examples:
   - |
-      #include <dt-bindings/interconnect/qcom,sdm845.h>
+    #include <dt-bindings/interconnect/qcom,sdm845.h>
 
-      mem_noc: interconnect@1380000 {
-             compatible = "qcom,sdm845-mem-noc";
-             reg = <0x01380000 0x27200>;
-             #interconnect-cells = <1>;
-             qcom,bcm-voters = <&apps_bcm_voter>;
-      };
+    interconnect@1380000 {
+        compatible = "qcom,sdm845-mem-noc";
+        reg = <0x01380000 0x27200>;
+        #interconnect-cells = <1>;
+        qcom,bcm-voters = <&apps_bcm_voter>;
+    };
 
-      mmss_noc: interconnect@1740000 {
-             compatible = "qcom,sdm845-mmss-noc";
-             reg = <0x01740000 0x1c1000>;
-             #interconnect-cells = <1>;
-             qcom,bcm-voter-names = "apps", "disp";
-             qcom,bcm-voters = <&apps_bcm_voter>, <&disp_bcm_voter>;
-      };
+    interconnect@1740000 {
+        compatible = "qcom,sdm845-mmss-noc";
+        reg = <0x01740000 0x1c1000>;
+        #interconnect-cells = <1>;
+        qcom,bcm-voter-names = "apps", "disp";
+        qcom,bcm-voters = <&apps_bcm_voter>, <&disp_bcm_voter>;
+    };
index 71cf7e252bfc8a6d2b246d74b6b9cbc2b21e8608..4b5e9f9b07ec8fbbcf186bdf231cdf61ac05a637 100644 (file)
@@ -78,15 +78,15 @@ examples:
     #include <dt-bindings/clock/qcom,rpmh.h>
 
     clk_virt: interconnect-0 {
-            compatible = "qcom,sdx75-clk-virt";
-            #interconnect-cells = <2>;
-            qcom,bcm-voters = <&apps_bcm_voter>;
-            clocks = <&rpmhcc RPMH_QPIC_CLK>;
+        compatible = "qcom,sdx75-clk-virt";
+        #interconnect-cells = <2>;
+        qcom,bcm-voters = <&apps_bcm_voter>;
+        clocks = <&rpmhcc RPMH_QPIC_CLK>;
     };
 
     system_noc: interconnect@1640000 {
-            compatible = "qcom,sdx75-system-noc";
-            reg = <0x1640000 0x4b400>;
-            #interconnect-cells = <2>;
-            qcom,bcm-voters = <&apps_bcm_voter>;
+        compatible = "qcom,sdx75-system-noc";
+        reg = <0x1640000 0x4b400>;
+        #interconnect-cells = <2>;
+        qcom,bcm-voters = <&apps_bcm_voter>;
     };
diff --git a/Bindings/interrupt-controller/abilis,tb10x-ictl.txt b/Bindings/interrupt-controller/abilis,tb10x-ictl.txt
deleted file mode 100644 (file)
index 5a4dd26..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-TB10x Top Level Interrupt Controller
-====================================
-
-The Abilis TB10x SOC contains a custom interrupt controller. It performs
-one-to-one mapping of external interrupt sources to CPU interrupts and
-provides support for reconfigurable trigger modes.
-
-Required properties
--------------------
-
-- compatible: Should be "abilis,tb10x-ictl"
-- reg: specifies physical base address and size of register range.
-- interrupt-congroller: Identifies the node as an interrupt controller.
-- #interrupt cells: Specifies the number of cells used to encode an interrupt
-  source connected to this controller. The value shall be 2.
-- interrupts: Specifies the list of interrupt lines which are handled by
-  the interrupt controller in the parent controller's notation. Interrupts
-  are mapped one-to-one to parent interrupts.
-
-Example
--------
-
-intc: interrupt-controller {   /* Parent interrupt controller */
-       interrupt-controller;
-       #interrupt-cells = <1>; /* For example below */
-       /* ... */
-};
-
-tb10x_ictl: pic@2000 {         /* TB10x interrupt controller */
-       compatible = "abilis,tb10x-ictl";
-       reg = <0x2000 0x20>;
-       interrupt-controller;
-       #interrupt-cells = <2>;
-       interrupt-parent = <&intc>;
-       interrupts = <5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
-                       20 21 22 23 24 25 26 27 28 29 30 31>;
-};
diff --git a/Bindings/interrupt-controller/abilis,tb10x-ictl.yaml b/Bindings/interrupt-controller/abilis,tb10x-ictl.yaml
new file mode 100644 (file)
index 0000000..cd2c496
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/abilis,tb10x-ictl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TB10x Top Level Interrupt Controller
+
+maintainers:
+  - Christian Ruppert <christian.ruppert@abilis.com>
+
+description:
+  The Abilis TB10x SOC contains a custom interrupt controller. It performs
+  one-to-one mapping of external interrupt sources to CPU interrupts and
+  provides support for reconfigurable trigger modes.
+
+properties:
+  compatible:
+    const: abilis,tb10x-ictl
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  interrupts:
+    description: A one-to-one mapping of external interrupt sources to parent
+      interrupts.
+    minItems: 1
+    maxItems: 32
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@2000 {
+        compatible = "abilis,tb10x-ictl";
+        reg = <0x2000 0x20>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        interrupts = <5>, <6>, <7>, <8>, <9>, <10>, <11>, <12>, <13>, <14>,
+                     <15>, <16>, <17>, <18>, <19>, <20>, <21>, <22>, <23>,
+                     <24>, <25>, <26>, <27>, <28>, <29>, <30>, <31>;
+    };
diff --git a/Bindings/interrupt-controller/al,alpine-msix.txt b/Bindings/interrupt-controller/al,alpine-msix.txt
deleted file mode 100644 (file)
index 5669764..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Alpine MSIX controller
-
-See arm,gic-v3.txt for SPI and MSI definitions.
-
-Required properties:
-
-- compatible: should be "al,alpine-msix"
-- reg: physical base address and size of the registers
-- interrupt-controller: identifies the node as an interrupt controller
-- msi-controller: identifies the node as an PCI Message Signaled Interrupt
-                 controller
-- al,msi-base-spi: SPI base of the MSI frame
-- al,msi-num-spis: number of SPIs assigned to the MSI frame, relative to SPI0
-
-Example:
-
-msix: msix {
-       compatible = "al,alpine-msix";
-       reg = <0x0 0xfbe00000 0x0 0x100000>;
-       interrupt-parent = <&gic>;
-       interrupt-controller;
-       msi-controller;
-       al,msi-base-spi = <160>;
-       al,msi-num-spis = <160>;
-};
diff --git a/Bindings/interrupt-controller/al,alpine-msix.yaml b/Bindings/interrupt-controller/al,alpine-msix.yaml
new file mode 100644 (file)
index 0000000..9f1ff8e
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/al,alpine-msix.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Alpine MSIX controller
+
+maintainers:
+  - Antoine Tenart <atenart@kernel.org>
+
+properties:
+  compatible:
+    const: al,alpine-msix
+
+  reg:
+    maxItems: 1
+
+  interrupt-parent: true
+
+  msi-controller: true
+
+  al,msi-base-spi:
+    description: SPI base of the MSI frame
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  al,msi-num-spis:
+    description: number of SPIs assigned to the MSI frame, relative to SPI0
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - msi-controller
+  - al,msi-base-spi
+  - al,msi-num-spis
+
+additionalProperties: false
+
+examples:
+  - |
+    msi-controller@fbe00000 {
+        compatible = "al,alpine-msix";
+        reg = <0xfbe00000 0x100000>;
+        interrupt-parent = <&gic>;
+        msi-controller;
+        al,msi-base-spi = <160>;
+        al,msi-num-spis = <160>;
+    };
similarity index 94%
rename from Bindings/pci/altr,msi-controller.yaml
rename to Bindings/interrupt-controller/altr,msi-controller.yaml
index 98814862d00647700b77297420c446867fb6a631..d046954b8a2731c18fb5fba6fb39b6c55f2bf4c8 100644 (file)
@@ -2,7 +2,7 @@
 # Copyright (C) 2015, 2024, Intel Corporation
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/altr,msi-controller.yaml#
+$id: http://devicetree.org/schemas/interrupt-controller/altr,msi-controller.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Altera PCIe MSI controller
diff --git a/Bindings/interrupt-controller/amazon,al-fic.txt b/Bindings/interrupt-controller/amazon,al-fic.txt
deleted file mode 100644 (file)
index c676b03..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Amazon's Annapurna Labs Fabric Interrupt Controller
-
-Required properties:
-
-- compatible: should be "amazon,al-fic"
-- reg: physical base address and size of the registers
-- interrupt-controller: identifies the node as an interrupt controller
-- #interrupt-cells : must be 2. Specifies the number of cells needed to encode
-  an interrupt source. Supported trigger types are low-to-high edge
-  triggered and active high level-sensitive.
-- interrupts: describes which input line in the interrupt parent, this
-  fic's output is connected to. This field property depends on the parent's
-  binding
-
-Please refer to interrupts.txt in this directory for details of the common
-Interrupt Controllers bindings used by client devices.
-
-Example:
-
-amazon_fic: interrupt-controller@fd8a8500 {
-       compatible = "amazon,al-fic";
-       interrupt-controller;
-       #interrupt-cells = <2>;
-       reg = <0x0 0xfd8a8500 0x0 0x1000>;
-       interrupt-parent = <&gic>;
-       interrupts = <GIC_SPI 0x0 IRQ_TYPE_LEVEL_HIGH>;
-};
diff --git a/Bindings/interrupt-controller/amazon,al-fic.yaml b/Bindings/interrupt-controller/amazon,al-fic.yaml
new file mode 100644 (file)
index 0000000..26bc05d
--- /dev/null
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/amazon,al-fic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amazon Annapurna Labs Fabric Interrupt Controller
+
+maintainers:
+  - Talel Shenhar <talel@amazon.com>
+
+properties:
+  compatible:
+    const: amazon,al-fic
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    interrupt-controller@fd8a8500 {
+        compatible = "amazon,al-fic";
+        reg = <0xfd8a8500 0x1000>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        interrupts = <GIC_SPI 0x0 IRQ_TYPE_LEVEL_HIGH>;
+    };
diff --git a/Bindings/interrupt-controller/arm,nvic.txt b/Bindings/interrupt-controller/arm,nvic.txt
deleted file mode 100644 (file)
index 386ab37..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-* ARM Nested Vector Interrupt Controller (NVIC)
-
-The NVIC provides an interrupt controller that is tightly coupled to
-Cortex-M based processor cores.  The NVIC implemented on different SoCs
-vary in the number of interrupts and priority bits per interrupt.
-
-Main node required properties:
-
-- compatible : should be one of:
-       "arm,v6m-nvic"
-       "arm,v7m-nvic"
-       "arm,v8m-nvic"
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source.  The type shall be a <u32> and the value shall be 2.
-
-  The 1st cell contains the interrupt number for the interrupt type.
-
-  The 2nd cell is the priority of the interrupt.
-
-- reg : Specifies base physical address(s) and size of the NVIC registers.
-  This is at a fixed address (0xe000e100) and size (0xc00).
-
-- arm,num-irq-priority-bits: The number of priority bits implemented by the
-  given SoC
-
-Example:
-
-       intc: interrupt-controller@e000e100 {
-               compatible = "arm,v7m-nvic";
-               #interrupt-cells = <2>;
-               #address-cells = <1>;
-               interrupt-controller;
-               reg = <0xe000e100 0xc00>;
-               arm,num-irq-priority-bits = <4>;
-       };
diff --git a/Bindings/interrupt-controller/arm,nvic.yaml b/Bindings/interrupt-controller/arm,nvic.yaml
new file mode 100644 (file)
index 0000000..d89eca9
--- /dev/null
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/arm,nvic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM Nested Vector Interrupt Controller (NVIC)
+
+maintainers:
+  - Rob Herring <robh@kernel.org>
+
+description:
+  The NVIC provides an interrupt controller that is tightly coupled to Cortex-M
+  based processor cores.  The NVIC implemented on different SoCs vary in the
+  number of interrupts and priority bits per interrupt.
+
+properties:
+  compatible:
+    enum:
+      - arm,v6m-nvic
+      - arm,v7m-nvic
+      - arm,v8m-nvic
+
+  reg:
+    maxItems: 1
+
+  '#address-cells':
+    const: 0
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+    description: |
+      Number of cells to encode an interrupt source:
+      first = interrupt number, second = priority.
+
+  arm,num-irq-priority-bits:
+    description: Number of priority bits implemented by the SoC
+    minimum: 1
+    maximum: 8
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - arm,num-irq-priority-bits
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@e000e100 {
+        compatible = "arm,v7m-nvic";
+        #interrupt-cells = <2>;
+        #address-cells = <0>;
+        interrupt-controller;
+        reg = <0xe000e100 0xc00>;
+        arm,num-irq-priority-bits = <4>;
+    };
diff --git a/Bindings/interrupt-controller/arm,versatile-fpga-irq.txt b/Bindings/interrupt-controller/arm,versatile-fpga-irq.txt
deleted file mode 100644 (file)
index ea939f5..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-* ARM Versatile FPGA interrupt controller
-
-One or more FPGA IRQ controllers can be synthesized in an ARM reference board
-such as the Integrator or Versatile family. The output of these different
-controllers are OR:ed together and fed to the CPU tile's IRQ input. Each
-instance can handle up to 32 interrupts.
-
-Required properties:
-- compatible: "arm,versatile-fpga-irq"
-- interrupt-controller: Identifies the node as an interrupt controller
-- #interrupt-cells: The number of cells to define the interrupts.  Must be 1
-  as the FPGA IRQ controller has no configuration options for interrupt
-  sources.  The cell is a u32 and defines the interrupt number.
-- reg: The register bank for the FPGA interrupt controller.
-- clear-mask: a u32 number representing the mask written to clear all IRQs
-  on the controller at boot for example.
-- valid-mask: a u32 number representing a bit mask determining which of
-  the interrupts are valid. Unconnected/unused lines are set to 0, and
-  the system till not make it possible for devices to request these
-  interrupts.
-
-The "oxsemi,ox810se-rps-irq" compatible is deprecated.
-
-Example:
-
-pic: pic@14000000 {
-        compatible = "arm,versatile-fpga-irq";
-        #interrupt-cells = <1>;
-        interrupt-controller;
-        reg = <0x14000000 0x100>;
-        clear-mask = <0xffffffff>;
-        valid-mask = <0x003fffff>;
-};
-
-Optional properties:
-- interrupts: if the FPGA IRQ controller is cascaded, i.e. if its IRQ
-  output is simply connected to the input of another IRQ controller,
-  then the parent IRQ shall be specified in this property.
diff --git a/Bindings/interrupt-controller/arm,versatile-fpga-irq.yaml b/Bindings/interrupt-controller/arm,versatile-fpga-irq.yaml
new file mode 100644 (file)
index 0000000..8d581b3
--- /dev/null
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/arm,versatile-fpga-irq.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM Versatile FPGA IRQ Controller
+
+maintainers:
+  - Linus Walleij <linus.walleij@linaro.org>
+
+description:
+  One or more FPGA IRQ controllers can be synthesized in an ARM reference board
+  such as the Integrator or Versatile family. The output of these different
+  controllers are OR:ed together and fed to the CPU tile's IRQ input. Each
+  instance can handle up to 32 interrupts.
+
+properties:
+  compatible:
+    const: arm,versatile-fpga-irq
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+  reg:
+    maxItems: 1
+
+  clear-mask:
+    description: A mask written to clear all IRQs on the controller at boot.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  valid-mask:
+    description:
+      A bit mask determining which interrupts are valid; unused lines are set to 0.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  interrupts:
+    maxItems: 1
+
+additionalProperties: false
+
+required:
+  - compatible
+  - interrupt-controller
+  - '#interrupt-cells'
+  - reg
+  - clear-mask
+  - valid-mask
+
+examples:
+  - |
+    interrupt-controller@14000000 {
+        compatible = "arm,versatile-fpga-irq";
+        #interrupt-cells = <1>;
+        interrupt-controller;
+        reg = <0x14000000 0x100>;
+        clear-mask = <0xffffffff>;
+        valid-mask = <0x003fffff>;
+    };
diff --git a/Bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt b/Bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt
deleted file mode 100644 (file)
index 033cc82..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Device tree configuration for the I2C Interrupt Controller on the AST24XX and
-AST25XX SoCs.
-
-Required Properties:
-- #address-cells       : should be 1
-- #size-cells          : should be 1
-- #interrupt-cells     : should be 1
-- compatible           : should be "aspeed,ast2400-i2c-ic"
-                         or "aspeed,ast2500-i2c-ic"
-- reg                  : address start and range of controller
-- interrupts           : interrupt number
-- interrupt-controller : denotes that the controller receives and fires
-                         new interrupts for child busses
-
-Example:
-
-i2c_ic: interrupt-controller@0 {
-       #address-cells = <1>;
-       #size-cells = <1>;
-       #interrupt-cells = <1>;
-       compatible = "aspeed,ast2400-i2c-ic";
-       reg = <0x0 0x40>;
-       interrupts = <12>;
-       interrupt-controller;
-};
diff --git a/Bindings/interrupt-controller/aspeed,ast2400-i2c-ic.yaml b/Bindings/interrupt-controller/aspeed,ast2400-i2c-ic.yaml
new file mode 100644 (file)
index 0000000..6cff6a7
--- /dev/null
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/aspeed,ast2400-i2c-ic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Aspeed I2C Interrupt Controller (AST24XX/AST25XX)
+
+maintainers:
+  - Ryan Chen <ryan_chen@aspeedtech.com>
+
+properties:
+  compatible:
+    enum:
+      - aspeed,ast2400-i2c-ic
+      - aspeed,ast2500-i2c-ic
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#interrupt-cells'
+  - interrupts
+  - interrupt-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@0 {
+        compatible = "aspeed,ast2400-i2c-ic";
+        reg = <0x0 0x40>;
+        #interrupt-cells = <1>;
+        interrupts = <12>;
+        interrupt-controller;
+    };
diff --git a/Bindings/interrupt-controller/aspeed,ast2500-scu-ic.yaml b/Bindings/interrupt-controller/aspeed,ast2500-scu-ic.yaml
new file mode 100644 (file)
index 0000000..d5287a2
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2025 Eddie James
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/aspeed,ast2500-scu-ic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Aspeed AST25XX and AST26XX SCU Interrupt Controller
+
+maintainers:
+  - Eddie James <eajames@linux.ibm.com>
+
+properties:
+  compatible:
+    enum:
+      - aspeed,ast2500-scu-ic
+      - aspeed,ast2600-scu-ic0
+      - aspeed,ast2600-scu-ic1
+
+  reg:
+    maxItems: 1
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+required:
+  - compatible
+  - reg
+  - '#interrupt-cells'
+  - interrupts
+  - interrupt-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@18 {
+        compatible = "aspeed,ast2500-scu-ic";
+        reg = <0x18 0x4>;
+        #interrupt-cells = <1>;
+        interrupts = <21>;
+        interrupt-controller;
+    };
diff --git a/Bindings/interrupt-controller/aspeed,ast2xxx-scu-ic.txt b/Bindings/interrupt-controller/aspeed,ast2xxx-scu-ic.txt
deleted file mode 100644 (file)
index 251ed44..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-Aspeed AST25XX and AST26XX SCU Interrupt Controller
-
-Required Properties:
- - #interrupt-cells            : must be 1
- - compatible                  : must be "aspeed,ast2500-scu-ic",
-                                 "aspeed,ast2600-scu-ic0" or
-                                 "aspeed,ast2600-scu-ic1"
- - interrupts                  : interrupt from the parent controller
- - interrupt-controller                : indicates that the controller receives and
-                                 fires new interrupts for child busses
-
-Example:
-
-    syscon@1e6e2000 {
-        ranges = <0 0x1e6e2000 0x1a8>;
-
-        scu_ic: interrupt-controller@18 {
-            #interrupt-cells = <1>;
-            compatible = "aspeed,ast2500-scu-ic";
-            interrupts = <21>;
-            interrupt-controller;
-        };
-    };
diff --git a/Bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt b/Bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
deleted file mode 100644 (file)
index bdd1730..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-BCM2835 Top-Level ("ARMCTRL") Interrupt Controller
-
-The BCM2835 contains a custom top-level interrupt controller, which supports
-72 interrupt sources using a 2-level register scheme. The interrupt
-controller, or the HW block containing it, is referred to occasionally
-as "armctrl" in the SoC documentation, hence naming of this binding.
-
-The BCM2836 contains the same interrupt controller with the same
-interrupts, but the per-CPU interrupt controller is the root, and an
-interrupt there indicates that the ARMCTRL has an interrupt to handle.
-
-Required properties:
-
-- compatible : should be "brcm,bcm2835-armctrl-ic" or
-                 "brcm,bcm2836-armctrl-ic"
-- reg : Specifies base physical address and size of the registers.
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The value shall be 2.
-
-  The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic
-  pending" register, or 1/2 respectively for interrupts in the "IRQ pending
-  1/2" register.
-
-  The 2nd cell contains the interrupt number within the bank. Valid values
-  are 0..7 for bank 0, and 0..31 for bank 1.
-
-Additional required properties for brcm,bcm2836-armctrl-ic:
-- interrupts : Specifies the interrupt on the parent for this interrupt
-  controller to handle.
-
-The interrupt sources are as follows:
-
-Bank 0:
-0: ARM_TIMER
-1: ARM_MAILBOX
-2: ARM_DOORBELL_0
-3: ARM_DOORBELL_1
-4: VPU0_HALTED
-5: VPU1_HALTED
-6: ILLEGAL_TYPE0
-7: ILLEGAL_TYPE1
-
-Bank 1:
-0: TIMER0
-1: TIMER1
-2: TIMER2
-3: TIMER3
-4: CODEC0
-5: CODEC1
-6: CODEC2
-7: VC_JPEG
-8: ISP
-9: VC_USB
-10: VC_3D
-11: TRANSPOSER
-12: MULTICORESYNC0
-13: MULTICORESYNC1
-14: MULTICORESYNC2
-15: MULTICORESYNC3
-16: DMA0
-17: DMA1
-18: VC_DMA2
-19: VC_DMA3
-20: DMA4
-21: DMA5
-22: DMA6
-23: DMA7
-24: DMA8
-25: DMA9
-26: DMA10
-27: DMA11-14 - shared interrupt for DMA 11 to 14
-28: DMAALL - triggers on all dma interrupts (including channel 15)
-29: AUX
-30: ARM
-31: VPUDMA
-
-Bank 2:
-0: HOSTPORT
-1: VIDEOSCALER
-2: CCP2TX
-3: SDC
-4: DSI0
-5: AVE
-6: CAM0
-7: CAM1
-8: HDMI0
-9: HDMI1
-10: PIXELVALVE1
-11: I2CSPISLV
-12: DSI1
-13: PWA0
-14: PWA1
-15: CPR
-16: SMI
-17: GPIO0
-18: GPIO1
-19: GPIO2
-20: GPIO3
-21: VC_I2C
-22: VC_SPI
-23: VC_I2SPCM
-24: VC_SDIO
-25: VC_UART
-26: SLIMBUS
-27: VEC
-28: CPG
-29: RNG
-30: VC_ARASANSDIO
-31: AVSPMON
-
-Example:
-
-/* BCM2835, first level */
-intc: interrupt-controller {
-       compatible = "brcm,bcm2835-armctrl-ic";
-       reg = <0x7e00b200 0x200>;
-       interrupt-controller;
-       #interrupt-cells = <2>;
-};
-
-/* BCM2836, second level */
-intc: interrupt-controller {
-       compatible = "brcm,bcm2836-armctrl-ic";
-       reg = <0x7e00b200 0x200>;
-       interrupt-controller;
-       #interrupt-cells = <2>;
-
-       interrupt-parent = <&local_intc>;
-       interrupts = <8>;
-};
diff --git a/Bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml b/Bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml
new file mode 100644 (file)
index 0000000..625eb22
--- /dev/null
@@ -0,0 +1,162 @@
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: BCM2835 ARMCTRL Interrupt Controller
+
+maintainers:
+  - Florian Fainelli <florian.fainelli@broadcom.com>
+  - Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
+
+description: >
+  The BCM2835 contains a custom top-level interrupt controller, which supports
+  72 interrupt sources using a 2-level register scheme. The interrupt
+  controller, or the HW block containing it, is referred to occasionally as
+  "armctrl" in the SoC documentation, hence naming of this binding.
+
+  The BCM2836 contains the same interrupt controller with the same interrupts,
+  but the per-CPU interrupt controller is the root, and an interrupt there
+  indicates that the ARMCTRL has an interrupt to handle.
+
+  The interrupt sources are as follows:
+
+  Bank 0:
+    0: ARM_TIMER
+    1: ARM_MAILBOX
+    2: ARM_DOORBELL_0
+    3: ARM_DOORBELL_1
+    4: VPU0_HALTED
+    5: VPU1_HALTED
+    6: ILLEGAL_TYPE0
+    7: ILLEGAL_TYPE1
+
+  Bank 1:
+    0: TIMER0
+    1: TIMER1
+    2: TIMER2
+    3: TIMER3
+    4: CODEC0
+    5: CODEC1
+    6: CODEC2
+    7: VC_JPEG
+    8: ISP
+    9: VC_USB
+    10: VC_3D
+    11: TRANSPOSER
+    12: MULTICORESYNC0
+    13: MULTICORESYNC1
+    14: MULTICORESYNC2
+    15: MULTICORESYNC3
+    16: DMA0
+    17: DMA1
+    18: VC_DMA2
+    19: VC_DMA3
+    20: DMA4
+    21: DMA5
+    22: DMA6
+    23: DMA7
+    24: DMA8
+    25: DMA9
+    26: DMA10
+    27: DMA11-14 - shared interrupt for DMA 11 to 14
+    28: DMAALL - triggers on all dma interrupts (including channel 15)
+    29: AUX
+    30: ARM
+    31: VPUDMA
+
+  Bank 2:
+    0: HOSTPORT
+    1: VIDEOSCALER
+    2: CCP2TX
+    3: SDC
+    4: DSI0
+    5: AVE
+    6: CAM0
+    7: CAM1
+    8: HDMI0
+    9: HDMI1
+    10: PIXELVALVE1
+    11: I2CSPISLV
+    12: DSI1
+    13: PWA0
+    14: PWA1
+    15: CPR
+    16: SMI
+    17: GPIO0
+    18: GPIO1
+    19: GPIO2
+    20: GPIO3
+    21: VC_I2C
+    22: VC_SPI
+    23: VC_I2SPCM
+    24: VC_SDIO
+    25: VC_UART
+    26: SLIMBUS
+    27: VEC
+    28: CPG
+    29: RNG
+    30: VC_ARASANSDIO
+    31: AVSPMON
+
+properties:
+  compatible:
+    enum:
+      - brcm,bcm2835-armctrl-ic
+      - brcm,bcm2836-armctrl-ic
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+    description: >
+      The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic
+      pending" register, or 1/2 respectively for interrupts in the "IRQ pending
+      1/2" register.
+
+      The 2nd cell contains the interrupt number within the bank. Valid values
+      are 0..7 for bank 0, and 0..31 for bank 1.
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,bcm2836-armctrl-ic
+    then:
+      required:
+        - interrupts
+    else:
+      properties:
+        interrupts: false
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@7e00b200 {
+        compatible = "brcm,bcm2835-armctrl-ic";
+        reg = <0x7e00b200 0x200>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+    };
+  - |
+    interrupt-controller@7e00b200 {
+        compatible = "brcm,bcm2836-armctrl-ic";
+        reg = <0x7e00b200 0x200>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        interrupts = <8>;
+    };
diff --git a/Bindings/interrupt-controller/brcm,bcm6345-l1-intc.txt b/Bindings/interrupt-controller/brcm,bcm6345-l1-intc.txt
deleted file mode 100644 (file)
index 2bc19b1..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-Broadcom BCM6345-style Level 1 interrupt controller
-
-This block is a first level interrupt controller that is typically connected
-directly to one of the HW INT lines on each CPU.
-
-Key elements of the hardware design include:
-
-- 32, 64 or 128 incoming level IRQ lines
-
-- Most onchip peripherals are wired directly to an L1 input
-
-- A separate instance of the register set for each CPU, allowing individual
-  peripheral IRQs to be routed to any CPU
-
-- Contains one or more enable/status word pairs per CPU
-
-- No atomic set/clear operations
-
-- No polarity/level/edge settings
-
-- No FIFO or priority encoder logic; software is expected to read all
-  2-4 status words to determine which IRQs are pending
-
-Required properties:
-
-- compatible: should be "brcm,bcm<soc>-l1-intc", "brcm,bcm6345-l1-intc"
-- reg: specifies the base physical address and size of the registers;
-  the number of supported IRQs is inferred from the size argument
-- interrupt-controller: identifies the node as an interrupt controller
-- #interrupt-cells: specifies the number of cells needed to encode an interrupt
-  source, should be 1.
-- interrupts: specifies the interrupt line(s) in the interrupt-parent controller
-  node; valid values depend on the type of parent interrupt controller
-
-If multiple reg ranges and interrupt-parent entries are present on an SMP
-system, the driver will allow IRQ SMP affinity to be set up through the
-/proc/irq/ interface.  In the simplest possible configuration, only one
-reg range and one interrupt-parent is needed.
-
-The driver operates in native CPU endian by default, there is no support for
-specifying an alternative endianness.
-
-Example:
-
-periph_intc: interrupt-controller@10000000 {
-        compatible = "brcm,bcm63168-l1-intc", "brcm,bcm6345-l1-intc";
-        reg = <0x10000020 0x20>,
-              <0x10000040 0x20>;
-
-        interrupt-controller;
-        #interrupt-cells = <1>;
-
-        interrupt-parent = <&cpu_intc>;
-        interrupts = <2>, <3>;
-};
diff --git a/Bindings/interrupt-controller/brcm,bcm6345-l1-intc.yaml b/Bindings/interrupt-controller/brcm,bcm6345-l1-intc.yaml
new file mode 100644 (file)
index 0000000..ca6a2ff
--- /dev/null
@@ -0,0 +1,81 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm6345-l1-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM6345-style Level 1 interrupt controller
+
+maintainers:
+  - Simon Arlott <simon@octiron.net>
+
+description: >
+  This block is a first level interrupt controller that is typically connected
+  directly to one of the HW INT lines on each CPU.
+
+  Key elements of the hardware design include:
+
+    - 32, 64 or 128 incoming level IRQ lines
+
+    - Most onchip peripherals are wired directly to an L1 input
+
+    - A separate instance of the register set for each CPU, allowing individual
+      peripheral IRQs to be routed to any CPU
+
+    - Contains one or more enable/status word pairs per CPU
+
+    - No atomic set/clear operations
+
+    - No polarity/level/edge settings
+
+    - No FIFO or priority encoder logic; software is expected to read all
+      2-4 status words to determine which IRQs are pending
+
+  If multiple reg ranges and interrupt-parent entries are present on an SMP
+  system, the driver will allow IRQ SMP affinity to be set up through the
+  /proc/irq/ interface.  In the simplest possible configuration, only one
+  reg range and one interrupt-parent is needed.
+
+  The driver operates in native CPU endian by default, there is no support for
+  specifying an alternative endianness.
+
+properties:
+  compatible:
+    const: brcm,bcm6345-l1-intc
+
+  reg:
+    description: One entry per CPU core
+    minItems: 1
+    maxItems: 2
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 1
+
+  interrupts:
+    description: One entry per CPU core
+    minItems: 1
+    maxItems: 2
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@10000000 {
+        compatible = "brcm,bcm6345-l1-intc";
+        reg = <0x10000020 0x20>,
+              <0x10000040 0x20>;
+
+        interrupt-controller;
+        #interrupt-cells = <1>;
+
+        interrupts = <2>, <3>;
+    };
diff --git a/Bindings/interrupt-controller/cdns,xtensa-mx.txt b/Bindings/interrupt-controller/cdns,xtensa-mx.txt
deleted file mode 100644 (file)
index d4de980..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-* Xtensa Interrupt Distributor and Programmable Interrupt Controller (MX)
-
-Required properties:
-- compatible: Should be "cdns,xtensa-mx".
-
-Remaining properties have exact same meaning as in Xtensa PIC
-(see cdns,xtensa-pic.txt).
-
-Examples:
-       pic: pic {
-               compatible = "cdns,xtensa-mx";
-               /* one cell: internal irq number,
-                * two cells: second cell == 0: internal irq number
-                *            second cell == 1: external irq number
-                */
-               #interrupt-cells = <2>;
-               interrupt-controller;
-       };
diff --git a/Bindings/interrupt-controller/cdns,xtensa-pic.txt b/Bindings/interrupt-controller/cdns,xtensa-pic.txt
deleted file mode 100644 (file)
index 026ef4c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-* Xtensa built-in Programmable Interrupt Controller (PIC)
-
-Required properties:
-- compatible: Should be "cdns,xtensa-pic".
-- interrupt-controller: Identifies the node as an interrupt controller.
-- #interrupt-cells: The number of cells to define the interrupts.
-  It may be either 1 or 2.
-  When it's 1, the first cell is the internal IRQ number.
-  When it's 2, the first cell is the IRQ number, and the second cell
-  specifies whether it's internal (0) or external (1).
-  Periferals are usually connected to a fixed external IRQ, but for different
-  core variants it may be mapped to different internal IRQ.
-  IRQ sensitivity and priority are fixed for each core variant and may not be
-  changed at runtime.
-
-Examples:
-       pic: pic {
-               compatible = "cdns,xtensa-pic";
-               /* one cell: internal irq number,
-                * two cells: second cell == 0: internal irq number
-                *            second cell == 1: external irq number
-                */
-               #interrupt-cells = <2>;
-               interrupt-controller;
-       };
diff --git a/Bindings/interrupt-controller/cdns,xtensa-pic.yaml b/Bindings/interrupt-controller/cdns,xtensa-pic.yaml
new file mode 100644 (file)
index 0000000..6773207
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2025 Max Filippov <jcmvbkbc@gmail.com>
+
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/cdns,xtensa-pic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xtensa Interrupt Controllers
+
+maintainers:
+  - Max Filippov <jcmvbkbc@gmail.com>
+
+description:
+  Xtensa Interrupt Distributor and Programmable Interrupt Controller (MX) and
+  Xtensa built-in Programmable Interrupt Controller (PIC)
+
+properties:
+  compatible:
+    enum:
+      - cdns,xtensa-mx
+      - cdns,xtensa-pic
+
+  '#interrupt-cells':
+    enum: [ 1, 2 ]
+    description:
+      Number of cells to define the interrupts. When 1, the first cell is the
+      internal IRQ number; when 2, the second cell specifies internal (0) or
+      external (1).
+
+  interrupt-controller: true
+
+required:
+  - compatible
+  - '#interrupt-cells'
+  - interrupt-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller {
+        compatible = "cdns,xtensa-pic";
+        /* one cell: internal irq number,
+         * two cells: second cell == 0: internal irq number
+         *            second cell == 1: external irq number
+         */
+        #interrupt-cells = <2>;
+        interrupt-controller;
+    };
diff --git a/Bindings/interrupt-controller/chrp,open-pic.yaml b/Bindings/interrupt-controller/chrp,open-pic.yaml
new file mode 100644 (file)
index 0000000..f0d9bbd
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/chrp,open-pic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Open PIC Interrupt Controller
+
+maintainers:
+  - Rob Herring <robh@kernel.org>
+
+description:
+  This binding specifies what properties must be available in the device tree
+  representation of an Open PIC compliant interrupt controller.  This binding is
+  based on the binding defined for Open PIC in [1] and is a superset of that
+  binding.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: fsl,mpic
+          - const: chrp,open-pic
+      - const: chrp,open-pic
+
+  device_type:
+    const: open-pci
+    deprecated: true
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#address-cells':
+    const: 0
+
+  '#interrupt-cells':
+    const: 2
+
+  pic-no-reset:
+    description: Indicates the PIC shall not be reset during runtime initialization.
+    type: boolean
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#address-cells'
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@40000 {
+        compatible = "chrp,open-pic";
+        reg = <0x40000 0x40000>;
+        interrupt-controller;
+        #address-cells = <0>;
+        #interrupt-cells = <2>;
+        pic-no-reset;
+    };
diff --git a/Bindings/interrupt-controller/cirrus,clps711x-intc.txt b/Bindings/interrupt-controller/cirrus,clps711x-intc.txt
deleted file mode 100644 (file)
index 969b458..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-Cirrus Logic CLPS711X Interrupt Controller
-
-Required properties:
-
-- compatible: Should be "cirrus,ep7209-intc".
-- reg: Specifies base physical address of the registers set.
-- interrupt-controller: Identifies the node as an interrupt controller.
-- #interrupt-cells: Specifies the number of cells needed to encode an
-  interrupt source. The value shall be 1.
-
-The interrupt sources are as follows:
-ID     Name    Description
----------------------------
-1:     BLINT   Battery low (FIQ)
-3:     MCINT   Media changed (FIQ)
-4:     CSINT   CODEC sound
-5:     EINT1   External 1
-6:     EINT2   External 2
-7:     EINT3   External 3
-8:     TC1OI   TC1 under flow
-9:     TC2OI   TC2 under flow
-10:    RTCMI   RTC compare match
-11:    TINT    64Hz tick
-12:    UTXINT1 UART1 transmit FIFO half empty
-13:    URXINT1 UART1 receive FIFO half full
-14:    UMSINT  UART1 modem status changed
-15:    SSEOTI  SSI1 end of transfer
-16:    KBDINT  Keyboard
-17:    SS2RX   SSI2 receive FIFO half or greater full
-18:    SS2TX   SSI2 transmit FIFO less than half empty
-28:    UTXINT2 UART2 transmit FIFO half empty
-29:    URXINT2 UART2 receive FIFO half full
-32:    DAIINT  DAI interface (FIQ)
-
-Example:
-       intc: interrupt-controller {
-               compatible = "cirrus,ep7312-intc", "cirrus,ep7209-intc";
-               reg = <0x80000000 0x4000>;
-               interrupt-controller;
-               #interrupt-cells = <1>;
-       };
diff --git a/Bindings/interrupt-controller/cirrus,ep7209-intc.yaml b/Bindings/interrupt-controller/cirrus,ep7209-intc.yaml
new file mode 100644 (file)
index 0000000..d3cc49d
--- /dev/null
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/cirrus,ep7209-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cirrus Logic CLPS711X Interrupt Controller
+
+maintainers:
+  - Alexander Shiyan <shc_work@mail.ru>
+
+description: >
+  Cirrus Logic CLPS711X Interrupt Controller
+
+  The interrupt sources are as follows:
+    ID Name    Description
+    ---------------------------
+    1: BLINT   Battery low (FIQ)
+    3: MCINT   Media changed (FIQ)
+    4: CSINT   CODEC sound
+    5: EINT1   External 1
+    6: EINT2   External 2
+    7: EINT3   External 3
+    8: TC1OI   TC1 under flow
+    9: TC2OI   TC2 under flow
+    10:        RTCMI   RTC compare match
+    11:        TINT    64Hz tick
+    12:        UTXINT1 UART1 transmit FIFO half empty
+    13:        URXINT1 UART1 receive FIFO half full
+    14:        UMSINT  UART1 modem status changed
+    15:        SSEOTI  SSI1 end of transfer
+    16:        KBDINT  Keyboard
+    17:        SS2RX   SSI2 receive FIFO half or greater full
+    18:        SS2TX   SSI2 transmit FIFO less than half empty
+    28:        UTXINT2 UART2 transmit FIFO half empty
+    29:        URXINT2 UART2 receive FIFO half full
+    32:        DAIINT  DAI interface (FIQ)
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: cirrus,ep7312-intc
+          - const: cirrus,ep7209-intc
+      - items:
+          - const: cirrus,ep7209-intc
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@80000000 {
+        compatible = "cirrus,ep7312-intc", "cirrus,ep7209-intc";
+        reg = <0x80000000 0x4000>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/cnxt,cx92755-ic.yaml b/Bindings/interrupt-controller/cnxt,cx92755-ic.yaml
new file mode 100644 (file)
index 0000000..3f016cf
--- /dev/null
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/cnxt,cx92755-ic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Conexant Digicolor Interrupt Controller
+
+maintainers:
+  - Baruch Siach <baruch@tkos.co.il>
+
+description: Conexant Digicolor Interrupt Controller
+
+properties:
+  compatible:
+    const: cnxt,cx92755-ic
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+  syscon:
+    description: A phandle to the syscon node describing UC registers
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - syscon
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@f0000040 {
+        compatible = "cnxt,cx92755-ic";
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        reg = <0xf0000040 0x40>;
+        syscon = <&uc_regs>;
+    };
diff --git a/Bindings/interrupt-controller/csky,apb-intc.txt b/Bindings/interrupt-controller/csky,apb-intc.txt
deleted file mode 100644 (file)
index 44286dc..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-==============================
-C-SKY APB Interrupt Controller
-==============================
-
-C-SKY APB Interrupt Controller is a simple soc interrupt controller
-on the apb bus and we only use it as root irq controller.
-
- - csky,apb-intc is used in a lot of csky fpgas and socs, it support 64 irq nums.
- - csky,dual-apb-intc consists of 2 apb-intc and 128 irq nums supported.
- - csky,gx6605s-intc is gx6605s soc internal irq interrupt controller, 64 irq nums.
-
-=============================
-intc node bindings definition
-=============================
-
-       Description: Describes APB interrupt controller
-
-       PROPERTIES
-
-       - compatible
-               Usage: required
-               Value type: <string>
-               Definition: must be "csky,apb-intc"
-                                   "csky,dual-apb-intc"
-                                   "csky,gx6605s-intc"
-       - #interrupt-cells
-               Usage: required
-               Value type: <u32>
-               Definition: must be <1>
-       - reg
-               Usage: required
-               Value type: <u32 u32>
-               Definition: <phyaddr size> in soc from cpu view
-       - interrupt-controller:
-               Usage: required
-       - csky,support-pulse-signal:
-               Usage: select
-               Description: to support pulse signal flag
-
-Examples:
----------
-
-       intc: interrupt-controller@500000 {
-               compatible = "csky,apb-intc";
-               #interrupt-cells = <1>;
-               reg = <0x00500000 0x400>;
-               interrupt-controller;
-       };
-
-       intc: interrupt-controller@500000 {
-               compatible = "csky,dual-apb-intc";
-               #interrupt-cells = <1>;
-               reg = <0x00500000 0x400>;
-               interrupt-controller;
-       };
-
-       intc: interrupt-controller@500000 {
-               compatible = "csky,gx6605s-intc";
-               #interrupt-cells = <1>;
-               reg = <0x00500000 0x400>;
-               interrupt-controller;
-       };
diff --git a/Bindings/interrupt-controller/csky,apb-intc.yaml b/Bindings/interrupt-controller/csky,apb-intc.yaml
new file mode 100644 (file)
index 0000000..902648e
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/csky,apb-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: C-SKY APB Interrupt Controller
+
+maintainers:
+  - Guo Ren <guoren@kernel.org>
+
+description: >
+  C-SKY APB Interrupt Controller is a simple soc interrupt controller on the apb
+  bus and we only use it as root irq controller.
+
+    - csky,apb-intc is used in a lot of csky fpgas and socs, it support 64 irq nums.
+    - csky,dual-apb-intc consists of 2 apb-intc and 128 irq nums supported.
+    - csky,gx6605s-intc is gx6605s soc internal irq interrupt controller, 64 irq nums.
+
+properties:
+  compatible:
+    enum:
+      - csky,apb-intc
+      - csky,dual-apb-intc
+      - csky,gx6605s-intc
+
+  reg:
+    maxItems: 1
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupt-controller: true
+
+  csky,support-pulse-signal:
+    type: boolean
+    description: Support for pulse signal flag.
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - '#interrupt-cells'
+  - interrupt-controller
+
+examples:
+  - |
+    intc: interrupt-controller@500000 {
+        compatible = "csky,apb-intc";
+        #interrupt-cells = <1>;
+        reg = <0x00500000 0x400>;
+        interrupt-controller;
+    };
diff --git a/Bindings/interrupt-controller/csky,mpintc.txt b/Bindings/interrupt-controller/csky,mpintc.txt
deleted file mode 100644 (file)
index e6bbcae..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-===========================================
-C-SKY Multi-processors Interrupt Controller
-===========================================
-
-C-SKY Multi-processors Interrupt Controller is designed for ck807/ck810/ck860
-SMP soc, and it also could be used in non-SMP system.
-
-Interrupt number definition:
-  0-15  : software irq, and we use 15 as our IPI_IRQ.
- 16-31  : private  irq, and we use 16 as the co-processor timer.
- 31-1024: common irq for soc ip.
-
-Interrupt trigger mode: (Defined in dt-bindings/interrupt-controller/irq.h)
- IRQ_TYPE_LEVEL_HIGH (default)
- IRQ_TYPE_LEVEL_LOW
- IRQ_TYPE_EDGE_RISING
- IRQ_TYPE_EDGE_FALLING
-
-=============================
-intc node bindings definition
-=============================
-
-       Description: Describes SMP interrupt controller
-
-       PROPERTIES
-
-       - compatible
-               Usage: required
-               Value type: <string>
-               Definition: must be "csky,mpintc"
-       - #interrupt-cells
-               Usage: required
-               Value type: <u32>
-               Definition: <2>
-       - interrupt-controller:
-               Usage: required
-
-Examples: ("interrupts = <irq_num IRQ_TYPE_XXX>")
----------
-#include <dt-bindings/interrupt-controller/irq.h>
-
-       intc: interrupt-controller {
-               compatible = "csky,mpintc";
-               #interrupt-cells = <2>;
-               interrupt-controller;
-       };
-
-       device: device-example {
-               ...
-               interrupts = <34 IRQ_TYPE_EDGE_RISING>;
-               interrupt-parent = <&intc>;
-       };
diff --git a/Bindings/interrupt-controller/csky,mpintc.yaml b/Bindings/interrupt-controller/csky,mpintc.yaml
new file mode 100644 (file)
index 0000000..3df7739
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/csky,mpintc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: C-SKY Multi-processors Interrupt Controller
+
+maintainers:
+  - Guo Ren <guoren@kernel.org>
+
+description: >
+  C-SKY Multi-processors Interrupt Controller is designed for ck807/ck810/ck860
+  SMP soc, and it also could be used in non-SMP system.
+
+  Interrupt number definition:
+    0-15  : software irq, and we use 15 as our IPI_IRQ.
+    16-31  : private  irq, and we use 16 as the co-processor timer.
+    31-1024: common irq for soc ip.
+
+properties:
+  compatible:
+    const: csky,mpintc
+
+  '#interrupt-cells':
+    const: 2
+
+  interrupt-controller: true
+
+required:
+  - compatible
+  - "#interrupt-cells"
+  - interrupt-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller {
+        compatible = "csky,mpintc";
+        #interrupt-cells = <2>;
+        interrupt-controller;
+    };
diff --git a/Bindings/interrupt-controller/digicolor-ic.txt b/Bindings/interrupt-controller/digicolor-ic.txt
deleted file mode 100644 (file)
index 42d41ec..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Conexant Digicolor Interrupt Controller
-
-Required properties:
-
-- compatible : should be "cnxt,cx92755-ic"
-- reg : Specifies base physical address and size of the interrupt controller
-  registers (IC) area
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The value shall be 1.
-- syscon: A phandle to the syscon node describing UC registers
-
-Example:
-
-       intc: interrupt-controller@f0000040 {
-               compatible = "cnxt,cx92755-ic";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-               reg = <0xf0000040 0x40>;
-               syscon = <&uc_regs>;
-       };
diff --git a/Bindings/interrupt-controller/econet,en751221-intc.yaml b/Bindings/interrupt-controller/econet,en751221-intc.yaml
new file mode 100644 (file)
index 0000000..5536319
--- /dev/null
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/econet,en751221-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: EcoNet EN751221 Interrupt Controller
+
+maintainers:
+  - Caleb James DeLisle <cjd@cjdns.fr>
+
+description:
+  The EcoNet EN751221 Interrupt Controller is a simple interrupt controller
+  designed for the MIPS 34Kc MT SMP processor with 2 VPEs. Each interrupt can
+  be routed to either VPE but not both, so to support per-CPU interrupts, a
+  secondary IRQ number is allocated to control masking/unmasking on VPE#1. For
+  lack of a better term we call these "shadow interrupts". The assignment of
+  shadow interrupts is defined by the SoC integrator when wiring the interrupt
+  lines, so they are configurable in the device tree.
+
+allOf:
+  - $ref: /schemas/interrupt-controller.yaml#
+
+properties:
+  compatible:
+    const: econet,en751221-intc
+
+  reg:
+    maxItems: 1
+
+  "#interrupt-cells":
+    const: 1
+
+  interrupt-controller: true
+
+  interrupts:
+    maxItems: 1
+    description: Interrupt line connecting this controller to its parent.
+
+  econet,shadow-interrupts:
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    description:
+      An array of interrupt number pairs where each pair represents a shadow
+      interrupt relationship. The first number in each pair is the primary IRQ,
+      and the second is its shadow IRQ used for VPE#1 control. For example,
+      <8 3> means IRQ 8 is shadowed by IRQ 3, so IRQ 3 cannot be mapped, but
+      when VPE#1 requests IRQ 8, it will manipulate the IRQ 3 mask bit.
+    minItems: 1
+    maxItems: 20
+    items:
+      items:
+        - description: primary per-CPU IRQ
+        - description: shadow IRQ number
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - "#interrupt-cells"
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@1fb40000 {
+        compatible = "econet,en751221-intc";
+        reg = <0x1fb40000 0x100>;
+
+        interrupt-controller;
+        #interrupt-cells = <1>;
+
+        interrupt-parent = <&cpuintc>;
+        interrupts = <2>;
+
+        econet,shadow-interrupts = <7 2>, <8 3>, <13 12>, <30 29>;
+    };
+...
diff --git a/Bindings/interrupt-controller/ezchip,nps400-ic.txt b/Bindings/interrupt-controller/ezchip,nps400-ic.txt
deleted file mode 100644 (file)
index 888b2b9..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-EZchip NPS Interrupt Controller
-
-Required properties:
-
-- compatible : should be "ezchip,nps400-ic"
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The value shall be 1.
-
-
-Example:
-
-intc: interrupt-controller {
-       compatible = "ezchip,nps400-ic";
-       interrupt-controller;
-       #interrupt-cells = <1>;
-};
diff --git a/Bindings/interrupt-controller/ezchip,nps400-ic.yaml b/Bindings/interrupt-controller/ezchip,nps400-ic.yaml
new file mode 100644 (file)
index 0000000..589c6eb
--- /dev/null
@@ -0,0 +1,34 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ezchip,nps400-ic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: EZchip NPS Interrupt Controller
+
+maintainers:
+  - Noam Camus <noamc@ezchip.com>
+
+properties:
+  compatible:
+    const: ezchip,nps400-ic
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller {
+        compatible = "ezchip,nps400-ic";
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/faraday,ftintc010.txt b/Bindings/interrupt-controller/faraday,ftintc010.txt
deleted file mode 100644 (file)
index 24428d4..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-* Faraday Technologt FTINTC010 interrupt controller
-
-This interrupt controller is a stock IP block from Faraday Technology found
-in the Gemini SoCs and other designs.
-
-Required properties:
-- compatible: must be one of
-  "faraday,ftintc010"
-  "cortina,gemini-interrupt-controller" (deprecated)
-- reg: The register bank for the interrupt controller.
-- interrupt-controller: Identifies the node as an interrupt controller
-- #interrupt-cells: The number of cells to define the interrupts.
-  Must be 2 as the controller can specify level or rising edge
-  IRQs. The bindings follows the standard binding for controllers
-  with two cells specified in
-  interrupt-controller/interrupts.txt
-
-Example:
-
-interrupt-controller@48000000 {
-       compatible = "faraday,ftintc010"
-       reg = <0x48000000 0x1000>;
-       interrupt-controller;
-       #interrupt-cells = <2>;
-};
diff --git a/Bindings/interrupt-controller/faraday,ftintc010.yaml b/Bindings/interrupt-controller/faraday,ftintc010.yaml
new file mode 100644 (file)
index 0000000..980e5c4
--- /dev/null
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+---
+$id: http://devicetree.org/schemas/interrupt-controller/faraday,ftintc010.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Faraday Technology FTINTC010 interrupt controller
+
+maintainers:
+  - Linus Walleij <linus.walleij@linaro.org>
+
+description:
+  This interrupt controller is a stock IP block from Faraday Technology found
+  in the Gemini SoCs and other designs.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: moxa,moxart-ic
+          - const: faraday,ftintc010
+      - enum:
+          - faraday,ftintc010
+          - cortina,gemini-interrupt-controller
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  resets:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@48000000 {
+        compatible = "faraday,ftintc010";
+        reg = <0x48000000 0x1000>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+    };
diff --git a/Bindings/interrupt-controller/fsl,tzic.yaml b/Bindings/interrupt-controller/fsl,tzic.yaml
new file mode 100644 (file)
index 0000000..5f2c876
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/fsl,tzic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale tzic Interrupt controller
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - fsl,imx51-tzic
+              - fsl,imx53-tzic
+          - const: fsl,tzic
+      - items:
+          - const: fsl,imx50-tzic
+          - const: fsl,imx53-tzic
+          - const: fsl,tzic
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    tz-interrupt-controller@fffc000 {
+        compatible = "fsl,imx53-tzic", "fsl,tzic";
+        reg = <0x0fffc000 0x4000>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/google,goldfish-pic.txt b/Bindings/interrupt-controller/google,goldfish-pic.txt
deleted file mode 100644 (file)
index 35f7527..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-Android Goldfish PIC
-
-Android Goldfish programmable interrupt device used by Android
-emulator.
-
-Required properties:
-
-- compatible : should contain "google,goldfish-pic"
-- reg        : <registers mapping>
-- interrupts : <interrupt mapping>
-
-Example for mips when used in cascade mode:
-
-        cpuintc {
-                #interrupt-cells = <0x1>;
-                #address-cells = <0>;
-                interrupt-controller;
-                compatible = "mti,cpu-interrupt-controller";
-        };
-
-        interrupt-controller@1f000000 {
-                compatible = "google,goldfish-pic";
-                reg = <0x1f000000 0x1000>;
-
-                interrupt-controller;
-                #interrupt-cells = <0x1>;
-
-                interrupt-parent = <&cpuintc>;
-                interrupts = <0x2>;
-        };
diff --git a/Bindings/interrupt-controller/google,goldfish-pic.yaml b/Bindings/interrupt-controller/google,goldfish-pic.yaml
new file mode 100644 (file)
index 0000000..ac3c3c3
--- /dev/null
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/google,goldfish-pic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Android Goldfish PIC
+
+maintainers:
+  - Miodrag Dinic <miodrag.dinic@mips.com>
+
+description:
+  Android Goldfish programmable interrupt device used by Android emulator.
+
+properties:
+  compatible:
+    const: google,goldfish-pic
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - '#interrupt-cells'
+
+examples:
+  - |
+    interrupt-controller@1f000000 {
+        compatible = "google,goldfish-pic";
+        reg = <0x1f000000 0x1000>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        interrupts = <2>;
+    };
+
+additionalProperties: false
diff --git a/Bindings/interrupt-controller/img,pdc-intc.txt b/Bindings/interrupt-controller/img,pdc-intc.txt
deleted file mode 100644 (file)
index 5dc2a55..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-* ImgTec Powerdown Controller (PDC) Interrupt Controller Binding
-
-This binding specifies what properties must be available in the device tree
-representation of a PDC IRQ controller. This has a number of input interrupt
-lines which can wake the system, and are passed on through output interrupt
-lines.
-
-Required properties:
-
-    - compatible: Specifies the compatibility list for the interrupt controller.
-      The type shall be <string> and the value shall include "img,pdc-intc".
-
-    - reg: Specifies the base PDC physical address(s) and size(s) of the
-      addressable register space. The type shall be <prop-encoded-array>.
-
-    - interrupt-controller: The presence of this property identifies the node
-      as an interrupt controller. No property value shall be defined.
-
-    - #interrupt-cells: Specifies the number of cells needed to encode an
-      interrupt source. The type shall be a <u32> and the value shall be 2.
-
-    - num-perips: Number of waking peripherals.
-
-    - num-syswakes: Number of SysWake inputs.
-
-    - interrupts: List of interrupt specifiers. The first specifier shall be the
-      shared SysWake interrupt, and remaining specifies shall be PDC peripheral
-      interrupts in order.
-
-* Interrupt Specifier Definition
-
-  Interrupt specifiers consists of 2 cells encoded as follows:
-
-    - <1st-cell>: The interrupt-number that identifies the interrupt source.
-                    0-7:  Peripheral interrupts
-                    8-15: SysWake interrupts
-
-    - <2nd-cell>: The level-sense information, encoded using the Linux interrupt
-                  flags as follows (only 4 valid for peripheral interrupts):
-                    0 = none (decided by software)
-                    1 = low-to-high edge triggered
-                    2 = high-to-low edge triggered
-                    3 = both edge triggered
-                    4 = active-high level-sensitive (required for perip irqs)
-                    8 = active-low level-sensitive
-
-* Examples
-
-Example 1:
-
-       /*
-        * TZ1090 PDC block
-        */
-       pdc: pdc@02006000 {
-               // This is an interrupt controller node.
-               interrupt-controller;
-
-               // Three cells to encode interrupt sources.
-               #interrupt-cells = <2>;
-
-               // Offset address of 0x02006000 and size of 0x1000.
-               reg = <0x02006000 0x1000>;
-
-               // Compatible with Meta hardware trigger block.
-               compatible = "img,pdc-intc";
-
-               // Three peripherals are connected.
-               num-perips = <3>;
-
-               // Four SysWakes are connected.
-               num-syswakes = <4>;
-
-               interrupts = <18 4 /* level */>, /* Syswakes */
-                            <30 4 /* level */>, /* Peripheral 0 (RTC) */
-                            <29 4 /* level */>, /* Peripheral 1 (IR) */
-                            <31 4 /* level */>; /* Peripheral 2 (WDT) */
-       };
-
-Example 2:
-
-       /*
-        * An SoC peripheral that is wired through the PDC.
-        */
-       rtc0 {
-               // The interrupt controller that this device is wired to.
-               interrupt-parent = <&pdc>;
-
-               // Interrupt source Peripheral 0
-               interrupts = <0   /* Peripheral 0 (RTC) */
-                             4>  /* IRQ_TYPE_LEVEL_HIGH */
-       };
-
-Example 3:
-
-       /*
-        * An interrupt generating device that is wired to a SysWake pin.
-        */
-       touchscreen0 {
-               // The interrupt controller that this device is wired to.
-               interrupt-parent = <&pdc>;
-
-               // Interrupt source SysWake 0 that is active-low level-sensitive
-               interrupts = <8 /* SysWake0 */
-                             8 /* IRQ_TYPE_LEVEL_LOW */>;
-       };
diff --git a/Bindings/interrupt-controller/img,pdc-intc.yaml b/Bindings/interrupt-controller/img,pdc-intc.yaml
new file mode 100644 (file)
index 0000000..99e7a42
--- /dev/null
@@ -0,0 +1,79 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/img,pdc-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ImgTec Powerdown Controller (PDC) Interrupt Controller
+
+maintainers:
+  - James Hogan <jhogan@kernel.org>
+
+description:
+  ImgTec Powerdown Controller (PDC) Interrupt Controller has a number of input
+  interrupt lines which can wake the system, and are passed on through output
+  interrupt lines.
+
+properties:
+  compatible:
+    const: img,pdc-intc
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    description: >
+      <1st-cell>: The interrupt-number that identifies the interrupt source.
+        0-7:  Peripheral interrupts
+        8-15: SysWake interrupts
+
+      <2nd-cell>: The level-sense information, encoded using the Linux interrupt
+        flags as follows (only 4 valid for peripheral interrupts):
+        0 = none (decided by software)
+        1 = low-to-high edge triggered
+        2 = high-to-low edge triggered
+        3 = both edge triggered
+        4 = active-high level-sensitive (required for perip irqs)
+        8 = active-low level-sensitive
+    const: 2
+
+  num-perips:
+    description: Number of waking peripherals
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 8
+
+  num-syswakes:
+    description: Number of SysWake inputs
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 8
+
+  interrupts:
+    description:
+      First entry is syswake IRQ. Subsequent entries are 1 per peripheral.
+    minItems: 2
+    maxItems: 9
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - num-perips
+  - num-syswakes
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@2006000 {
+        compatible = "img,pdc-intc";
+        reg = <0x02006000 0x1000>;
+        interrupts = <18 4>, <30 4>, <29 4>, <31 4>;
+        interrupt-controller;
+        #interrupt-cells = <2>;
+        num-perips = <3>;
+        num-syswakes = <4>;
+    };
diff --git a/Bindings/interrupt-controller/jcore,aic.txt b/Bindings/interrupt-controller/jcore,aic.txt
deleted file mode 100644 (file)
index ee2ad36..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-J-Core Advanced Interrupt Controller
-
-Required properties:
-
-- compatible: Should be "jcore,aic1" for the (obsolete) first-generation aic
-  with 8 interrupt lines with programmable priorities, or "jcore,aic2" for
-  the "aic2" core with 64 interrupts.
-
-- reg: Memory region(s) for configuration. For SMP, there should be one
-  region per cpu, indexed by the sequential, zero-based hardware cpu
-  number.
-
-- interrupt-controller: Identifies the node as an interrupt controller
-
-- #interrupt-cells: Specifies the number of cells needed to encode an
-  interrupt source. The value shall be 1.
-
-
-Example:
-
-aic: interrupt-controller@200 {
-       compatible = "jcore,aic2";
-       reg = < 0x200 0x30 0x500 0x30 >;
-       interrupt-controller;
-       #interrupt-cells = <1>;
-};
diff --git a/Bindings/interrupt-controller/jcore,aic.yaml b/Bindings/interrupt-controller/jcore,aic.yaml
new file mode 100644 (file)
index 0000000..df8abc2
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2018 Linaro Ltd.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/jcore,aic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: J-Core Advanced Interrupt Controller
+
+maintainers:
+  - Rich Felker <dalias@libc.org>
+
+properties:
+  compatible:
+    enum:
+      - jcore,aic1
+      - jcore,aic2
+
+  reg:
+    description: Memory region(s) for configuration. For SMP, there should be one
+      region per CPU, indexed by the sequential, zero-based hardware CPU number.
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    aic: interrupt-controller@200 {
+        compatible = "jcore,aic2";
+        reg = <0x200 0x30>, <0x500 0x30>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/lsi,zevio-intc.txt b/Bindings/interrupt-controller/lsi,zevio-intc.txt
deleted file mode 100644 (file)
index aee38e7..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-TI-NSPIRE interrupt controller
-
-Required properties:
-- compatible: Compatible property value should be "lsi,zevio-intc".
-
-- reg: Physical base address of the controller and length of memory mapped
-       region.
-
-- interrupt-controller : Identifies the node as an interrupt controller
-
-Example:
-
-interrupt-controller {
-       compatible = "lsi,zevio-intc";
-       interrupt-controller;
-       reg = <0xDC000000 0x1000>;
-       #interrupt-cells = <1>;
-};
diff --git a/Bindings/interrupt-controller/lsi,zevio-intc.yaml b/Bindings/interrupt-controller/lsi,zevio-intc.yaml
new file mode 100644 (file)
index 0000000..e66b25f
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright 2025 Daniel Tang <dt.tangr@gmail.com>
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/lsi,zevio-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI-NSPIRE Interrupt Controller
+
+maintainers:
+  - Daniel Tang <dt.tangr@gmail.com>
+
+description: |
+  TI-NSPIRE interrupt controller
+
+properties:
+  compatible:
+    const: lsi,zevio-intc
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@dc000000 {
+        compatible = "lsi,zevio-intc";
+        interrupt-controller;
+        reg = <0xdc000000 0x1000>;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/marvell,ap806-gicp.yaml b/Bindings/interrupt-controller/marvell,ap806-gicp.yaml
new file mode 100644 (file)
index 0000000..5faedd9
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/marvell,ap806-gicp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell GICP Controller
+
+maintainers:
+  - Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+
+description:
+  GICP is a Marvell extension of the GIC that allows to trigger GIC SPI
+  interrupts by doing a memory transaction. It is used by the ICU
+  located in the Marvell CP110 to turn wired interrupts inside the CP
+  into GIC SPI interrupts.
+
+properties:
+  compatible:
+    const: marvell,ap806-gicp
+
+  reg:
+    maxItems: 1
+
+  marvell,spi-ranges:
+    description: Tuples of GIC SPI interrupt ranges available for this GICP
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    items:
+      items:
+        - description: SPI interrupt base
+        - description: Number of interrupts in the range
+
+  msi-controller: true
+
+required:
+  - compatible
+  - reg
+  - msi-controller
+  - marvell,spi-ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    msi-controller@3f0040 {
+        compatible = "marvell,ap806-gicp";
+        reg = <0x3f0040 0x10>;
+        marvell,spi-ranges = <64 64>, <288 64>;
+        msi-controller;
+    };
diff --git a/Bindings/interrupt-controller/marvell,ap806-sei.yaml b/Bindings/interrupt-controller/marvell,ap806-sei.yaml
new file mode 100644 (file)
index 0000000..e812f9a
--- /dev/null
@@ -0,0 +1,58 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/marvell,ap806-sei.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell SEI (System Error Interrupt) Controller
+
+maintainers:
+  - Miquel Raynal <miquel.raynal@bootlin.com>
+
+description: >
+  Marvell SEI (System Error Interrupt) controller is an interrupt aggregator. It
+  receives interrupts from several sources and aggregates them to a single
+  interrupt line (an SPI) on the parent interrupt controller.
+
+  This interrupt controller can handle up to 64 SEIs, a set comes from the AP
+  and is wired while a second set comes from the CPs by the mean of MSIs.
+
+properties:
+  compatible:
+    const: marvell,ap806-sei
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupt-controller: true
+
+  msi-controller: true
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - '#interrupt-cells'
+  - interrupt-controller
+  - msi-controller
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    interrupt-controller@3f0200 {
+        compatible = "marvell,ap806-sei";
+        reg = <0x3f0200 0x40>;
+        interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+        #interrupt-cells = <1>;
+        interrupt-controller;
+        msi-controller;
+    };
diff --git a/Bindings/interrupt-controller/marvell,armada-8k-pic.txt b/Bindings/interrupt-controller/marvell,armada-8k-pic.txt
deleted file mode 100644 (file)
index 86a7b4c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-Marvell Armada 7K/8K PIC Interrupt controller
----------------------------------------------
-
-This is the Device Tree binding for the PIC, a secondary interrupt
-controller available on the Marvell Armada 7K/8K ARM64 SoCs, and
-typically connected to the GIC as the primary interrupt controller.
-
-Required properties:
-- compatible: should be "marvell,armada-8k-pic"
-- interrupt-controller: identifies the node as an interrupt controller
-- #interrupt-cells: the number of cells to define interrupts on this
-  controller. Should be 1
-- reg: the register area for the PIC interrupt controller
-- interrupts: the interrupt to the primary interrupt controller,
-  typically the GIC
-
-Example:
-
-       pic: interrupt-controller@3f0100 {
-               compatible = "marvell,armada-8k-pic";
-               reg = <0x3f0100 0x10>;
-               #interrupt-cells = <1>;
-               interrupt-controller;
-               interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
-       };
diff --git a/Bindings/interrupt-controller/marvell,armada-8k-pic.yaml b/Bindings/interrupt-controller/marvell,armada-8k-pic.yaml
new file mode 100644 (file)
index 0000000..5a455f7
--- /dev/null
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/marvell,armada-8k-pic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 7K/8K PIC Interrupt controller
+
+maintainers:
+  - Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+
+description:
+  The Marvell Armada 7K/8K PIC is a secondary interrupt controller available on
+  the Marvell Armada 7K/8K ARM64 SoCs, and typically connected to the GIC as the
+  primary interrupt controller.
+
+properties:
+  compatible:
+    const: marvell,armada-8k-pic
+
+  reg:
+    maxItems: 1
+
+  "#interrupt-cells":
+    const: 1
+
+  interrupt-controller: true
+
+  interrupts:
+    maxItems: 1
+    description: Interrupt to the primary interrupt controller (GIC).
+
+required:
+  - compatible
+  - reg
+  - "#interrupt-cells"
+  - interrupt-controller
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    interrupt-controller@3f0100 {
+        compatible = "marvell,armada-8k-pic";
+        reg = <0x3f0100 0x10>;
+        #interrupt-cells = <1>;
+        interrupt-controller;
+        interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_HIGH>;
+    };
diff --git a/Bindings/interrupt-controller/marvell,cp110-icu.yaml b/Bindings/interrupt-controller/marvell,cp110-icu.yaml
new file mode 100644 (file)
index 0000000..9d4f06f
--- /dev/null
@@ -0,0 +1,98 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/marvell,cp110-icu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+maintainers:
+  - Miquel Raynal <miquel.raynal@bootlin.com>
+  - Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+
+title: Marvell ICU Interrupt Controller
+
+description:
+  The Marvell ICU (Interrupt Consolidation Unit) controller is responsible for
+  collecting all wired-interrupt sources in the CP and communicating them to the
+  GIC in the AP. The unit translates interrupt requests on input wires to MSG
+  memory mapped transactions to the GIC. These messages access different GIC
+  memory areas depending on their type (NSR, SR, SEI, REI, etc).
+
+properties:
+  compatible:
+    const: marvell,cp110-icu
+
+  reg:
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 1
+
+  ranges: true
+
+patternProperties:
+  "^interrupt-controller@":
+    type: object
+    description: Interrupt group child nodes
+    additionalProperties: false
+
+    properties:
+      compatible:
+        enum:
+          - marvell,cp110-icu-nsr
+          - marvell,cp110-icu-sr
+          - marvell,cp110-icu-sei
+          - marvell,cp110-icu-rei
+
+      reg:
+        maxItems: 1
+
+      '#interrupt-cells':
+        const: 2
+
+      interrupt-controller: true
+
+      msi-parent:
+        maxItems: 1
+        description: Phandle to the GICP controller
+
+    required:
+      - compatible
+      - reg
+      - '#interrupt-cells'
+      - interrupt-controller
+      - msi-parent
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@1e0000 {
+        compatible = "marvell,cp110-icu";
+        reg = <0x1e0000 0x440>;
+        #address-cells = <1>;
+        #size-cells = <1>;
+        ranges;
+
+        interrupt-controller@10 {
+                compatible = "marvell,cp110-icu-nsr";
+                reg = <0x10 0x20>;
+                #interrupt-cells = <2>;
+                interrupt-controller;
+                msi-parent = <&gicp>;
+        };
+
+        interrupt-controller@50 {
+                compatible = "marvell,cp110-icu-sei";
+                reg = <0x50 0x10>;
+                #interrupt-cells = <2>;
+                interrupt-controller;
+                msi-parent = <&sei>;
+        };
+    };
diff --git a/Bindings/interrupt-controller/marvell,gicp.txt b/Bindings/interrupt-controller/marvell,gicp.txt
deleted file mode 100644 (file)
index 64a00ce..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Marvell GICP Controller
------------------------
-
-GICP is a Marvell extension of the GIC that allows to trigger GIC SPI
-interrupts by doing a memory transaction. It is used by the ICU
-located in the Marvell CP110 to turn wired interrupts inside the CP
-into GIC SPI interrupts.
-
-Required properties:
-
-- compatible: Must be "marvell,ap806-gicp"
-
-- reg: Must be the address and size of the GICP SPI registers
-
-- marvell,spi-ranges: tuples of GIC SPI interrupts ranges available
-  for this GICP
-
-- msi-controller: indicates that this is an MSI controller
-
-Example:
-
-gicp_spi: gicp-spi@3f0040 {
-       compatible = "marvell,ap806-gicp";
-       reg = <0x3f0040 0x10>;
-       marvell,spi-ranges = <64 64>, <288 64>;
-       msi-controller;
-};
diff --git a/Bindings/interrupt-controller/marvell,icu.txt b/Bindings/interrupt-controller/marvell,icu.txt
deleted file mode 100644 (file)
index 1c94a57..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-Marvell ICU Interrupt Controller
---------------------------------
-
-The Marvell ICU (Interrupt Consolidation Unit) controller is
-responsible for collecting all wired-interrupt sources in the CP and
-communicating them to the GIC in the AP, the unit translates interrupt
-requests on input wires to MSG memory mapped transactions to the GIC.
-These messages will access a different GIC memory area depending on
-their type (NSR, SR, SEI, REI, etc).
-
-Required properties:
-
-- compatible: Should be "marvell,cp110-icu"
-
-- reg: Should contain ICU registers location and length.
-
-Subnodes: Each group of interrupt is declared as a subnode of the ICU,
-with their own compatible.
-
-Required properties for the icu_nsr/icu_sei subnodes:
-
-- compatible: Should be one of:
-              * "marvell,cp110-icu-nsr"
-             * "marvell,cp110-icu-sr"
-             * "marvell,cp110-icu-sei"
-             * "marvell,cp110-icu-rei"
-
-- #interrupt-cells: Specifies the number of cells needed to encode an
-  interrupt source. The value shall be 2.
-
-  The 1st cell is the index of the interrupt in the ICU unit.
-
-  The 2nd cell is the type of the interrupt. See arm,gic.txt for
-  details.
-
-- interrupt-controller: Identifies the node as an interrupt
-  controller.
-
-- msi-parent: Should point to the GICP controller, the GIC extension
-  that allows to trigger interrupts using MSG memory mapped
-  transactions.
-
-Note: each 'interrupts' property referring to any 'icu_xxx' node shall
-      have a different number within [0:206].
-
-Example:
-
-icu: interrupt-controller@1e0000 {
-       compatible = "marvell,cp110-icu";
-       reg = <0x1e0000 0x440>;
-
-       CP110_LABEL(icu_nsr): interrupt-controller@10 {
-               compatible = "marvell,cp110-icu-nsr";
-               reg = <0x10 0x20>;
-               #interrupt-cells = <2>;
-               interrupt-controller;
-               msi-parent = <&gicp>;
-       };
-
-       CP110_LABEL(icu_sei): interrupt-controller@50 {
-               compatible = "marvell,cp110-icu-sei";
-               reg = <0x50 0x10>;
-               #interrupt-cells = <2>;
-               interrupt-controller;
-               msi-parent = <&sei>;
-       };
-};
-
-node1 {
-       interrupt-parent = <&icu_nsr>;
-       interrupts = <106 IRQ_TYPE_LEVEL_HIGH>;
-};
-
-node2 {
-       interrupt-parent = <&icu_sei>;
-       interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
-};
-
-/* Would not work with the above nodes */
-node3 {
-       interrupt-parent = <&icu_nsr>;
-       interrupts = <107 IRQ_TYPE_LEVEL_HIGH>;
-};
-
-The legacy bindings were different in this way:
-
-- #interrupt-cells: The value was 3.
-       The 1st cell was the group type of the ICU interrupt. Possible
-       group types were:
-       ICU_GRP_NSR (0x0) : Shared peripheral interrupt, non-secure
-       ICU_GRP_SR  (0x1) : Shared peripheral interrupt, secure
-       ICU_GRP_SEI (0x4) : System error interrupt
-       ICU_GRP_REI (0x5) : RAM error interrupt
-       The 2nd cell was the index of the interrupt in the ICU unit.
-       The 3rd cell was the type of the interrupt. See arm,gic.txt for
-       details.
-
-Example:
-
-icu: interrupt-controller@1e0000 {
-       compatible = "marvell,cp110-icu";
-       reg = <0x1e0000 0x440>;
-
-       #interrupt-cells = <3>;
-       interrupt-controller;
-       msi-parent = <&gicp>;
-};
-
-node1 {
-       interrupt-parent = <&icu>;
-       interrupts = <ICU_GRP_NSR 106 IRQ_TYPE_LEVEL_HIGH>;
-};
diff --git a/Bindings/interrupt-controller/marvell,odmi-controller.txt b/Bindings/interrupt-controller/marvell,odmi-controller.txt
deleted file mode 100644 (file)
index 0ebfc95..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-
-* Marvell ODMI for MSI support
-
-Some Marvell SoCs have an On-Die Message Interrupt (ODMI) controller
-which can be used by on-board peripheral for MSI interrupts.
-
-Required properties:
-
-- compatible           : The value here should contain:
-
-    "marvell,ap806-odmi-controller", "marvell,odmi-controller".
-
-- interrupt,controller : Identifies the node as an interrupt controller.
-
-- msi-controller       : Identifies the node as an MSI controller.
-
-- marvell,odmi-frames  : Number of ODMI frames available. Each frame
-                         provides a number of events.
-
-- reg                  : List of register definitions, one for each
-                         ODMI frame.
-
-- marvell,spi-base     : List of GIC base SPI interrupts, one for each
-                         ODMI frame. Those SPI interrupts are 0-based,
-                         i.e marvell,spi-base = <128> will use SPI #96.
-                         See Documentation/devicetree/bindings/interrupt-controller/arm,gic.yaml
-                         for details about the GIC Device Tree binding.
-
-Example:
-
-       odmi: odmi@300000 {
-               compatible = "marvell,ap806-odmi-controller",
-                            "marvell,odmi-controller";
-               interrupt-controller;
-               msi-controller;
-               marvell,odmi-frames = <4>;
-               reg = <0x300000 0x4000>,
-                     <0x304000 0x4000>,
-                     <0x308000 0x4000>,
-                     <0x30C000 0x4000>;
-               marvell,spi-base = <128>, <136>, <144>, <152>;
-       };
diff --git a/Bindings/interrupt-controller/marvell,odmi-controller.yaml b/Bindings/interrupt-controller/marvell,odmi-controller.yaml
new file mode 100644 (file)
index 0000000..9ec1ed4
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/marvell,odmi-controller.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell ODMI controller
+
+maintainers:
+  - Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+
+description:
+  Some Marvell SoCs have an On-Die Message Interrupt (ODMI) controller which can
+  be used by on-board peripherals for MSI interrupts.
+
+properties:
+  compatible:
+    const: marvell,odmi-controller
+
+  reg:
+    description: List of register definitions, one for each ODMI frame.
+
+  msi-controller: true
+
+  marvell,odmi-frames:
+    description: Number of ODMI frames available. Each frame provides a number of events.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  marvell,spi-base:
+    description: >
+      List of GIC base SPI interrupts, one for each ODMI frame. Those SPI
+      interrupts are 0-based, i.e. marvell,spi-base = <128> will use SPI #96.
+      See Documentation/devicetree/bindings/interrupt-controller/arm,gic.yaml
+      for details.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+
+required:
+  - compatible
+  - reg
+  - msi-controller
+  - marvell,odmi-frames
+  - marvell,spi-base
+
+additionalProperties: false
+
+examples:
+  - |
+    msi-controller@300000 {
+        compatible = "marvell,odmi-controller";
+        msi-controller;
+        marvell,odmi-frames = <4>;
+        reg = <0x300000 0x4000>, <0x304000 0x4000>, <0x308000 0x4000>, <0x30C000 0x4000>;
+        marvell,spi-base = <128>, <136>, <144>, <152>;
+    };
diff --git a/Bindings/interrupt-controller/marvell,orion-bridge-intc.yaml b/Bindings/interrupt-controller/marvell,orion-bridge-intc.yaml
new file mode 100644 (file)
index 0000000..e1310ec
--- /dev/null
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+---
+$id: http://devicetree.org/schemas/interrupt-controller/marvell,orion-bridge-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Orion SoC Bridge Interrupt Controller
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    const: marvell,orion-bridge-intc
+
+  reg:
+    minItems: 1
+    maxItems: 2
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupts:
+    description: Bridge interrupt of the main interrupt controller
+
+  marvell,#interrupts:
+    description: Number of interrupts provided by bridge interrupt controller.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 32
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@20110 {
+        compatible = "marvell,orion-bridge-intc";
+        reg = <0x20110 0x8>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        interrupts = <0>;
+        /* Dove bridge provides 5 interrupts */
+        marvell,#interrupts = <5>;
+    };
diff --git a/Bindings/interrupt-controller/marvell,orion-intc.txt b/Bindings/interrupt-controller/marvell,orion-intc.txt
deleted file mode 100644 (file)
index 2c11ac7..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-Marvell Orion SoC interrupt controllers
-
-* Main interrupt controller
-
-Required properties:
-- compatible: shall be "marvell,orion-intc"
-- reg: base address(es) of interrupt registers starting with CAUSE register
-- interrupt-controller: identifies the node as an interrupt controller
-- #interrupt-cells: number of cells to encode an interrupt source, shall be 1
-
-The interrupt sources map to the corresponding bits in the interrupt
-registers, i.e.
-- 0 maps to bit 0 of first base address,
-- 1 maps to bit 1 of first base address,
-- 32 maps to bit 0 of second base address, and so on.
-
-Example:
-       intc: interrupt-controller {
-               compatible = "marvell,orion-intc";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-                /* Dove has 64 first level interrupts */
-               reg = <0x20200 0x10>, <0x20210 0x10>;
-       };
-
-* Bridge interrupt controller
-
-Required properties:
-- compatible: shall be "marvell,orion-bridge-intc"
-- reg: base address of bridge interrupt registers starting with CAUSE register
-- interrupts: bridge interrupt of the main interrupt controller
-- interrupt-controller: identifies the node as an interrupt controller
-- #interrupt-cells: number of cells to encode an interrupt source, shall be 1
-
-Optional properties:
-- marvell,#interrupts: number of interrupts provided by bridge interrupt
-      controller, defaults to 32 if not set
-
-Example:
-       bridge_intc: interrupt-controller {
-               compatible = "marvell,orion-bridge-intc";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-               reg = <0x20110 0x8>;
-               interrupts = <0>;
-               /* Dove bridge provides 5 interrupts */
-               marvell,#interrupts = <5>;
-       };
diff --git a/Bindings/interrupt-controller/marvell,sei.txt b/Bindings/interrupt-controller/marvell,sei.txt
deleted file mode 100644 (file)
index 0beafed..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Marvell SEI (System Error Interrupt) Controller
------------------------------------------------
-
-Marvell SEI (System Error Interrupt) controller is an interrupt
-aggregator. It receives interrupts from several sources and aggregates
-them to a single interrupt line (an SPI) on the parent interrupt
-controller.
-
-This interrupt controller can handle up to 64 SEIs, a set comes from the
-AP and is wired while a second set comes from the CPs by the mean of
-MSIs.
-
-Required properties:
-
-- compatible: should be one of:
-              * "marvell,ap806-sei"
-- reg: SEI registers location and length.
-- interrupts: identifies the parent IRQ that will be triggered.
-- #interrupt-cells: number of cells to define an SEI wired interrupt
-                    coming from the AP, should be 1. The cell is the IRQ
-                    number.
-- interrupt-controller: identifies the node as an interrupt controller
-                        for AP interrupts.
-- msi-controller: identifies the node as an MSI controller for the CPs
-                  interrupts.
-
-Example:
-
-        sei: interrupt-controller@3f0200 {
-                compatible = "marvell,ap806-sei";
-                reg = <0x3f0200 0x40>;
-                interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
-                #interrupt-cells = <1>;
-                interrupt-controller;
-                msi-controller;
-        };
diff --git a/Bindings/interrupt-controller/microchip,pic32-evic.txt b/Bindings/interrupt-controller/microchip,pic32-evic.txt
deleted file mode 100644 (file)
index c3a1b37..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-Microchip PIC32 Interrupt Controller
-====================================
-
-The Microchip PIC32 contains an Enhanced Vectored Interrupt Controller (EVIC).
-It handles all internal and external interrupts. This controller exists outside
-of the CPU and is the arbitrator of all interrupts (including interrupts from
-the CPU itself) before they are presented to the CPU.
-
-External interrupts have a software configurable edge polarity. Non external
-interrupts have a type and polarity that is determined by the source of the
-interrupt.
-
-Required properties
--------------------
-
-- compatible: Should be "microchip,pic32mzda-evic"
-- reg: Specifies physical base address and size of register range.
-- interrupt-controller: Identifies the node as an interrupt controller.
-- #interrupt cells: Specifies the number of cells used to encode an interrupt
-  source connected to this controller. The value shall be 2 and interrupt
-  descriptor shall have the following format:
-
-       <hw_irq irq_type>
-
-  hw_irq - represents the hardware interrupt number as in the data sheet.
-  irq_type - is used to describe the type and polarity of an interrupt. For
-  internal interrupts use IRQ_TYPE_EDGE_RISING for non persistent interrupts and
-  IRQ_TYPE_LEVEL_HIGH for persistent interrupts. For external interrupts use
-  IRQ_TYPE_EDGE_RISING or IRQ_TYPE_EDGE_FALLING to select the desired polarity.
-
-Optional properties
--------------------
-- microchip,external-irqs: u32 array of external interrupts with software
-  polarity configuration. This array corresponds to the bits in the INTCON
-  SFR.
-
-Example
--------
-
-evic: interrupt-controller@1f810000 {
-       compatible = "microchip,pic32mzda-evic";
-       interrupt-controller;
-       #interrupt-cells = <2>;
-       reg = <0x1f810000 0x1000>;
-       microchip,external-irqs = <3 8 13 18 23>;
-};
-
-Each device/peripheral must request its interrupt line with the associated type
-and polarity.
-
-Internal interrupt DTS snippet
-------------------------------
-
-device@1f800000 {
-       ...
-       interrupts = <113 IRQ_TYPE_LEVEL_HIGH>;
-       ...
-};
-
-External interrupt DTS snippet
-------------------------------
-
-device@1f800000 {
-       ...
-       interrupts = <3 IRQ_TYPE_EDGE_RISING>;
-       ...
-};
diff --git a/Bindings/interrupt-controller/microchip,pic32mzda-evic.yaml b/Bindings/interrupt-controller/microchip,pic32mzda-evic.yaml
new file mode 100644 (file)
index 0000000..74bfc42
--- /dev/null
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/microchip,pic32mzda-evic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip PIC32 EVIC Interrupt Controller
+
+maintainers:
+  - Cristian Birsan <cristian.birsan@microchip.com>
+
+description: >
+  The Microchip PIC32 contains an Enhanced Vectored Interrupt Controller (EVIC).
+  It handles all internal and external interrupts. This controller exists
+  outside of the CPU and is the arbitrator of all interrupts (including
+  interrupts from the CPU itself) before they are presented to the CPU.
+
+  External interrupts have a software configurable edge polarity. Non external
+  interrupts have a type and polarity that is determined by the source of the
+  interrupt.
+
+properties:
+  compatible:
+    items:
+      - const: microchip,pic32mzda-evic
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  interrupts:
+    maxItems: 1
+
+  microchip,external-irqs:
+    description:
+      External interrupts with software polarity configuration corresponding to
+      the INTCON SFR bits.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+      interrupt-controller@1f810000 {
+          compatible = "microchip,pic32mzda-evic";
+          reg = <0x1f810000 0x1000>;
+          interrupt-controller;
+          #interrupt-cells = <2>;
+          microchip,external-irqs = <3 8 13 18 23>;
+      };
diff --git a/Bindings/interrupt-controller/nvidia,tegra20-ictlr.txt b/Bindings/interrupt-controller/nvidia,tegra20-ictlr.txt
deleted file mode 100644 (file)
index 2ff3566..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-NVIDIA Legacy Interrupt Controller
-
-All Tegra SoCs contain a legacy interrupt controller that routes
-interrupts to the GIC, and also serves as a wakeup source. It is also
-referred to as "ictlr", hence the name of the binding.
-
-The HW block exposes a number of interrupt controllers, each
-implementing a set of 32 interrupts.
-
-Required properties:
-
-- compatible : should be: "nvidia,tegra<chip>-ictlr". The LIC on
-  subsequent SoCs remained backwards-compatible with Tegra30, so on
-  Tegra generations later than Tegra30 the compatible value should
-  include "nvidia,tegra30-ictlr".      
-- reg : Specifies base physical address and size of the registers.
-  Each controller must be described separately (Tegra20 has 4 of them,
-  whereas Tegra30 and later have 5).
-- interrupt-controller : Identifies the node as an interrupt controller.
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The value must be 3.
-
-Notes:
-
-- Because this HW ultimately routes interrupts to the GIC, the
-  interrupt specifier must be that of the GIC.
-- Only SPIs can use the ictlr as an interrupt parent. SGIs and PPIs
-  are explicitly forbidden.
-
-Example:
-
-       ictlr: interrupt-controller@60004000 {
-               compatible = "nvidia,tegra20-ictlr", "nvidia,tegra-ictlr";
-               reg = <0x60004000 64>,
-                     <0x60004100 64>,
-                     <0x60004200 64>,
-                     <0x60004300 64>;
-               interrupt-controller;
-               #interrupt-cells = <3>;
-               interrupt-parent = <&intc>;
-       };
diff --git a/Bindings/interrupt-controller/nvidia,tegra20-ictlr.yaml b/Bindings/interrupt-controller/nvidia,tegra20-ictlr.yaml
new file mode 100644 (file)
index 0000000..074a873
--- /dev/null
@@ -0,0 +1,82 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/nvidia,tegra20-ictlr.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVIDIA Tegra20 Legacy Interrupt Controller
+
+maintainers:
+  - Thierry Reding <treding@nvidia.com>
+  - Jonathan Hunter <jonathanh@nvidia.com>
+
+description: >
+  All Tegra SoCs contain a legacy interrupt controller that routes interrupts to
+  the GIC, and also serves as a wakeup source. It is also referred to as
+  "ictlr", hence the name of the binding.
+
+  The HW block exposes a number of interrupt controllers, each implementing a
+  set of 32 interrupts.
+
+  Notes:
+    - Because this HW ultimately routes interrupts to the GIC, the
+      interrupt specifier must be that of the GIC.
+    - Only SPIs can use the ictlr as an interrupt parent. SGIs and PPIs
+      are explicitly forbidden.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - nvidia,tegra114-ictlr
+              - nvidia,tegra124-ictlr
+          - const: nvidia,tegra30-ictlr
+      - enum:
+          - nvidia,tegra20-ictlr
+          - nvidia,tegra30-ictlr
+
+  reg:
+    description: Each entry is a block of 32 interrupts
+    minItems: 4
+    maxItems: 5
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 3
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: nvidia,tegra20-ictlr
+    then:
+      properties:
+        reg:
+          maxItems: 4
+    else:
+      properties:
+        reg:
+          minItems: 5
+
+examples:
+  - |
+    interrupt-controller@60004000 {
+        compatible = "nvidia,tegra20-ictlr";
+        reg = <0x60004000 64>,
+              <0x60004100 64>,
+              <0x60004200 64>,
+              <0x60004300 64>;
+        interrupt-controller;
+        #interrupt-cells = <3>;
+    };
diff --git a/Bindings/interrupt-controller/open-pic.txt b/Bindings/interrupt-controller/open-pic.txt
deleted file mode 100644 (file)
index ccbbfdc..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-* Open PIC Binding
-
-This binding specifies what properties must be available in the device tree
-representation of an Open PIC compliant interrupt controller.  This binding is
-based on the binding defined for Open PIC in [1] and is a superset of that
-binding.
-
-Required properties:
-
-  NOTE: Many of these descriptions were paraphrased here from [1] to aid
-        readability.
-
-    - compatible: Specifies the compatibility list for the PIC.  The type
-      shall be <string> and the value shall include "open-pic".
-
-    - reg: Specifies the base physical address(s) and size(s) of this
-      PIC's addressable register space.  The type shall be <prop-encoded-array>.
-
-    - interrupt-controller: The presence of this property identifies the node
-      as an Open PIC.  No property value shall be defined.
-
-    - #interrupt-cells: Specifies the number of cells needed to encode an
-      interrupt source.  The type shall be a <u32> and the value shall be 2.
-
-    - #address-cells: Specifies the number of cells needed to encode an
-      address.  The type shall be <u32> and the value shall be 0.  As such,
-      'interrupt-map' nodes do not have to specify a parent unit address.
-
-Optional properties:
-
-    - pic-no-reset: The presence of this property indicates that the PIC
-      shall not be reset during runtime initialization.  No property value shall
-      be defined.  The presence of this property also mandates that any
-      initialization related to interrupt sources shall be limited to sources
-      explicitly referenced in the device tree.
-
-* Interrupt Specifier Definition
-
-  Interrupt specifiers consists of 2 cells encoded as
-  follows:
-
-    - <1st-cell>: The interrupt-number that identifies the interrupt source.
-
-    - <2nd-cell>: The level-sense information, encoded as follows:
-                    0 = low-to-high edge triggered
-                    1 = active low level-sensitive
-                    2 = active high level-sensitive
-                    3 = high-to-low edge triggered
-
-* Examples
-
-Example 1:
-
-       /*
-        * An Open PIC interrupt controller
-        */
-       mpic: pic@40000 {
-               // This is an interrupt controller node.
-               interrupt-controller;
-
-               // No address cells so that 'interrupt-map' nodes which reference
-               // this Open PIC node do not need a parent address specifier.
-               #address-cells = <0>;
-
-               // Two cells to encode interrupt sources.
-               #interrupt-cells = <2>;
-
-               // Offset address of 0x40000 and size of 0x40000.
-               reg = <0x40000 0x40000>;
-
-               // Compatible with Open PIC.
-               compatible = "open-pic";
-
-               // The PIC shall not be reset.
-               pic-no-reset;
-       };
-
-Example 2:
-
-       /*
-        * An interrupt generating device that is wired to an Open PIC.
-        */
-       serial0: serial@4500 {
-               // Interrupt source '42' that is active high level-sensitive.
-               // Note that there are only two cells as specified in the interrupt
-               // parent's '#interrupt-cells' property.
-               interrupts = <42 2>;
-
-               // The interrupt controller that this device is wired to.
-               interrupt-parent = <&mpic>;
-       };
-
-* References
-
-[1] Devicetree Specification
-    (https://www.devicetree.org/specifications/)
-
diff --git a/Bindings/interrupt-controller/opencores,or1k-pic.txt b/Bindings/interrupt-controller/opencores,or1k-pic.txt
deleted file mode 100644 (file)
index 55c04fa..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-OpenRISC 1000 Programmable Interrupt Controller
-
-Required properties:
-
-- compatible : should be "opencores,or1k-pic-level" for variants with
-  level triggered interrupt lines, "opencores,or1k-pic-edge" for variants with
-  edge triggered interrupt lines or "opencores,or1200-pic" for machines
-  with the non-spec compliant or1200 type implementation.
-
-  "opencores,or1k-pic" is also provided as an alias to "opencores,or1200-pic",
-  but this is only for backwards compatibility.
-
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The value shall be 1.
-
-Example:
-
-intc: interrupt-controller {
-       compatible = "opencores,or1k-pic-level";
-       interrupt-controller;
-       #interrupt-cells = <1>;
-};
diff --git a/Bindings/interrupt-controller/opencores,or1k-pic.yaml b/Bindings/interrupt-controller/opencores,or1k-pic.yaml
new file mode 100644 (file)
index 0000000..995b68c
--- /dev/null
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/opencores,or1k-pic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: OpenRISC 1000 Programmable Interrupt Controller
+
+maintainers:
+  - Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
+
+properties:
+  compatible:
+    enum:
+      - opencores,or1k-pic-level
+      - opencores,or1k-pic-edge
+      - opencores,or1200-pic
+      - opencores,or1k-pic
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller {
+        compatible = "opencores,or1k-pic-level";
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/openrisc,ompic.txt b/Bindings/interrupt-controller/openrisc,ompic.txt
deleted file mode 100644 (file)
index caec07c..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-Open Multi-Processor Interrupt Controller
-
-Required properties:
-
-- compatible : This should be "openrisc,ompic"
-- reg : Specifies base physical address and size of the register space. The
-  size is based on the number of cores the controller has been configured
-  to handle, this should be set to 8 bytes per cpu core.
-- interrupt-controller : Identifies the node as an interrupt controller.
-- #interrupt-cells : This should be set to 0 as this will not be an irq
-  parent.
-- interrupts : Specifies the interrupt line to which the ompic is wired.
-
-Example:
-
-ompic: interrupt-controller@98000000 {
-       compatible = "openrisc,ompic";
-       reg = <0x98000000 16>;
-       interrupt-controller;
-       #interrupt-cells = <0>;
-       interrupts = <1>;
-};
diff --git a/Bindings/interrupt-controller/openrisc,ompic.yaml b/Bindings/interrupt-controller/openrisc,ompic.yaml
new file mode 100644 (file)
index 0000000..4efbfba
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/openrisc,ompic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Open Multi-Processor Interrupt Controller
+
+maintainers:
+  - Stafford Horne <shorne@gmail.com>
+
+properties:
+  compatible:
+    items:
+      - const: openrisc,ompic
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 0
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@98000000 {
+        compatible = "openrisc,ompic";
+        reg = <0x98000000 16>;
+        interrupt-controller;
+        #interrupt-cells = <0>;
+        interrupts = <1>;
+    };
diff --git a/Bindings/interrupt-controller/qca,ar7100-cpu-intc.yaml b/Bindings/interrupt-controller/qca,ar7100-cpu-intc.yaml
new file mode 100644 (file)
index 0000000..ab32a91
--- /dev/null
@@ -0,0 +1,61 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/qca,ar7100-cpu-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Atheros ath79 CPU interrupt controller
+
+maintainers:
+  - Alban Bedel <albeu@free.fr>
+
+description:
+  On most SoC the IRQ controller need to flush the DDR FIFO before running the
+  interrupt handler of some devices. This is configured using the
+  qca,ddr-wb-channels and qca,ddr-wb-channel-interrupts properties.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: qca,ar9132-cpu-intc
+          - const: qca,ar7100-cpu-intc
+      - items:
+          - const: qca,ar7100-cpu-intc
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+  qca,ddr-wb-channel-interrupts:
+    description: List of interrupts needing a write buffer flush
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+
+  qca,ddr-wb-channels:
+    description: List of write buffer channel phandles for each interrupt
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+
+required:
+  - compatible
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+      interrupt-controller {
+          compatible = "qca,ar9132-cpu-intc", "qca,ar7100-cpu-intc";
+
+          interrupt-controller;
+          #interrupt-cells = <1>;
+
+          qca,ddr-wb-channel-interrupts = <2>, <3>, <4>, <5>;
+          qca,ddr-wb-channels = <&ddr_ctrl 3>, <&ddr_ctrl 2>,
+                                <&ddr_ctrl 0>, <&ddr_ctrl 1>;
+      };
+
+      ddr_ctrl: memory-controller {
+          #qca,ddr-wb-channel-cells = <1>;
+      };
diff --git a/Bindings/interrupt-controller/qca,ar7100-misc-intc.yaml b/Bindings/interrupt-controller/qca,ar7100-misc-intc.yaml
new file mode 100644 (file)
index 0000000..ae81318
--- /dev/null
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/qca,ar7100-misc-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Atheros AR7xxx/AR9XXX MISC interrupt controller
+
+maintainers:
+  - Alban Bedel <albeu@free.fr>
+  - Alexander Couzens <lynxis@fe80.eu>
+
+description:
+  The Qualcomm Atheros AR7xxx/AR9XXX MISC interrupt controller is a secondary
+  controller for lower priority interrupts.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: qca,ar9132-misc-intc
+          - const: qca,ar7100-misc-intc
+      - const: qca,ar7240-misc-intc
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - "#interrupt-cells"
+
+examples:
+  - |
+    interrupt-controller@18060010 {
+        compatible = "qca,ar9132-misc-intc", "qca,ar7100-misc-intc";
+        reg = <0x18060010 0x4>;
+        interrupts = <6>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/qca,ath79-cpu-intc.txt b/Bindings/interrupt-controller/qca,ath79-cpu-intc.txt
deleted file mode 100644 (file)
index aabce78..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-Binding for Qualcomm Atheros AR7xxx/AR9XXX CPU interrupt controller
-
-On most SoC the IRQ controller need to flush the DDR FIFO before running
-the interrupt handler of some devices. This is configured using the
-qca,ddr-wb-channels and qca,ddr-wb-channel-interrupts properties.
-
-Required Properties:
-
-- compatible: has to be "qca,<soctype>-cpu-intc", "qca,ar7100-cpu-intc"
-  as fallback
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode interrupt
-                    source, should be 1 for intc
-
-Please refer to interrupts.txt in this directory for details of the common
-Interrupt Controllers bindings used by client devices.
-
-Optional Properties:
-
-- qca,ddr-wb-channel-interrupts: List of the interrupts needing a write
-  buffer flush
-- qca,ddr-wb-channels: List of phandles to the write buffer channels for
-  each interrupt. If qca,ddr-wb-channel-interrupts is not present the interrupt
-  default to the entry's index.
-
-Example:
-
-       interrupt-controller {
-               compatible = "qca,ar9132-cpu-intc", "qca,ar7100-cpu-intc";
-
-               interrupt-controller;
-               #interrupt-cells = <1>;
-
-               qca,ddr-wb-channel-interrupts = <2>, <3>, <4>, <5>;
-               qca,ddr-wb-channels = <&ddr_ctrl 3>, <&ddr_ctrl 2>,
-                                       <&ddr_ctrl 0>, <&ddr_ctrl 1>;
-       };
-
-       ...
-
-       ddr_ctrl: memory-controller@18000000 {
-               ...
-               #qca,ddr-wb-channel-cells = <1>;
-       };
diff --git a/Bindings/interrupt-controller/qca,ath79-misc-intc.txt b/Bindings/interrupt-controller/qca,ath79-misc-intc.txt
deleted file mode 100644 (file)
index ad70006..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-Binding for Qualcomm Atheros AR7xxx/AR9XXX MISC interrupt controller
-
-The MISC interrupt controller is a secondary controller for lower priority
-interrupt.
-
-Required Properties:
-- compatible: has to be "qca,<soctype>-cpu-intc", "qca,ar7100-misc-intc" or
-  "qca,<soctype>-cpu-intc", "qca,ar7240-misc-intc"
-- reg: Base address and size of the controllers memory area
-- interrupts: Interrupt specifier for the controllers interrupt.
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode interrupt
-                    source, should be 1
-
-Compatible fallback depends on the SoC. Use ar7100 for ar71xx and ar913x,
-use ar7240 for all other SoCs.
-
-Please refer to interrupts.txt in this directory for details of the common
-Interrupt Controllers bindings used by client devices.
-
-Example:
-
-       interrupt-controller@18060010 {
-               compatible = "qca,ar9132-misc-intc", "qca,ar7100-misc-intc";
-               reg = <0x18060010 0x4>;
-
-               interrupt-parent = <&cpuintc>;
-               interrupts = <6>;
-
-               interrupt-controller;
-               #interrupt-cells = <1>;
-       };
-
-Another example:
-
-       interrupt-controller@18060010 {
-               compatible = "qca,ar9331-misc-intc", qca,ar7240-misc-intc";
-               reg = <0x18060010 0x4>;
-
-               interrupt-parent = <&cpuintc>;
-               interrupts = <6>;
-
-               interrupt-controller;
-               #interrupt-cells = <1>;
-       };
index 3dfe425909d1ea511b36340601738d8f87618ad8..ffc4768bad065276378d23d53d6e81efad0a6b66 100644 (file)
@@ -70,6 +70,7 @@ properties:
               - sophgo,cv1812h-plic
               - sophgo,sg2002-plic
               - sophgo,sg2042-plic
+              - sophgo,sg2044-plic
               - thead,th1520-plic
           - const: thead,c900-plic
       - items:
diff --git a/Bindings/interrupt-controller/snps,arc700-intc.txt b/Bindings/interrupt-controller/snps,arc700-intc.txt
deleted file mode 100644 (file)
index 9a5d562..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-* ARC700 incore Interrupt Controller
-
-  The core interrupt controller provides 32 prioritised interrupts (2 levels)
-  to ARC700 core.
-
-Properties:
-
-- compatible: "snps,arc700-intc"
-- interrupt-controller: This is an interrupt controller.
-- #interrupt-cells: Must be <1>.
-
-  Single Cell "interrupts" property of a device specifies the IRQ number
-  between 0 to 31
-
-  intc accessed via the special ARC AUX register interface, hence "reg" property
-  is not specified.
-
-Example:
-
-       intc: interrupt-controller {
-               compatible = "snps,arc700-intc";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-       };
diff --git a/Bindings/interrupt-controller/snps,arc700-intc.yaml b/Bindings/interrupt-controller/snps,arc700-intc.yaml
new file mode 100644 (file)
index 0000000..000a734
--- /dev/null
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/snps,arc700-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARC700 incore Interrupt Controller
+
+maintainers:
+  - Vineet Gupta <vgupta@kernel.org>
+
+description: >
+  The core interrupt controller provides 32 prioritized interrupts (2 levels)
+  to ARC700 core.
+
+  intc accessed via the special ARC AUX register interface, hence "reg" property
+  is not specified.
+
+properties:
+  compatible:
+    const: snps,arc700-intc
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    description: An interrupt number 0-31
+    const: 1
+
+required:
+  - compatible
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller {
+        compatible = "snps,arc700-intc";
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/snps,archs-idu-intc.txt b/Bindings/interrupt-controller/snps,archs-idu-intc.txt
deleted file mode 100644 (file)
index a5c1db9..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-* ARC-HS Interrupt Distribution Unit
-
-  This optional 2nd level interrupt controller can be used in SMP configurations
-  for dynamic IRQ routing, load balancing of common/external IRQs towards core
-  intc.
-
-Properties:
-
-- compatible: "snps,archs-idu-intc"
-- interrupt-controller: This is an interrupt controller.
-- #interrupt-cells: Must be <1> or <2>.
-
-  Value of the first cell specifies the "common" IRQ from peripheral to IDU.
-  Number N of the particular interrupt line of IDU corresponds to the line N+24
-  of the core interrupt controller.
-
-  The (optional) second cell specifies any of the following flags:
-    - bits[3:0] trigger type and level flags
-        1 = low-to-high edge triggered
-        2 = NOT SUPPORTED (high-to-low edge triggered)
-        4 = active high level-sensitive <<< DEFAULT
-        8 = NOT SUPPORTED (active low level-sensitive)
-  When no second cell is specified, the interrupt is assumed to be level
-  sensitive.
-
-  The interrupt controller is accessed via the special ARC AUX register
-  interface, hence "reg" property is not specified.
-
-Example:
-       core_intc: core-interrupt-controller {
-               compatible = "snps,archs-intc";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-       };
-
-       idu_intc: idu-interrupt-controller {
-               compatible = "snps,archs-idu-intc";
-               interrupt-controller;
-               interrupt-parent = <&core_intc>;
-               #interrupt-cells = <1>;
-       };
-
-       some_device: serial@c0fc1000 {
-               interrupt-parent = <&idu_intc>;
-               interrupts = <0>;       /* upstream idu IRQ #24 */
-       };
diff --git a/Bindings/interrupt-controller/snps,archs-idu-intc.yaml b/Bindings/interrupt-controller/snps,archs-idu-intc.yaml
new file mode 100644 (file)
index 0000000..286a964
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/snps,archs-idu-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARC-HS Interrupt Distribution Unit
+
+maintainers:
+  - Vineet Gupta <vgupta@kernel.org>
+
+description: >
+  ARC-HS Interrupt Distribution Unit is an optional 2nd level interrupt
+  controller which can be used in SMP configurations for dynamic IRQ routing,
+  load balancing of common/external IRQs towards core intc.
+
+  The interrupt controller is accessed via the special ARC AUX register
+  interface, hence "reg" property is not specified.
+
+properties:
+  compatible:
+    const: snps,archs-idu-intc
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    description: |
+      Number of interrupt specifier cells:
+        - 1: only a common IRQ is specified.
+        - 2: a second cell encodes trigger type and level flags:
+            1 = low-to-high edge triggered
+            4 = active high level-sensitive (default)
+    enum: [1, 2]
+
+required:
+  - compatible
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller {
+        compatible = "snps,archs-idu-intc";
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/snps,archs-intc.txt b/Bindings/interrupt-controller/snps,archs-intc.txt
deleted file mode 100644 (file)
index 69f326d..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-* ARC-HS incore Interrupt Controller (Provided by cores implementing ARCv2 ISA)
-
-Properties:
-
-- compatible: "snps,archs-intc"
-- interrupt-controller: This is an interrupt controller.
-- #interrupt-cells: Must be <1>.
-
-  Single Cell "interrupts" property of a device specifies the IRQ number
-  between 16 to 256
-
-  intc accessed via the special ARC AUX register interface, hence "reg" property
-  is not specified.
-
-Example:
-
-       intc: interrupt-controller {
-               compatible = "snps,archs-intc";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-               interrupts = <16 17 18 19 20 21 22 23 24 25>;
-       };
diff --git a/Bindings/interrupt-controller/snps,archs-intc.yaml b/Bindings/interrupt-controller/snps,archs-intc.yaml
new file mode 100644 (file)
index 0000000..9d248ef
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/snps,archs-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARC-HS incore Interrupt Controller
+
+maintainers:
+  - Vineet Gupta <vgupta@kernel.org>
+
+description:
+  ARC-HS incore Interrupt Controller provided by cores implementing ARCv2 ISA.
+  intc accessed via the special ARC AUX register interface, hence "reg" property
+  is not specified.
+
+properties:
+  compatible:
+    const: snps,archs-intc
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupts:
+    description: List of IRQ numbers between 16 and 256
+    items:
+      items:
+        - minimum: 16
+          maximum: 256
+
+required:
+  - compatible
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller {
+        compatible = "snps,archs-intc";
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        interrupts = <16>, <17>, <18>, <19>, <20>, <21>, <22>, <23>, <24>, <25>;
+    };
diff --git a/Bindings/interrupt-controller/snps,dw-apb-ictl.txt b/Bindings/interrupt-controller/snps,dw-apb-ictl.txt
deleted file mode 100644 (file)
index 2db59df..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-Synopsys DesignWare APB interrupt controller (dw_apb_ictl)
-
-Synopsys DesignWare provides interrupt controller IP for APB known as
-dw_apb_ictl. The IP is used as secondary interrupt controller in some SoCs with
-APB bus, e.g. Marvell Armada 1500. It can also be used as primary interrupt
-controller in some SoCs, e.g. Hisilicon SD5203.
-
-Required properties:
-- compatible: shall be "snps,dw-apb-ictl"
-- reg: physical base address of the controller and length of memory mapped
-  region starting with ENABLE_LOW register
-- interrupt-controller: identifies the node as an interrupt controller
-- #interrupt-cells: number of cells to encode an interrupt-specifier, shall be 1
-
-Additional required property when it's used as secondary interrupt controller:
-- interrupts: interrupt reference to primary interrupt controller
-
-The interrupt sources map to the corresponding bits in the interrupt
-registers, i.e.
-- 0 maps to bit 0 of low interrupts,
-- 1 maps to bit 1 of low interrupts,
-- 32 maps to bit 0 of high interrupts,
-- 33 maps to bit 1 of high interrupts,
-- (optional) fast interrupts start at 64.
-
-Example:
-       /* dw_apb_ictl is used as secondary interrupt controller */
-       aic: interrupt-controller@3000 {
-               compatible = "snps,dw-apb-ictl";
-               reg = <0x3000 0xc00>;
-               interrupt-controller;
-               #interrupt-cells = <1>;
-               interrupt-parent = <&gic>;
-               interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
-       };
-
-       /* dw_apb_ictl is used as primary interrupt controller */
-       vic: interrupt-controller@10130000 {
-               compatible = "snps,dw-apb-ictl";
-               reg = <0x10130000 0x1000>;
-               interrupt-controller;
-               #interrupt-cells = <1>;
-       };
diff --git a/Bindings/interrupt-controller/snps,dw-apb-ictl.yaml b/Bindings/interrupt-controller/snps,dw-apb-ictl.yaml
new file mode 100644 (file)
index 0000000..6b59b60
--- /dev/null
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/snps,dw-apb-ictl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys DesignWare APB interrupt controller
+
+maintainers:
+  - Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
+  - Zhen Lei <thunder.leizhen@huawei.com>
+
+description:
+  Synopsys DesignWare provides interrupt controller IP for APB known as
+  dw_apb_ictl. The IP is used as secondary interrupt controller in some SoCs
+  with APB bus, e.g. Marvell Armada 1500. It can also be used as primary
+  interrupt controller in some SoCs, e.g. Hisilicon SD5203.
+
+properties:
+  compatible:
+    const: snps,dw-apb-ictl
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupts:
+    maxItems: 1
+    description: >
+      Interrupt input connected to the primary interrupt controller when used
+      as a secondary controller. The interrupt specifier maps to bits in the
+      low and high interrupt registers (0⇒bit 0 low, 1⇒bit 1 low, 32⇒bit 0 high,
+      33⇒bit 1 high, fast interrupts start at 64).
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    interrupt-controller@3000 {
+        compatible = "snps,dw-apb-ictl";
+        reg = <0x3000 0xc00>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+    };
+  - |
+    interrupt-controller@10130000 {
+        compatible = "snps,dw-apb-ictl";
+        reg = <0x10130000 0x1000>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
index e1ffd55fa7bf824081e1d8486656deed1d849011..f6b8b1d92f7994765fdb1ec3d15c43ec6741f490 100644 (file)
@@ -18,7 +18,9 @@ allOf:
 
 properties:
   compatible:
-    const: sophgo,sg2042-msi
+    enum:
+      - sophgo,sg2042-msi
+      - sophgo,sg2044-msi
 
   reg:
     items:
diff --git a/Bindings/interrupt-controller/st,spear300-shirq.yaml b/Bindings/interrupt-controller/st,spear300-shirq.yaml
new file mode 100644 (file)
index 0000000..27d3617
--- /dev/null
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/st,spear300-shirq.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SPEAr3xx Shared IRQ controller
+
+maintainers:
+  - Viresh Kumar <vireshk@kernel.org>
+  - Shiraz Hashim <shiraz.linux.kernel@gmail.com>
+
+description: |
+  SPEAr3xx architecture includes shared/multiplexed irqs for certain set of
+  devices. The multiplexor provides a single interrupt to parent interrupt
+  controller (VIC) on behalf of a group of devices.
+
+  There can be multiple groups available on SPEAr3xx variants but not exceeding
+  4. The number of devices in a group can differ, further they may share same
+  set of status/mask registers spanning across different bit masks. Also in some
+  cases the group may not have enable or other registers. This makes software
+  little complex.
+
+  A single node in the device tree is used to describe the shared interrupt
+  multiplexer (one node for all groups). A group in the interrupt controller
+  shares config/control registers with other groups. For example, a 32-bit
+  interrupt enable/disable config register can accommodate up to 4 interrupt
+  groups.
+
+properties:
+  compatible:
+    enum:
+      - st,spear300-shirq
+      - st,spear310-shirq
+      - st,spear320-shirq
+
+  reg:
+    maxItems: 1
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupt-controller: true
+
+  interrupts:
+    description: Interrupt specifier array for SHIRQ groups
+    minItems: 1
+    maxItems: 4
+
+required:
+  - compatible
+  - reg
+  - '#interrupt-cells'
+  - interrupt-controller
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@b3000000 {
+        compatible = "st,spear320-shirq";
+        reg = <0xb3000000 0x1000>;
+        interrupts = <28 29 30 1>;
+        #interrupt-cells = <1>;
+        interrupt-controller;
+    };
diff --git a/Bindings/interrupt-controller/st,spear3xx-shirq.txt b/Bindings/interrupt-controller/st,spear3xx-shirq.txt
deleted file mode 100644 (file)
index a407c49..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-* SPEAr Shared IRQ layer (shirq)
-
-SPEAr3xx architecture includes shared/multiplexed irqs for certain set
-of devices. The multiplexor provides a single interrupt to parent
-interrupt controller (VIC) on behalf of a group of devices.
-
-There can be multiple groups available on SPEAr3xx variants but not
-exceeding 4. The number of devices in a group can differ, further they
-may share same set of status/mask registers spanning across different
-bit masks. Also in some cases the group may not have enable or other
-registers. This makes software little complex.
-
-A single node in the device tree is used to describe the shared
-interrupt multiplexor (one node for all groups). A group in the
-interrupt controller shares config/control registers with other groups.
-For example, a 32-bit interrupt enable/disable config register can
-accommodate up to 4 interrupt groups.
-
-Required properties:
-  - compatible: should be, either of
-     - "st,spear300-shirq"
-     - "st,spear310-shirq"
-     - "st,spear320-shirq"
-  - interrupt-controller: Identifies the node as an interrupt controller.
-  - #interrupt-cells: should be <1> which basically contains the offset
-    (starting from 0) of interrupts for all the groups.
-  - reg: Base address and size of shirq registers.
-  - interrupts: The list of interrupts generated by the groups which are
-    then connected to a parent interrupt controller. Each group is
-    associated with one of the interrupts, hence number of interrupts (to
-    parent) is equal to number of groups. The format of the interrupt
-    specifier depends in the interrupt parent controller.
-
-Example:
-
-The following is an example from the SPEAr320 SoC dtsi file.
-
-shirq: interrupt-controller@b3000000 {
-       compatible = "st,spear320-shirq";
-       reg = <0xb3000000 0x1000>;
-       interrupts = <28 29 30 1>;
-       #interrupt-cells = <1>;
-       interrupt-controller;
-};
diff --git a/Bindings/interrupt-controller/technologic,ts4800-irqc.yaml b/Bindings/interrupt-controller/technologic,ts4800-irqc.yaml
new file mode 100644 (file)
index 0000000..f1a15d7
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/technologic,ts4800-irqc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TS-4800 FPGA Interrupt Controller
+
+maintainers:
+  - Damien Riegel <damien.riegel@savoirfairelinux.com>
+
+description:
+  TS-4800 FPGA has an internal interrupt controller. When one of the interrupts
+  is triggered, the SoC is notified, usually using a GPIO as parent interrupt
+  source.
+
+properties:
+  compatible:
+    const: technologic,ts4800-irqc
+
+  reg:
+    maxItems: 1
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupt-controller: true
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@1000 {
+        compatible = "technologic,ts4800-irqc";
+        reg = <0x1000 0x80>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        interrupts = <10>;
+    };
diff --git a/Bindings/interrupt-controller/technologic,ts4800.txt b/Bindings/interrupt-controller/technologic,ts4800.txt
deleted file mode 100644 (file)
index 341ae59..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-TS-4800 FPGA interrupt controller
-
-TS-4800 FPGA has an internal interrupt controller. When one of the
-interrupts is triggered, the SoC is notified, usually using a GPIO as
-parent interrupt source.
-
-Required properties:
-- compatible: should be "technologic,ts4800-irqc"
-- interrupt-controller: identifies the node as an interrupt controller
-- reg: physical base address of the controller and length of memory mapped
-  region
-- #interrupt-cells: specifies the number of cells needed to encode an interrupt
-  source, should be 1.
-- interrupts: specifies the interrupt line in the interrupt-parent controller
index 065f2544b63b0b85dbe22d209500b649a049a55a..d6fb08a54167f21d454e33a1992e19b358d42dbd 100644 (file)
@@ -14,6 +14,7 @@ properties:
     items:
       - enum:
           - sophgo,sg2042-aclint-mswi
+          - sophgo,sg2044-aclint-mswi
       - const: thead,c900-aclint-mswi
 
   reg:
diff --git a/Bindings/interrupt-controller/ti,cp-intc.txt b/Bindings/interrupt-controller/ti,cp-intc.txt
deleted file mode 100644 (file)
index 597e8a0..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-* TI Common Platform Interrupt Controller
-
-Common Platform Interrupt Controller (cp_intc) is used on
-OMAP-L1x SoCs and can support several configurable number
-of interrupts.
-
-Main node required properties:
-
-- compatible : should be:
-       "ti,cp-intc"
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The type shall be a <u32> and the value shall be 1.
-
-  The cell contains the interrupt number in the range [0-128].
-- ti,intc-size: Number of interrupts handled by the interrupt controller.
-- reg: physical base address and size of the intc registers map.
-
-Example:
-
-       intc: interrupt-controller@1 {
-               compatible = "ti,cp-intc";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-               ti,intc-size = <101>;
-               reg = <0xfffee000 0x2000>;
-       };
diff --git a/Bindings/interrupt-controller/ti,cp-intc.yaml b/Bindings/interrupt-controller/ti,cp-intc.yaml
new file mode 100644 (file)
index 0000000..77d018d
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/ti,cp-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI Common Platform Interrupt Controller
+
+maintainers:
+  - Bartosz Golaszewski <brgl@bgdev.pl>
+  
+description:
+  Common Platform Interrupt Controller (cp_intc) is used on OMAP-L1x SoCs and
+  can support several configurable number of interrupts.
+
+properties:
+  compatible:
+    const: ti,cp-intc
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+    description: Encodes an interrupt number in the range 0–128.
+
+  ti,intc-size:
+    description: Number of interrupts handled by the interrupt controller.
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - ti,intc-size
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@fffee000 {
+        compatible = "ti,cp-intc";
+        reg = <0xfffee000 0x2000>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+        ti,intc-size = <101>;
+    };
diff --git a/Bindings/interrupt-controller/ti,keystone-irq.txt b/Bindings/interrupt-controller/ti,keystone-irq.txt
deleted file mode 100644 (file)
index 5f94d77..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Keystone 2 IRQ controller IP
-
-On Keystone SOCs, DSP cores can send interrupts to ARM
-host using the IRQ controller IP. It provides 28 IRQ signals to ARM.
-The IRQ handler running on HOST OS can identify DSP signal source by
-analyzing SRCCx bits in IPCARx registers. This is one of the component
-used by the IPC mechanism used on Keystone SOCs.
-
-Required Properties:
-- compatible: should be "ti,keystone-irq"
-- ti,syscon-dev : phandle and offset pair. The phandle to syscon used to
-                       access device control registers and the offset inside
-                       device control registers range.
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode interrupt
-                                        source should be 1.
-- interrupts: interrupt reference to primary interrupt controller
-
-Please refer to interrupts.txt in this directory for details of the common
-Interrupt Controllers bindings used by client devices.
-
-Example:
-       kirq0: keystone_irq0@26202a0 {
-               compatible = "ti,keystone-irq";
-               ti,syscon-dev = <&devctrl 0x2a0>;
-               interrupts = <GIC_SPI 4 IRQ_TYPE_EDGE_RISING>;
-               interrupt-controller;
-               #interrupt-cells = <1>;
-       };
-
-       dsp0: dsp0 {
-               compatible = "linux,rproc-user";
-               ...
-               interrupt-parent = <&kirq0>;
-               interrupts = <10 2>;
-       };
diff --git a/Bindings/interrupt-controller/ti,keystone-irq.yaml b/Bindings/interrupt-controller/ti,keystone-irq.yaml
new file mode 100644 (file)
index 0000000..27d448d
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ti,keystone-irq.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Keystone 2 IRQ controller IP
+
+maintainers:
+  - Grygorii Strashko <grygorii.strashko@ti.com>
+
+description:
+  On Keystone SOCs, DSP cores can send interrupts to ARM host using the IRQ
+  controller IP. It provides 28 IRQ signals to ARM. The IRQ handler running on
+  HOST OS can identify DSP signal source by analyzing SRCCx bits in IPCARx
+  registers. This is one of the component used by the IPC mechanism used on
+  Keystone SOCs.
+
+properties:
+  compatible:
+    const: ti,keystone-irq
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+  interrupts:
+    maxItems: 1
+
+  ti,syscon-dev:
+    description: Phandle and offset to syscon device
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    items:
+      - items:
+          - description: Phandle to syscon device control registers
+          - description: Offset to control register
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+  - interrupts
+  - ti,syscon-dev
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    interrupt-controller@2a0 {
+      compatible = "ti,keystone-irq";
+      reg = <0x2a0 0x4>;
+      ti,syscon-dev = <&devctrl 0x2a0>;
+      interrupts = <GIC_SPI 4 IRQ_TYPE_EDGE_RISING>;
+      interrupt-controller;
+      #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/ti,omap-intc-irq.txt b/Bindings/interrupt-controller/ti,omap-intc-irq.txt
deleted file mode 100644 (file)
index 38ce5d0..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-Omap2/3 intc controller
-
-On TI omap2 and 3 the intc interrupt controller can provide
-96 or 128 IRQ signals to the ARM host depending on the SoC.
-
-Required Properties:
-- compatible: should be one of
-                       "ti,omap2-intc"
-                       "ti,omap3-intc"
-                       "ti,dm814-intc"
-                       "ti,dm816-intc"
-                       "ti,am33xx-intc"
-
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode interrupt
-                    source, should be 1 for intc
-- interrupts: interrupt reference to primary interrupt controller
-
-Please refer to interrupts.txt in this directory for details of the common
-Interrupt Controllers bindings used by client devices.
-
-Example:
-       intc: interrupt-controller@48200000 {
-               compatible = "ti,omap3-intc";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-               reg = <0x48200000 0x1000>;
-       };
diff --git a/Bindings/interrupt-controller/ti,omap-intc-irq.yaml b/Bindings/interrupt-controller/ti,omap-intc-irq.yaml
new file mode 100644 (file)
index 0000000..cb11818
--- /dev/null
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/ti,omap-intc-irq.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI OMAP Interrupt Controller
+
+maintainers:
+  - Tony Lindgren <tony@atomide.com>
+
+description:
+  On TI omap2 and 3 the intc interrupt controller can provide 96 or 128 IRQ
+  signals to the ARM host depending on the SoC.
+
+properties:
+  compatible:
+    enum:
+      - ti,omap2-intc
+      - ti,omap3-intc
+      - ti,dm814-intc
+      - ti,dm816-intc
+      - ti,am33xx-intc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@48200000 {
+        compatible = "ti,omap3-intc";
+        reg = <0x48200000 0x1000>;
+        interrupts = <32>;
+        interrupt-controller;
+        #interrupt-cells = <1>;
+    };
diff --git a/Bindings/interrupt-controller/ti,omap2-intc.txt b/Bindings/interrupt-controller/ti,omap2-intc.txt
deleted file mode 100644 (file)
index f2583e6..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-* OMAP Interrupt Controller
-
-OMAP2/3 are using a TI interrupt controller that can support several
-configurable number of interrupts.
-
-Main node required properties:
-
-- compatible : should be:
-       "ti,omap2-intc"
-- interrupt-controller : Identifies the node as an interrupt controller
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The type shall be a <u32> and the value shall be 1.
-
-  The cell contains the interrupt number in the range [0-128].
-- ti,intc-size: Number of interrupts handled by the interrupt controller.
-- reg: physical base address and size of the intc registers map.
-
-Example:
-
-       intc: interrupt-controller@1 {
-               compatible = "ti,omap2-intc";
-               interrupt-controller;
-               #interrupt-cells = <1>;
-               ti,intc-size = <96>;
-               reg = <0x48200000 0x1000>;
-       };
-
diff --git a/Bindings/interrupt-controller/ti,omap4-wugen-mpu.txt b/Bindings/interrupt-controller/ti,omap4-wugen-mpu.txt
deleted file mode 100644 (file)
index 422d690..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-TI OMAP4 Wake-up Generator
-
-All TI OMAP4/5 (and their derivatives) an interrupt controller that
-routes interrupts to the GIC, and also serves as a wakeup source. It
-is also referred to as "WUGEN-MPU", hence the name of the binding.
-
-Required properties:
-
-- compatible : should contain at least "ti,omap4-wugen-mpu" or
-  "ti,omap5-wugen-mpu"
-- reg : Specifies base physical address and size of the registers.
-- interrupt-controller : Identifies the node as an interrupt controller.
-- #interrupt-cells : Specifies the number of cells needed to encode an
-  interrupt source. The value must be 3.
-
-Notes:
-
-- Because this HW ultimately routes interrupts to the GIC, the
-  interrupt specifier must be that of the GIC.
-- Only SPIs can use the WUGEN as an interrupt parent. SGIs and PPIs
-  are explicitly forbidden.
-
-Example:
-
-       wakeupgen: interrupt-controller@48281000 {
-               compatible = "ti,omap5-wugen-mpu", "ti,omap4-wugen-mpu";
-               interrupt-controller;
-               #interrupt-cells = <3>;
-               reg = <0x48281000 0x1000>;
-               interrupt-parent = <&gic>;
-       };
diff --git a/Bindings/interrupt-controller/ti,omap4-wugen-mpu.yaml b/Bindings/interrupt-controller/ti,omap4-wugen-mpu.yaml
new file mode 100644 (file)
index 0000000..6e3d6e6
--- /dev/null
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/ti,omap4-wugen-mpu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI OMAP4 Wake-up Generator
+
+maintainers:
+  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
+
+description: >
+  All TI OMAP4/5 (and their derivatives) are interrupt controllers that route
+  interrupts to the GIC, and also serve as wakeup sources. They are also
+  referred to as "WUGEN-MPU", hence the name of the binding.
+
+  Notes:
+
+    - Because this HW ultimately routes interrupts to the GIC, the interrupt
+      specifier must be that of the GIC.
+    - Only SPIs can use the WUGEN as an interrupt parent. SGIs and PPIs are
+      explicitly forbidden.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: ti,omap5-wugen-mpu
+          - const: ti,omap4-wugen-mpu
+      - const: ti,omap4-wugen-mpu
+
+  reg:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 3
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@48281000 {
+        compatible = "ti,omap5-wugen-mpu", "ti,omap4-wugen-mpu";
+        reg = <0x48281000 0x1000>;
+        interrupt-controller;
+        #interrupt-cells = <3>;
+    };
diff --git a/Bindings/interrupt-controller/via,vt8500-intc.txt b/Bindings/interrupt-controller/via,vt8500-intc.txt
deleted file mode 100644 (file)
index 0a4ce10..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-VIA/Wondermedia VT8500 Interrupt Controller
------------------------------------------------------
-
-Required properties:
-- compatible : "via,vt8500-intc"
-- reg : Should contain 1 register ranges(address and length)
-- #interrupt-cells : should be <1>
-
-Example:
-
-       intc: interrupt-controller@d8140000 {
-               compatible = "via,vt8500-intc";
-               interrupt-controller;
-               reg = <0xd8140000 0x10000>;
-               #interrupt-cells = <1>;
-       };
diff --git a/Bindings/interrupt-controller/via,vt8500-intc.yaml b/Bindings/interrupt-controller/via,vt8500-intc.yaml
new file mode 100644 (file)
index 0000000..bc14c74
--- /dev/null
@@ -0,0 +1,76 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/interrupt-controller/via,vt8500-intc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: VIA and WonderMedia SoCs Interrupt Controller
+
+description:
+  This is the interrupt controller used in single-core ARM SoCs made by
+  VIA and WonderMedia (up to and including WM8950). Each block handles
+  up to 64 interrupt sources (level or edge triggered) and can generate
+  up to 8 interrupts to its parent when used in a chained configuration.
+
+maintainers:
+  - Alexey Charkov <alchark@gmail.com>
+
+allOf:
+  - $ref: /schemas/interrupt-controller.yaml#
+
+properties:
+  compatible:
+    const: via,vt8500-intc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description:
+          Interrupt number raised by the IRQ0 output of this controller
+          Only used if this controller is chained
+      - description:
+          Interrupt number raised by the IRQ1 output of this controller
+          Only used if this controller is chained
+      - description:
+          Interrupt number raised by the IRQ2 output of this controller
+          Only used if this controller is chained
+      - description:
+          Interrupt number raised by the IRQ3 output of this controller
+          Only used if this controller is chained
+      - description:
+          Interrupt number raised by the IRQ4 output of this controller
+          Only used if this controller is chained
+      - description:
+          Interrupt number raised by the IRQ5 output of this controller
+          Only used if this controller is chained
+      - description:
+          Interrupt number raised by the IRQ6 output of this controller
+          Only used if this controller is chained
+      - description:
+          Interrupt number raised by the IRQ7 output of this controller
+          Only used if this controller is chained
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - '#interrupt-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    interrupt-controller@d8140000 {
+        compatible = "via,vt8500-intc";
+        interrupt-controller;
+        reg = <0xd8140000 0x10000>;
+        #interrupt-cells = <1>;
+    };
+...
index ea6b0f5f24de7667b74575bc837343c04323c4da..75750c64157c868725c087500ac81be4e282c829 100644 (file)
@@ -74,6 +74,7 @@ properties:
           - mediatek,mt2712-m4u  # generation two
           - mediatek,mt6779-m4u  # generation two
           - mediatek,mt6795-m4u  # generation two
+          - mediatek,mt6893-iommu-mm         # generation two
           - mediatek,mt8167-m4u  # generation two
           - mediatek,mt8173-m4u  # generation two
           - mediatek,mt8183-m4u  # generation two
@@ -131,6 +132,7 @@ properties:
       dt-binding/memory/mt2712-larb-port.h for mt2712,
       dt-binding/memory/mt6779-larb-port.h for mt6779,
       dt-binding/memory/mt6795-larb-port.h for mt6795,
+      dt-binding/memory/mediatek,mt6893-memory-port.h for mt6893,
       dt-binding/memory/mt8167-larb-port.h for mt8167,
       dt-binding/memory/mt8173-larb-port.h for mt8173,
       dt-binding/memory/mt8183-larb-port.h for mt8183,
@@ -157,6 +159,7 @@ allOf:
               - mediatek,mt2701-m4u
               - mediatek,mt2712-m4u
               - mediatek,mt6795-m4u
+              - mediatek,mt6893-iommu-mm
               - mediatek,mt8173-m4u
               - mediatek,mt8186-iommu-mm
               - mediatek,mt8188-iommu-vdo
@@ -173,6 +176,7 @@ allOf:
       properties:
         compatible:
           enum:
+            - mediatek,mt6893-iommu-mm
             - mediatek,mt8186-iommu-mm
             - mediatek,mt8188-iommu-vdo
             - mediatek,mt8188-iommu-vpp
diff --git a/Bindings/leds/backlight/ti,lp8864.yaml b/Bindings/leds/backlight/ti,lp8864.yaml
new file mode 100644 (file)
index 0000000..d44232d
--- /dev/null
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/backlight/ti,lp8864.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments - LP8864/LP8866 4/6-Channel LED Driver family
+
+maintainers:
+  - Andrew Davis <afd@ti.com>
+  - Alexander Sverdlin <alexander.sverdlin@siemens.com>
+
+description: |
+  LP8866-Q1, LP8866S-Q1, LP8864-Q1, LP8864S-Q1 are display LED-backlight drivers
+  with 4/6 channels. LED brightness can be controlled globally through the I2C
+  interface or PWM input.
+
+  For more product information please see the links below:
+    https://www.ti.com/product/LP8864-Q1
+    https://www.ti.com/product/LP8864S-Q1
+    https://www.ti.com/product/LP8866-Q1
+    https://www.ti.com/product/LP8866S-Q1
+
+properties:
+  compatible:
+    const: ti,lp8864
+
+  reg:
+    maxItems: 1
+    description: I2C slave address
+
+  enable-gpios:
+    maxItems: 1
+    description: GPIO pin to enable (active high) / disable the device
+
+  vled-supply:
+    description: LED supply
+
+  led:
+    type: object
+    $ref: common.yaml#
+    properties:
+      function: true
+      color: true
+      label: true
+      linux,default-trigger: true
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - led
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/leds/common.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        led-controller@3a {
+            compatible = "ti,lp8864";
+            reg = <0x3a>;
+            enable-gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+            vled-supply = <&vbatt>;
+
+            led {
+                function = LED_FUNCTION_BACKLIGHT;
+                color = <LED_COLOR_ID_WHITE>;
+                linux,default-trigger = "backlight";
+            };
+        };
+    };
+
+...
diff --git a/Bindings/leds/ti,tps61310.yaml b/Bindings/leds/ti,tps61310.yaml
new file mode 100644 (file)
index 0000000..118f9c8
--- /dev/null
@@ -0,0 +1,120 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/ti,tps61310.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments TPS6131X flash LED driver
+
+maintainers:
+  - Matthias Fend <matthias.fend@emfend.at>
+
+description: |
+  The TPS61310/TPS61311 is a flash LED driver with I2C interface.
+  Its power stage is capable of supplying a maximum total current of roughly 1500mA.
+  The TPS6131x provides three constant-current sinks, capable of sinking
+  up to 2 x 400mA (LED1 and LED3) and 800mA (LED2) in flash mode.
+  In torch mode, each sink (LED1, LED2, LED3) supports currents up to 175mA.
+  Since the three current sinks share most of the control components such as
+  flash timer, control logic, safety timer and the operating mode, they cannot
+  be used completely independently of each other. Therefore, only one LED is
+  supported, but the current sinks can be combined accordingly.
+
+  The data sheet can be found at:
+    https://www.ti.com/lit/ds/symlink/tps61310.pdf
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - ti,tps61311
+          - const: ti,tps61310
+      - items:
+          - const: ti,tps61310
+
+  reg:
+    maxItems: 1
+
+  reset-gpios:
+    maxItems: 1
+    description: GPIO connected to NRESET pin
+
+  ti,valley-current-limit:
+    type: boolean
+    description:
+      Reduce the valley peak current limit from 1750mA to 1250mA (TPS61310) or
+      from 2480mA to 1800mA (TPS61311).
+
+  led:
+    type: object
+    $ref: common.yaml#
+    unevaluatedProperties: false
+
+    properties:
+      led-sources:
+        minItems: 1
+        maxItems: 3
+        items:
+          enum: [1, 2, 3]
+
+      led-max-microamp:
+        oneOf:
+          - minimum: 50000
+            maximum: 350000
+            multipleOf: 50000
+          - minimum: 25000
+            maximum: 525000
+            multipleOf: 25000
+
+      flash-max-microamp:
+        oneOf:
+          - minimum: 50000
+            maximum: 800000
+            multipleOf: 50000
+          - minimum: 25000
+            maximum: 1500000
+            multipleOf: 25000
+
+      flash-max-timeout-us:
+        enum: [ 5300, 10700, 16000, 21300, 26600, 32000, 37300, 68200, 71500,
+                102200, 136300, 170400, 204500, 340800, 579300, 852000 ]
+
+    required:
+      - led-sources
+      - led-max-microamp
+      - flash-max-microamp
+      - flash-max-timeout-us
+
+required:
+  - compatible
+  - reg
+  - led
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/leds/common.h>
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      led-controller@33 {
+        compatible = "ti,tps61311", "ti,tps61310";
+        reg = <0x33>;
+
+        reset-gpios = <&gpio1 0 GPIO_ACTIVE_LOW>;
+
+        led {
+          function = LED_FUNCTION_FLASH;
+          color = <LED_COLOR_ID_WHITE>;
+          led-sources = <1>, <2>, <3>;
+          led-max-microamp = <525000>;
+          flash-max-microamp = <1500000>;
+          flash-max-timeout-us = <852000>;
+        };
+      };
+    };
index a58a018f3f7b9f8edd70d7c1bd137844ff2549df..ac726136f7e5aa1253929317e2190a5ef7485ede 100644 (file)
@@ -49,6 +49,7 @@ properties:
               - qcom,qcs615-apss-shared
               - qcom,sc7180-apss-shared
               - qcom,sc8180x-apss-shared
+              - qcom,sm7150-apss-shared
               - qcom,sm8150-apss-shared
           - const: qcom,sdm845-apss-shared
       - items:
@@ -72,6 +73,7 @@ properties:
     description: phandles to the parent clocks of the clock driver
     minItems: 2
     maxItems: 3
+    deprecated: true
 
   '#mbox-cells':
     const: 1
@@ -82,6 +84,23 @@ properties:
   clock-names:
     minItems: 2
     maxItems: 3
+    deprecated: true
+
+  clock-controller:
+    type: object
+    additionalProperties: false
+    properties:
+      clocks:
+        description: phandles to the parent clocks of the clock driver
+        minItems: 2
+        maxItems: 3
+
+      '#clock-cells':
+        enum: [0, 1]
+
+      clock-names:
+        minItems: 2
+        maxItems: 3
 
 required:
   - compatible
@@ -90,6 +109,76 @@ required:
 
 additionalProperties: false
 
+# Clocks should be specified either on the parent node or on the child node
+oneOf:
+  - required:
+      - clock-controller
+    properties:
+      clocks: false
+      clock-names: false
+      '#clock-cells': false
+  - properties:
+      clock-controller: false
+
+$defs:
+  msm8916-apcs-clock-controller:
+    properties:
+      clocks:
+        items:
+          - description: primary pll parent of the clock driver
+          - description: auxiliary parent
+      clock-names:
+        items:
+          - const: pll
+          - const: aux
+      '#clock-cells':
+        const: 0
+
+  msm8939-apcs-clock-controller:
+    properties:
+      clocks:
+        items:
+          - description: primary pll parent of the clock driver
+          - description: auxiliary parent
+          - description: reference clock
+      clock-names:
+        items:
+          - const: pll
+          - const: aux
+          - const: ref
+      '#clock-cells':
+        const: 0
+
+  sdx55-apcs-clock-controller:
+    properties:
+      clocks:
+        items:
+          - description: reference clock
+          - description: primary pll parent of the clock driver
+          - description: auxiliary parent
+      clock-names:
+        items:
+          - const: ref
+          - const: pll
+          - const: aux
+      '#clock-cells':
+        const: 0
+
+  ipq6018-apcs-clock-controller:
+    properties:
+      clocks:
+        items:
+          - description: primary pll parent of the clock driver
+          - description: XO clock
+          - description: GCC GPLL0 clock source
+      clock-names:
+        items:
+          - const: pll
+          - const: xo
+          - const: gpll0
+      '#clock-cells':
+        const: 1
+
 allOf:
   - if:
       properties:
@@ -98,15 +187,10 @@ allOf:
             enum:
               - qcom,msm8916-apcs-kpss-global
     then:
+      $ref: "#/$defs/msm8916-apcs-clock-controller"
       properties:
-        clocks:
-          items:
-            - description: primary pll parent of the clock driver
-            - description: auxiliary parent
-        clock-names:
-          items:
-            - const: pll
-            - const: aux
+        clock-controller:
+          $ref: "#/$defs/msm8916-apcs-clock-controller"
 
   - if:
       properties:
@@ -115,17 +199,10 @@ allOf:
             enum:
               - qcom,msm8939-apcs-kpss-global
     then:
+      $ref: "#/$defs/msm8939-apcs-clock-controller"
       properties:
-        clocks:
-          items:
-            - description: primary pll parent of the clock driver
-            - description: auxiliary parent
-            - description: reference clock
-        clock-names:
-          items:
-            - const: pll
-            - const: aux
-            - const: ref
+        clock-controller:
+          $ref: "#/$defs/msm8939-apcs-clock-controller"
 
   - if:
       properties:
@@ -134,17 +211,10 @@ allOf:
             enum:
               - qcom,sdx55-apcs-gcc
     then:
+      $ref: "#/$defs/sdx55-apcs-clock-controller"
       properties:
-        clocks:
-          items:
-            - description: reference clock
-            - description: primary pll parent of the clock driver
-            - description: auxiliary parent
-        clock-names:
-          items:
-            - const: ref
-            - const: pll
-            - const: aux
+        clock-controller:
+          $ref: "#/$defs/sdx55-apcs-clock-controller"
 
   - if:
       properties:
@@ -153,17 +223,10 @@ allOf:
             enum:
               - qcom,ipq6018-apcs-apps-global
     then:
+      $ref: "#/$defs/ipq6018-apcs-clock-controller"
       properties:
-        clocks:
-          items:
-            - description: primary pll parent of the clock driver
-            - description: XO clock
-            - description: GCC GPLL0 clock source
-        clock-names:
-          items:
-            - const: pll
-            - const: xo
-            - const: gpll0
+        clock-controller:
+          $ref: "#/$defs/ipq6018-apcs-clock-controller"
 
   - if:
       properties:
@@ -179,19 +242,7 @@ allOf:
       properties:
         clocks: false
         clock-names: false
-
-  - if:
-      properties:
-        compatible:
-          contains:
-            enum:
-              - qcom,ipq6018-apcs-apps-global
-    then:
-      properties:
-        '#clock-cells':
-          const: 1
-    else:
-      properties:
+        clock-controller: false
         '#clock-cells':
           const: 0
 
@@ -216,6 +267,23 @@ examples:
     };
 
   # Example apcs with qcs404
+  - |
+    #define GCC_APSS_AHB_CLK_SRC  1
+    #define GCC_GPLL0_AO_OUT_MAIN 123
+    mailbox@b011000 {
+        compatible = "qcom,qcs404-apcs-apps-global",
+                     "qcom,msm8916-apcs-kpss-global", "syscon";
+        reg = <0x0b011000 0x1000>;
+        #mbox-cells = <1>;
+
+        apcs_clk: clock-controller {
+          clocks = <&apcs_hfpll>, <&gcc GCC_GPLL0_AO_OUT_MAIN>;
+          clock-names = "pll", "aux";
+          #clock-cells = <0>;
+        };
+    };
+
+  # Example apcs with qcs404 (deprecated: use clock-controller subnode)
   - |
     #define GCC_APSS_AHB_CLK_SRC  1
     #define GCC_GPLL0_AO_OUT_MAIN 123
diff --git a/Bindings/mailbox/sophgo,cv1800b-mailbox.yaml b/Bindings/mailbox/sophgo,cv1800b-mailbox.yaml
new file mode 100644 (file)
index 0000000..24e126b
--- /dev/null
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mailbox/sophgo,cv1800b-mailbox.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo CV1800/SG2000 mailbox controller
+
+maintainers:
+  - Yuntao Dai <d1581209858@live.com>
+  - Junhui Liu <junhui.liu@pigmoral.tech>
+
+description:
+  Mailboxes integrated in Sophgo CV1800/SG2000 SoCs have 8 channels, each
+  shipping an 8-byte FIFO. Any processor can write to an arbitrary channel
+  and raise interrupts to receivers. Sending messages to itself is also
+  supported.
+
+properties:
+  compatible:
+    const: sophgo,cv1800b-mailbox
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  "#mbox-cells":
+    const: 2
+    description: |
+      <&phandle channel target>
+      phandle : Label name of mailbox controller
+      channel : 0-7, Channel index
+      target  : 0-3, Target processor ID
+
+      Sophgo CV1800/SG2000 SoCs include the following processors, numbered as:
+      <0> Cortex-A53 (Only available on CV181X/SG200X)
+      <1> C906B
+      <2> C906L
+      <3> 8051
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - "#mbox-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    mailbox@1900000 {
+        compatible = "sophgo,cv1800b-mailbox";
+        reg = <0x01900000 0x1000>;
+        interrupts = <101 IRQ_TYPE_LEVEL_HIGH>;
+        #mbox-cells = <2>;
+    };
index b3d6db9226937090af558a84eb9f3bd142bead39..1aa5775ba2bcea5fa97f13fc2dccb28d2ceb6c85 100644 (file)
@@ -110,7 +110,7 @@ examples:
         reg = <0x01cb4000 0x1000>;
         interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
         clocks = <&ccu CLK_BUS_CSI>,
-                 <&ccu CLK_CSI1_SCLK>,
+                 <&ccu CLK_CSI_SCLK>,
                  <&ccu CLK_DRAM_CSI>;
         clock-names = "bus",
                       "mod",
index a61a76bb611cd96695e5e39418574e69fd838b67..3ea4a4290f23dec3de2398cd2d427a2c9bd1e1f7 100644 (file)
@@ -79,7 +79,7 @@ examples:
         reg = <0x01cb8000 0x1000>;
         interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
         clocks = <&ccu CLK_BUS_CSI>,
-             <&ccu CLK_CSI1_SCLK>,
+             <&ccu CLK_CSI_SCLK>,
              <&ccu CLK_DRAM_CSI>;
         clock-names = "bus", "mod", "ram";
         resets = <&ccu RST_BUS_CSI>;
index 54e15ab8a7f545a298536e53c446cb0d6f92a202..627b28e943545e998f84db7f6e6c07892eb78a8b 100644 (file)
@@ -103,7 +103,7 @@ examples:
         reg = <0x01cb1000 0x1000>;
         interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
         clocks = <&ccu CLK_BUS_CSI>,
-                 <&ccu CLK_CSI1_SCLK>;
+                 <&ccu CLK_CSI_SCLK>;
         clock-names = "bus", "mod";
         resets = <&ccu RST_BUS_CSI>;
 
diff --git a/Bindings/media/amlogic,c3-isp.yaml b/Bindings/media/amlogic,c3-isp.yaml
new file mode 100644 (file)
index 0000000..123bf46
--- /dev/null
@@ -0,0 +1,88 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/amlogic,c3-isp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amlogic C3 Image Signal Processing Unit
+
+maintainers:
+  - Keke Li <keke.li@amlogic.com>
+
+description:
+  Amlogic ISP is the RAW image processing module
+  and supports three channels image output.
+
+properties:
+  compatible:
+    enum:
+      - amlogic,c3-isp
+
+  reg:
+    maxItems: 1
+
+  reg-names:
+    items:
+      - const: isp
+
+  power-domains:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: vapb
+      - const: isp0
+
+  interrupts:
+    maxItems: 1
+
+  port:
+    $ref: /schemas/graph.yaml#/properties/port
+    description: input port node.
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - power-domains
+  - clocks
+  - clock-names
+  - interrupts
+  - port
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/amlogic,c3-peripherals-clkc.h>
+    #include <dt-bindings/power/amlogic,c3-pwrc.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        isp: isp@ff000000 {
+            compatible = "amlogic,c3-isp";
+            reg = <0x0 0xff000000 0x0 0xf000>;
+            reg-names = "isp";
+            power-domains = <&pwrc PWRC_C3_ISP_TOP_ID>;
+            clocks = <&clkc_periphs CLKID_VAPB>,
+                     <&clkc_periphs CLKID_ISP0>;
+            clock-names = "vapb", "isp0";
+            assigned-clocks = <&clkc_periphs CLKID_VAPB>,
+                              <&clkc_periphs CLKID_ISP0>;
+            assigned-clock-rates = <0>, <400000000>;
+            interrupts = <GIC_SPI 145 IRQ_TYPE_EDGE_RISING>;
+
+            port {
+                c3_isp_in: endpoint {
+                    remote-endpoint = <&c3_adap_out>;
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/media/amlogic,c3-mipi-adapter.yaml b/Bindings/media/amlogic,c3-mipi-adapter.yaml
new file mode 100644 (file)
index 0000000..ba43bc6
--- /dev/null
@@ -0,0 +1,111 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/amlogic,c3-mipi-adapter.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amlogic C3 MIPI adapter receiver
+
+maintainers:
+  - Keke Li <keke.li@amlogic.com>
+
+description:
+  MIPI adapter is used to convert the MIPI CSI-2 data
+  into an ISP supported data format.
+
+properties:
+  compatible:
+    enum:
+      - amlogic,c3-mipi-adapter
+
+  reg:
+    maxItems: 3
+
+  reg-names:
+    items:
+      - const: top
+      - const: fd
+      - const: rd
+
+  power-domains:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: vapb
+      - const: isp0
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: input port node.
+
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: output port node.
+
+    required:
+      - port@0
+      - port@1
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - power-domains
+  - clocks
+  - clock-names
+  - ports
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/amlogic,c3-peripherals-clkc.h>
+    #include <dt-bindings/power/amlogic,c3-pwrc.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        adap: adap@ff010000 {
+            compatible = "amlogic,c3-mipi-adapter";
+            reg = <0x0 0xff010000 0x0 0x100>,
+                  <0x0 0xff01b000 0x0 0x100>,
+                  <0x0 0xff01d000 0x0 0x200>;
+            reg-names = "top", "fd", "rd";
+            power-domains = <&pwrc PWRC_C3_ISP_TOP_ID>;
+            clocks = <&clkc_periphs CLKID_VAPB>,
+                     <&clkc_periphs CLKID_ISP0>;
+            clock-names = "vapb", "isp0";
+            assigned-clocks = <&clkc_periphs CLKID_VAPB>,
+                              <&clkc_periphs CLKID_ISP0>;
+            assigned-clock-rates = <0>, <400000000>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+                    c3_adap_in: endpoint {
+                        remote-endpoint = <&c3_mipi_csi_out>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+                    c3_adap_out: endpoint {
+                        remote-endpoint = <&c3_isp_in>;
+                    };
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/media/amlogic,c3-mipi-csi2.yaml b/Bindings/media/amlogic,c3-mipi-csi2.yaml
new file mode 100644 (file)
index 0000000..b0129be
--- /dev/null
@@ -0,0 +1,127 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/amlogic,c3-mipi-csi2.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Amlogic C3 MIPI CSI-2 receiver
+
+maintainers:
+  - Keke Li <keke.li@amlogic.com>
+
+description:
+  MIPI CSI-2 receiver contains CSI-2 RX PHY and host controller.
+  It receives the MIPI data from the image sensor and sends MIPI data
+  to MIPI adapter.
+
+properties:
+  compatible:
+    enum:
+      - amlogic,c3-mipi-csi2
+
+  reg:
+    maxItems: 3
+
+  reg-names:
+    items:
+      - const: aphy
+      - const: dphy
+      - const: host
+
+  power-domains:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: vapb
+      - const: phy0
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: input port node, connected to sensor.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+            required:
+              - data-lanes
+
+      port@1:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: output port node
+
+    required:
+      - port@0
+      - port@1
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - power-domains
+  - clocks
+  - clock-names
+  - ports
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/amlogic,c3-peripherals-clkc.h>
+    #include <dt-bindings/power/amlogic,c3-pwrc.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        csi: csi@ff018000 {
+            compatible = "amlogic,c3-mipi-csi2";
+            reg = <0x0 0xff018000 0x0 0x400>,
+                  <0x0 0xff019000 0x0 0x300>,
+                  <0x0 0xff01a000 0x0 0x100>;
+            reg-names = "aphy", "dphy", "host";
+            power-domains = <&pwrc PWRC_C3_MIPI_ISP_WRAP_ID>;
+            clocks =  <&clkc_periphs CLKID_VAPB>,
+                      <&clkc_periphs CLKID_CSI_PHY0>;
+            clock-names = "vapb", "phy0";
+            assigned-clocks = <&clkc_periphs CLKID_VAPB>,
+                              <&clkc_periphs CLKID_CSI_PHY0>;
+            assigned-clock-rates = <0>, <200000000>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+                    c3_mipi_csi_in: endpoint {
+                        remote-endpoint = <&imx290_out>;
+                        data-lanes = <1 2 3 4>;
+                    };
+                };
+
+                port@1 {
+                    reg = <1>;
+                    c3_mipi_csi_out: endpoint {
+                        remote-endpoint = <&c3_adap_in>;
+                    };
+                };
+            };
+        };
+    };
+...
index a6b73498bc217a2e884e31af91e9d8845c9b1d76..4b46aa755ccd31d0ca8b2004a1d6345c27ed330d 100644 (file)
@@ -14,10 +14,16 @@ allOf:
 
 properties:
   compatible:
-    enum:
-      - nvidia,tegra114-cec
-      - nvidia,tegra124-cec
-      - nvidia,tegra210-cec
+    oneOf:
+      - enum:
+          - nvidia,tegra114-cec
+          - nvidia,tegra124-cec
+          - nvidia,tegra210-cec
+      - items:
+          - enum:
+              - nvidia,tegra186-cec
+              - nvidia,tegra194-cec
+          - const: nvidia,tegra210-cec
 
   clocks:
     maxItems: 1
diff --git a/Bindings/media/fsl,imx-capture-subsystem.yaml b/Bindings/media/fsl,imx-capture-subsystem.yaml
new file mode 100644 (file)
index 0000000..25e65a3
--- /dev/null
@@ -0,0 +1,37 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/fsl,imx-capture-subsystem.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX Media Video Device
+
+description:
+  This is the media controller node for video capture support. It is a
+  virtual device that lists the camera serial interface nodes that the
+  media device will control
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx-capture-subsystem
+
+  ports:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description:
+      Should contain a list of phandles pointing to camera
+      sensor interface ports of IPU devices.
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    capture-subsystem {
+        compatible = "fsl,imx-capture-subsystem";
+        ports = <&ipu1_csi0>, <&ipu1_csi1>;
+    };
diff --git a/Bindings/media/fsl,imx6-mipi-csi2.yaml b/Bindings/media/fsl,imx6-mipi-csi2.yaml
new file mode 100644 (file)
index 0000000..65255f5
--- /dev/null
@@ -0,0 +1,143 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/fsl,imx6-mipi-csi2.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MIPI CSI-2 Receiver core in the i.MX SoC
+
+description:
+  This is the device node for the MIPI CSI-2 Receiver core in the i.MX
+  SoC. This is a Synopsys Designware MIPI CSI-2 host controller core
+  combined with a D-PHY core mixed into the same register block. In
+  addition this device consists of an i.MX-specific "CSI2IPU gasket"
+  glue logic, also controlled from the same register block. The CSI2IPU
+  gasket demultiplexes the four virtual channel streams from the host
+  controller's 32-bit output image bus onto four 16-bit parallel busses
+  to the i.MX IPU CSIs.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx6-mipi-csi2
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: hsi_tx (the D-PHY clock)
+      - description: video_27m (D-PHY PLL reference clock)
+      - description: eim_podf;
+
+  clock-names:
+    items:
+      - const: dphy
+      - const: ref
+      - const: pix
+
+  interrupts:
+    items:
+      - description: CSI-2 ERR1 irq
+      - description: CSI-2 ERR2 irq
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  port@0:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description:
+      Input port node, single endpoint describing the CSI-2 transmitter.
+
+    properties:
+      endpoint:
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false
+
+        properties:
+          clock-lanes:
+            const: 0
+
+          data-lanes:
+            minItems: 1
+            items:
+              - const: 1
+              - const: 2
+              - const: 3
+              - const: 4
+
+        required:
+          - data-lanes
+
+patternProperties:
+  '^port@[1-4]$':
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description:
+      ports 1 through 4 are output ports connecting with parallel bus sink
+      endpoint nodes and correspond to the four MIPI CSI-2 virtual channel
+      outputs.
+
+    properties:
+      endpoint@0:
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false
+
+      endpoint@1:
+        $ref: video-interfaces.yaml#
+        unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/imx6qdl-clock.h>
+
+    mipi@21dc000 {
+        compatible = "fsl,imx6-mipi-csi2";
+        reg = <0x021dc000 0x4000>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        clocks = <&clks IMX6QDL_CLK_HSI_TX>,
+                 <&clks IMX6QDL_CLK_VIDEO_27M>,
+                 <&clks IMX6QDL_CLK_EIM_PODF>;
+        clock-names = "dphy", "ref", "pix";
+
+        port@0 {
+            reg = <0>;
+
+            endpoint {
+                remote-endpoint = <&ov5640_to_mipi_csi2>;
+                clock-lanes = <0>;
+                data-lanes = <1 2>;
+            };
+        };
+
+        port@1 {
+            reg = <1>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            endpoint@0 {
+                reg = <0>;
+                remote-endpoint = <&ipu1_csi0_mux_from_mipi_vc0>;
+            };
+
+            endpoint@1 {
+                reg = <1>;
+                remote-endpoint = <&ipu1_csi1_mux_from_mipi_vc0>;
+            };
+        };
+    };
diff --git a/Bindings/media/i2c/ad5820.txt b/Bindings/media/i2c/ad5820.txt
deleted file mode 100644 (file)
index 5764cbe..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-* Analog Devices AD5820 autofocus coil
-
-Required Properties:
-
-  - compatible: Must contain one of:
-               - "adi,ad5820"
-               - "adi,ad5821"
-               - "adi,ad5823"
-
-  - reg: I2C slave address
-
-  - VANA-supply: supply of voltage for VANA pin
-
-Optional properties:
-
-   - enable-gpios : GPIO spec for the XSHUTDOWN pin. The XSHUTDOWN signal is
-active low, a high level on the pin enables the device.
-
-Example:
-
-       ad5820: coil@c {
-               compatible = "adi,ad5820";
-               reg = <0x0c>;
-
-               VANA-supply = <&vaux4>;
-               enable-gpios = <&msmgpio 26 GPIO_ACTIVE_HIGH>;
-       };
-
diff --git a/Bindings/media/i2c/adi,ad5820.yaml b/Bindings/media/i2c/adi,ad5820.yaml
new file mode 100644 (file)
index 0000000..0c8f24f
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/adi,ad5820.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices AD5820 autofocus coil
+
+maintainers:
+  - Pavel Machek <pavel@ucw.cz>
+
+description:
+  The AD5820 is a current sink driver designed for precise control of
+  voice coil motors (VCMs) in camera autofocus systems.
+
+properties:
+  compatible:
+    enum:
+      - adi,ad5820
+      - adi,ad5821
+      - adi,ad5823
+
+  reg:
+    maxItems: 1
+
+  enable-gpios:
+    maxItems: 1
+    description:
+      GPIO spec for the XSHUTDOWN pin. The XSHUTDOWN signal is active low,
+      a high level on the pin enables the device.
+
+  VANA-supply:
+    description: supply of voltage for VANA pin
+
+required:
+  - compatible
+  - reg
+  - VANA-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        coil@c {
+            compatible = "adi,ad5820";
+            reg = <0x0c>;
+
+            enable-gpios = <&msmgpio 26 GPIO_ACTIVE_HIGH>;
+            VANA-supply = <&vaux4>;
+        };
+    };
similarity index 98%
rename from Bindings/media/i2c/adv7180.yaml
rename to Bindings/media/i2c/adi,adv7180.yaml
index 9ee1483775f60905d300fe909f10052a00183fbe..dee8ce7cb7ba2e9e8c3d6018c164f63bb612ad1b 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/media/i2c/adv7180.yaml#
+$id: http://devicetree.org/schemas/media/i2c/adi,adv7180.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Analog Devices ADV7180 analog video decoder family
similarity index 98%
rename from Bindings/media/i2c/adv748x.yaml
rename to Bindings/media/i2c/adi,adv748x.yaml
index d6353081402bed849467e2cd003d80fe0e9d2734..254987350321bcff7ef255d2b4decdf5fa26bce7 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/media/i2c/adv748x.yaml#
+$id: http://devicetree.org/schemas/media/i2c/adi,adv748x.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Analog Devices ADV748X video decoder with HDMI receiver
similarity index 98%
rename from Bindings/media/i2c/adv7604.yaml
rename to Bindings/media/i2c/adi,adv7604.yaml
index 7589d377c686450bb0065de94091f9f6678b9413..6c403003cdda1ea0ac33a2b6be6d7477fb5fd44a 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/media/i2c/adv7604.yaml#
+$id: http://devicetree.org/schemas/media/i2c/adi,adv7604.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Analog Devices ADV7604/10/11/12 video decoder with HDMI receiver
diff --git a/Bindings/media/i2c/ovti,ov02e10.yaml b/Bindings/media/i2c/ovti,ov02e10.yaml
new file mode 100644 (file)
index 0000000..03d476b
--- /dev/null
@@ -0,0 +1,152 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright (c) 2025 Linaro Ltd.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/ovti,ov02e10.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Omnivision OV02E10 CMOS Sensor
+
+maintainers:
+  - Bryan O'Donoghue <bryan.odonoghue@linaro.org>
+
+description: |
+  The Omnivision OV02E10 and OV02C10 sensors are 2 megapixel, CMOS image sensors which support:
+  - Automatic black level calibration (ABLC)
+  - Programmable controls for frame rate, mirror and flip, binning, cropping
+    and windowing
+  - OVO2C10
+    - 10 bit RAW Bayer 1920x1080 60 fps 2-lane @ 800 Mbps/lane
+    - 10 bit RAW Bayer 1920x1080 60 fps 1-lane @ 1500 Mbps/lane
+    - 10 bit RAW Bayer 1280x720 60 fps cropped 1-lane @ 960 Mbps/lane
+    - 10 bit RGB/BW 640x480 60 fps bin2 or skip2 1-lane @ 800 Mbps/lane
+    - 10 bit RGB/BW 480x270 60 fps bin4 or skip4 1-lane @ 800 Mbps/lane
+  - OV02E10
+    - 10 bit RAW Bayer 1920x1088 60 fps 2-lane @ 720 Mbps/lane
+    - 10 bit RAW Bayer 1280x1080 60 fps 2-lane @ 720 Mbps/lane
+    - 10 bit Quad Bayer 960x540 60 fps 2-lane 360 Mbps/lane
+    - 8 bit Quad Bayer 480x270 1/3/5/10 fps sub2 288 Mbps/lane
+    - 8 bit Quad Bayer 232x132 1/3/5/10 fps sub4 144 Mbps/lane
+  - Dynamic defect pixel cancellation
+  - Standard SCCB command interface
+
+allOf:
+  - $ref: /schemas/media/video-interface-devices.yaml#
+
+properties:
+  compatible:
+    enum:
+      - ovti,ov02c10
+      - ovti,ov02e10
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  avdd-supply:
+    description: Analogue circuit voltage supply.
+
+  dovdd-supply:
+    description: I/O circuit voltage supply.
+
+  dvdd-supply:
+    description: Digital circuit voltage supply.
+
+  reset-gpios:
+    description: Active low GPIO connected to XSHUTDOWN pad of the sensor.
+
+  port:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    additionalProperties: false
+
+    properties:
+      endpoint:
+        $ref: /schemas/media/video-interfaces.yaml#
+        additionalProperties: false
+
+        properties:
+          data-lanes:
+            items:
+              - const: 1
+              - const: 2
+          link-frequencies: true
+          remote-endpoint: true
+
+        required:
+          - data-lanes
+          - link-frequencies
+          - remote-endpoint
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - port
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        ov02e10: camera@10 {
+            compatible = "ovti,ov02e10";
+            reg = <0x10>;
+
+            reset-gpios = <&tlmm 237 GPIO_ACTIVE_LOW>;
+            pinctrl-names = "default";
+            pinctrl-0 = <&cam_rgb_defaultt>;
+
+            clocks = <&ov02e10_clk>;
+
+            assigned-clocks = <&ov02e10_clk>;
+            assigned-clock-parents = <&ov02e10_clk_parent>;
+            assigned-clock-rates = <19200000>;
+
+            avdd-supply = <&vreg_l7b_2p8>;
+            dvdd-supply = <&vreg_l7b_1p8>;
+            dovdd-supply = <&vreg_l3m_1p8>;
+
+            port {
+                ov02e10_ep: endpoint {
+                    remote-endpoint = <&csiphy4_ep>;
+                    data-lanes = <1 2>;
+                    link-frequencies = /bits/ 64 <400000000>;
+                };
+            };
+        };
+
+        ov02c10: camera@36 {
+            compatible = "ovti,ov02c10";
+            reg = <0x36>;
+
+            reset-gpios = <&tlmm 237 GPIO_ACTIVE_LOW>;
+            pinctrl-names = "default";
+            pinctrl-0 = <&cam_rgb_defaultt>;
+
+            clocks = <&ov02c10_clk>;
+
+            assigned-clocks = <&ov02c10_clk>;
+            assigned-clock-parents = <&ov02c10_clk_parent>;
+            assigned-clock-rates = <19200000>;
+
+            avdd-supply = <&vreg_l7b_2p8>;
+            dvdd-supply = <&vreg_l7b_1p8>;
+            dovdd-supply = <&vreg_l3m_1p8>;
+
+            port {
+                ov02c10_ep: endpoint {
+                    remote-endpoint = <&csiphy4_ep>;
+                    data-lanes = <1 2>;
+                    link-frequencies = /bits/ 64 <400000000>;
+                };
+            };
+        };
+    };
+...
similarity index 94%
rename from Bindings/media/i2c/imx219.yaml
rename to Bindings/media/i2c/sony,imx219.yaml
index 07d088cf66e0bde362b12d3494e5c91a1dd96bf3..38c3759bcd9f56d936bda52a53b4287d7999e125 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas/media/i2c/imx219.yaml#
+$id: http://devicetree.org/schemas/media/i2c/sony,imx219.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Sony 1/4.0-Inch 8Mpixel CMOS Digital Image Sensor
@@ -16,6 +16,9 @@ description: |-
   Image data is sent through MIPI CSI-2, which is configured as either 2 or
   4 data lanes.
 
+allOf:
+  - $ref: /schemas/media/video-interface-devices.yaml#
+
 properties:
   compatible:
     const: sony,imx219
@@ -79,7 +82,7 @@ required:
   - VDDL-supply
   - port
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
index fa69bd21c8da40035ba4e83cfeea406abe3de3b9..990acf89af8fc4833ea88961586b8b9a8c7fca65 100644 (file)
@@ -136,7 +136,7 @@ examples:
             port {
                 imx290_ep: endpoint {
                     data-lanes = <1 2 3 4>;
-                    link-frequencies = /bits/ 64 <445500000>;
+                    link-frequencies = /bits/ 64 <222750000 148500000>;
                     remote-endpoint = <&csiphy0_ep>;
                 };
             };
index 34962c5c70065efacd77ac6a948bb421328cd783..7c11e871dca67b2c1d1bcc40344f684fb47a3d06 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Sony IMX415 CMOS Image Sensor
 
 maintainers:
-  - Michael Riesch <michael.riesch@wolfvision.net>
+  - Michael Riesch <michael.riesch@collabora.com>
 
 description: |-
   The Sony IMX415 is a diagonal 6.4 mm (Type 1/2.8) CMOS active pixel type
diff --git a/Bindings/media/i2c/st,vd55g1.yaml b/Bindings/media/i2c/st,vd55g1.yaml
new file mode 100644 (file)
index 0000000..3c071e6
--- /dev/null
@@ -0,0 +1,133 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright (c) 2025 STMicroelectronics SA.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/st,vd55g1.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics VD55G1 Global Shutter Image Sensor
+
+maintainers:
+  - Benjamin Mugnier <benjamin.mugnier@foss.st.com>
+  - Sylvain Petinot <sylvain.petinot@foss.st.com>
+
+description: |-
+ The STMicroelectronics VD55G1 is a global shutter image sensor with an active
+ array size of 804H x 704V. It is programmable through I2C interface. The I2C
+ address is fixed to 0x10.
+
+ Image data is sent through MIPI CSI-2, which is configured as only 1 data
+ lane. The sensor provides 4 GPIOS that can be used for external LED signal
+ (synchronized with sensor integration periods).
+
+allOf:
+  - $ref: /schemas/media/video-interface-devices.yaml#
+
+properties:
+  compatible:
+    const: st,vd55g1
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  vcore-supply:
+    description: Digital core power supply (1.15V)
+
+  vddio-supply:
+    description: Digital IO power supply (1.8V)
+
+  vana-supply:
+    description: Analog power supply (2.8V)
+
+  reset-gpios:
+    description: Sensor reset active low GPIO (XSHUTDOWN)
+    maxItems: 1
+
+  st,leds:
+    description:
+      List sensor's GPIOs used to control strobe light sources during exposure
+      time. The numbers identify the sensor pin on which the illumination
+      system is connected. GPIOs are active-high.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 1
+    maxItems: 4
+    items:
+      minimum: 0
+      maximum: 3
+
+  port:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    additionalProperties: false
+
+    properties:
+      endpoint:
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false
+
+        properties:
+          data-lanes:
+            items:
+              - const: 1
+
+          link-frequencies:
+            maxItems: 1
+            items:
+              minimum: 125000000
+              maximum: 600000000
+
+          lane-polarities:
+            minItems: 1
+            maxItems: 2
+
+        required:
+          - data-lanes
+          - link-frequencies
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - vcore-supply
+  - vddio-supply
+  - vana-supply
+  - reset-gpios
+  - port
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        camera-sensor@10 {
+            compatible = "st,vd55g1";
+            reg = <0x10>;
+
+            clocks = <&camera_clk_12M>;
+
+            vcore-supply = <&camera_vcore_v1v15>;
+            vddio-supply = <&camera_vddio_v1v8>;
+            vana-supply = <&camera_vana_v2v8>;
+
+            reset-gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
+            st,leds = <2>;
+
+            orientation = <2>;
+            rotation = <0>;
+
+            port {
+                endpoint {
+                    data-lanes = <1>;
+                    link-frequencies = /bits/ 64 <600000000>;
+                    remote-endpoint = <&csiphy0_ep>;
+                };
+            };
+        };
+    };
diff --git a/Bindings/media/i2c/st,vd56g3.yaml b/Bindings/media/i2c/st,vd56g3.yaml
new file mode 100644 (file)
index 0000000..c6673b8
--- /dev/null
@@ -0,0 +1,139 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright (c) 2024 STMicroelectronics SA.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/i2c/st,vd56g3.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics VD56G3 Global Shutter Image Sensor
+
+maintainers:
+  - Benjamin Mugnier <benjamin.mugnier@foss.st.com>
+  - Sylvain Petinot <sylvain.petinot@foss.st.com>
+
+description: |-
+  The STMicroelectronics VD56G3 is a 1.5 M pixel global shutter image sensor
+  with an active array size of 1124 x 1364 (portrait orientation). It is
+  programmable through I2C, the address is fixed to 0x10. The sensor output is
+  available via CSI-2, which is configured as either 1 or 2 data lanes. The
+  sensor provides 8 GPIOS that can be used for external LED signal
+  (synchronized with sensor integration periods)
+
+allOf:
+  - $ref: /schemas/media/video-interface-devices.yaml#
+
+properties:
+  compatible:
+    enum:
+      - st,vd56g3
+      - st,vd66gy
+    description:
+      Two variants are availables; VD56G3 is a monochrome sensor while VD66GY
+      is a colour variant.
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  vcore-supply:
+    description: Digital core power supply (1.15V)
+
+  vddio-supply:
+    description: Digital IO power supply (1.8V)
+
+  vana-supply:
+    description: Analog power supply (2.8V)
+
+  reset-gpios:
+    description: Sensor reset active low GPIO (XSHUTDOWN)
+    maxItems: 1
+
+  st,leds:
+    description:
+      List sensor's GPIOs used to control strobe light sources during exposure
+      time. The numbers identify the sensor pin on which the illumination system
+      is connected. GPIOs are active-high.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    minItems: 1
+    maxItems: 8
+    items:
+      minimum: 0
+      maximum: 7
+
+  port:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    additionalProperties: false
+
+    properties:
+      endpoint:
+        $ref: /schemas/media/video-interfaces.yaml#
+        unevaluatedProperties: false
+
+        properties:
+          data-lanes:
+            minItems: 1
+            maxItems: 2
+            items:
+              enum: [1, 2]
+
+          link-frequencies:
+            maxItems: 1
+            items:
+              enum: [402000000, 750000000]
+
+          lane-polarities:
+            minItems: 1
+            maxItems: 3
+            description: Any lane can be inverted or not.
+
+        required:
+          - data-lanes
+          - link-frequencies
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - vcore-supply
+  - vddio-supply
+  - vana-supply
+  - reset-gpios
+  - port
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        camera-sensor@10 {
+            compatible = "st,vd56g3";
+            reg = <0x10>;
+
+            clocks = <&camera_clk_12M>;
+
+            vcore-supply = <&camera_vcore_v1v15>;
+            vddio-supply = <&camera_vddio_v1v8>;
+            vana-supply = <&camera_vana_v2v8>;
+
+            reset-gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
+            st,leds = <6>;
+
+            orientation = <2>;
+            rotation = <0>;
+
+            port {
+                endpoint {
+                    data-lanes = <1 2>;
+                    link-frequencies = /bits/ 64 <402000000>;
+                    remote-endpoint = <&csiphy0_ep>;
+                };
+            };
+        };
+    };
index 2030366994d18b695328194da1a7d95607de4371..2e129bf573b79e0ca8f25b4ec5fc6ea76c50abd7 100644 (file)
@@ -38,6 +38,13 @@ properties:
   '#clock-cells':
     const: 0
 
+  reg:
+    maxItems: 1
+    description:
+      The strap I2C address of the serializer. Can be used by the deserializer
+      to communicate over back-channel when the forward-channel is not yet
+      active.
+
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
 
@@ -81,51 +88,57 @@ examples:
   - |
     #include <dt-bindings/gpio/gpio.h>
 
-    serializer {
-      compatible = "ti,ds90ub953-q1";
+    link {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      serializer@18 {
+        compatible = "ti,ds90ub953-q1";
+        reg = <0x18>;
 
-      gpio-controller;
-      #gpio-cells = <2>;
+        gpio-controller;
+        #gpio-cells = <2>;
 
-      #clock-cells = <0>;
+        #clock-cells = <0>;
 
-      ports {
-        #address-cells = <1>;
-        #size-cells = <0>;
+        ports {
+          #address-cells = <1>;
+          #size-cells = <0>;
 
-        port@0 {
-          reg = <0>;
-          ub953_in: endpoint {
-            clock-lanes = <0>;
-            data-lanes = <1 2 3 4>;
-            remote-endpoint = <&sensor_out>;
+          port@0 {
+            reg = <0>;
+            ub953_in: endpoint {
+              clock-lanes = <0>;
+              data-lanes = <1 2 3 4>;
+              remote-endpoint = <&sensor_out>;
+            };
           };
-        };
 
-        port@1 {
-          reg = <1>;
-          endpoint {
-            remote-endpoint = <&deser_fpd_in>;
+          port@1 {
+            reg = <1>;
+            endpoint {
+              remote-endpoint = <&deser_fpd_in>;
+            };
           };
         };
-      };
 
-      i2c {
-        #address-cells = <1>;
-        #size-cells = <0>;
+        i2c {
+          #address-cells = <1>;
+          #size-cells = <0>;
 
-        sensor@1a {
-          compatible = "sony,imx274";
-          reg = <0x1a>;
+          sensor@1a {
+            compatible = "sony,imx274";
+            reg = <0x1a>;
 
-          reset-gpios = <&serializer 0 GPIO_ACTIVE_LOW>;
+            reset-gpios = <&serializer 0 GPIO_ACTIVE_LOW>;
 
-          clocks = <&serializer>;
-          clock-names = "inck";
+            clocks = <&serializer>;
+            clock-names = "inck";
 
-          port {
-            sensor_out: endpoint {
-              remote-endpoint = <&ub953_in>;
+            port {
+              sensor_out: endpoint {
+                remote-endpoint = <&ub953_in>;
+              };
             };
           };
         };
index 0b71e6f911a8835eb70ccf832888964288a6cac6..4dcbd2b039a58edfc57c5cc0bedceefdf158bf0c 100644 (file)
@@ -68,6 +68,12 @@ properties:
             description: The link number
             maxItems: 1
 
+          '#address-cells':
+            const: 1
+
+          '#size-cells':
+            const: 0
+
           i2c-alias:
             $ref: /schemas/types.yaml#/definitions/uint32
             description:
@@ -107,7 +113,8 @@ properties:
             maximum: 14
             description: Manual EQ level
 
-          serializer:
+        patternProperties:
+          '^serializer(@[0-9a-f]+)*$':
             type: object
             description: FPD-Link Serializer node
 
@@ -115,7 +122,6 @@ properties:
           - reg
           - i2c-alias
           - ti,rx-mode
-          - serializer
 
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
@@ -309,13 +315,17 @@ examples:
           /* Link 0 has DS90UB953 serializer and IMX274 sensor */
 
           link@0 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
             reg = <0>;
             i2c-alias = <0x44>;
 
             ti,rx-mode = <3>;
 
-            serializer1: serializer {
+            serializer1: serializer@30 {
               compatible = "ti,ds90ub953-q1";
+              reg = <0x30>;
 
               gpio-controller;
               #gpio-cells = <2>;
diff --git a/Bindings/media/imx.txt b/Bindings/media/imx.txt
deleted file mode 100644 (file)
index 77f4b0a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-Freescale i.MX Media Video Device
-=================================
-
-Video Media Controller node
----------------------------
-
-This is the media controller node for video capture support. It is a
-virtual device that lists the camera serial interface nodes that the
-media device will control.
-
-Required properties:
-- compatible : "fsl,imx-capture-subsystem";
-- ports      : Should contain a list of phandles pointing to camera
-               sensor interface ports of IPU devices
-
-example:
-
-capture-subsystem {
-       compatible = "fsl,imx-capture-subsystem";
-       ports = <&ipu1_csi0>, <&ipu1_csi1>;
-};
-
-
-mipi_csi2 node
---------------
-
-This is the device node for the MIPI CSI-2 Receiver core in the i.MX
-SoC. This is a Synopsys Designware MIPI CSI-2 host controller core
-combined with a D-PHY core mixed into the same register block. In
-addition this device consists of an i.MX-specific "CSI2IPU gasket"
-glue logic, also controlled from the same register block. The CSI2IPU
-gasket demultiplexes the four virtual channel streams from the host
-controller's 32-bit output image bus onto four 16-bit parallel busses
-to the i.MX IPU CSIs.
-
-Required properties:
-- compatible   : "fsl,imx6-mipi-csi2";
-- reg           : physical base address and length of the register set;
-- clocks       : the MIPI CSI-2 receiver requires three clocks: hsi_tx
-                 (the D-PHY clock), video_27m (D-PHY PLL reference
-                 clock), and eim_podf;
-- clock-names  : must contain "dphy", "ref", "pix";
-- port@*        : five port nodes must exist, containing endpoints
-                 connecting to the source and sink devices according to
-                 of_graph bindings. The first port is an input port,
-                 connecting with a MIPI CSI-2 source, and ports 1
-                 through 4 are output ports connecting with parallel
-                 bus sink endpoint nodes and correspond to the four
-                 MIPI CSI-2 virtual channel outputs.
-
-Optional properties:
-- interrupts   : must contain two level-triggered interrupts,
-                 in order: 100 and 101;
index 03f31b0090855e93b484db0903330c13ce51a104..40fda59fa8a804c2cbe19cd24ada5a596c4466d6 100644 (file)
@@ -16,8 +16,12 @@ description:
 
 properties:
   compatible:
-    enum:
-      - mediatek,mt8195-mdp3-fg
+    oneOf:
+      - enum:
+          - mediatek,mt8195-mdp3-fg
+      - items:
+          - const: mediatek,mt8188-mdp3-fg
+          - const: mediatek,mt8195-mdp3-fg
 
   reg:
     maxItems: 1
index d4609bba65787013baee1a48ef97774af8abb614..d9f926c20220d99a617da631fdb7182f032745e7 100644 (file)
@@ -16,8 +16,12 @@ description:
 
 properties:
   compatible:
-    enum:
-      - mediatek,mt8195-mdp3-hdr
+    oneOf:
+      - enum:
+          - mediatek,mt8195-mdp3-hdr
+      - items:
+          - const: mediatek,mt8188-mdp3-hdr
+          - const: mediatek,mt8195-mdp3-hdr
 
   reg:
     maxItems: 1
index f5676bec43266e11c6c27f5f13c4cfba16507a8f..8124c39d73e9a2d52e54987c541dfb4f6552a29d 100644 (file)
@@ -20,6 +20,7 @@ properties:
           - mediatek,mt8183-mdp3-rsz
       - items:
           - enum:
+              - mediatek,mt8188-mdp3-rsz
               - mediatek,mt8195-mdp3-rsz
           - const: mediatek,mt8183-mdp3-rsz
 
index d815bea29154b90967c4758986a571a097f165b9..1d8e7e202c42740bbae277bbad00a00f80f7d86f 100644 (file)
@@ -16,8 +16,12 @@ description:
 
 properties:
   compatible:
-    enum:
-      - mediatek,mt8195-mdp3-stitch
+    oneOf:
+      - enum:
+          - mediatek,mt8195-mdp3-stitch
+      - items:
+          - const: mediatek,mt8188-mdp3-stitch
+          - const: mediatek,mt8195-mdp3-stitch
 
   reg:
     maxItems: 1
index 14ea556d4f82a634410336a4b22b2b61c0ecaa95..6cff7c073ce479f8bd492d64ebc453f8146d94cb 100644 (file)
@@ -17,8 +17,12 @@ description:
 
 properties:
   compatible:
-    enum:
-      - mediatek,mt8195-mdp3-tcc
+    oneOf:
+      - enum:
+          - mediatek,mt8195-mdp3-tcc
+      - items:
+          - const: mediatek,mt8188-mdp3-tcc
+          - const: mediatek,mt8195-mdp3-tcc
 
   reg:
     maxItems: 1
index 8ab7f2d8e148fb771c0c0f0fc48c546ae425edeb..cdfa273247385a2b864bd6d65861f802c1c466f0 100644 (file)
@@ -16,8 +16,12 @@ description:
 
 properties:
   compatible:
-    enum:
-      - mediatek,mt8195-mdp3-tdshp
+    oneOf:
+      - enum:
+          - mediatek,mt8195-mdp3-tdshp
+      - items:
+          - const: mediatek,mt8188-mdp3-tdshp
+          - const: mediatek,mt8195-mdp3-tdshp
 
   reg:
     maxItems: 1
index 53a67933840256ed8220bc127443a904ed2402cd..b6269f4f9fd65f2ca336eb797e9c23557da2962a 100644 (file)
@@ -20,6 +20,7 @@ properties:
           - mediatek,mt8183-mdp3-wrot
       - items:
           - enum:
+              - mediatek,mt8188-mdp3-wrot
               - mediatek,mt8195-mdp3-wrot
           - const: mediatek,mt8183-mdp3-wrot
 
index 3469a43f00d41754493e1c8eaa0e92691b7781ec..7c8e0a905d89efc65801b1b40d25c27c1af34923 100644 (file)
@@ -93,6 +93,10 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -112,6 +116,10 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
index 8856fba385b1123d748199b46c5009c97700ad9b..6d776b0ca71140c0816b246dbaf41ef376205bba 100644 (file)
@@ -112,6 +112,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -131,6 +136,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -150,6 +160,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
index 644646de338a4e269952456687b3625865fc6155..a2025952fe95bfe632039caa929a5a177eb5cf2b 100644 (file)
@@ -115,6 +115,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -134,6 +139,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -153,6 +163,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -172,6 +187,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
index 83c4a5d95f020437bd160d6456850bc84a2cf5ff..bfd8b1ad473128c974bce84639cb0aff59d8c2cc 100644 (file)
@@ -18,7 +18,12 @@ allOf:
 
 properties:
   compatible:
-    const: qcom,sc7180-venus
+    oneOf:
+      - items:
+          - enum:
+              - qcom,qcs615-venus
+          - const: qcom,sc7180-venus
+      - const: qcom,sc7180-venus
 
   power-domains:
     minItems: 2
index 9936f01324177b0df0a531483d2c611d1f6cf250..d195f1bfb23d58b8a16eec06b9bf21ae8417f100 100644 (file)
@@ -143,6 +143,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
@@ -166,6 +171,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
@@ -189,6 +199,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
@@ -212,6 +227,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
index 68d8670557f550446a2f637a27e57b738ca910bc..6e6ad8390e4445b039b95ffb038069513b517810 100644 (file)
@@ -121,6 +121,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -140,6 +145,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -159,6 +169,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -178,6 +193,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
index 289494f561e582a06212be2a039cb326e1ceb74a..82bf4689d3300227786776d400620ddb60d73fc3 100644 (file)
@@ -108,6 +108,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -127,6 +132,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -146,6 +156,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
@@ -165,6 +180,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - data-lanes
 
index a372d991e6523809175cff998e2f3eb9884dd233..ebf68ff4ab961bffcd9ac89bc563949282489b45 100644 (file)
@@ -128,6 +128,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
@@ -151,6 +156,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
@@ -174,6 +184,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
@@ -197,6 +212,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
@@ -220,6 +240,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
@@ -243,6 +268,11 @@ properties:
                 minItems: 1
                 maxItems: 4
 
+              bus-type:
+                enum:
+                  - 1 # MEDIA_BUS_TYPE_CSI2_CPHY
+                  - 4 # MEDIA_BUS_TYPE_CSI2_DPHY
+
             required:
               - clock-lanes
               - data-lanes
index e424ea84c211f473a799481fd5463a16580187ed..c79bf2101812d83b99704f38b7348a9f728dff44 100644 (file)
@@ -14,12 +14,17 @@ description:
   The iris video processing unit is a video encode and decode accelerator
   present on Qualcomm platforms.
 
-allOf:
-  - $ref: qcom,venus-common.yaml#
-
 properties:
   compatible:
-    const: qcom,sm8550-iris
+    oneOf:
+      - items:
+          - enum:
+              - qcom,sa8775p-iris
+          - const: qcom,sm8550-iris
+      - enum:
+          - qcom,qcs8300-iris
+          - qcom,sm8550-iris
+          - qcom,sm8650-iris
 
   power-domains:
     maxItems: 4
@@ -49,11 +54,15 @@ properties:
       - const: video-mem
 
   resets:
-    maxItems: 1
+    minItems: 1
+    maxItems: 3
 
   reset-names:
+    minItems: 1
     items:
       - const: bus
+      - const: xo
+      - const: core
 
   iommus:
     maxItems: 2
@@ -75,6 +84,26 @@ required:
   - iommus
   - dma-coherent
 
+allOf:
+  - $ref: qcom,venus-common.yaml#
+  - if:
+      properties:
+        compatible:
+          enum:
+            - qcom,sm8650-iris
+    then:
+      properties:
+        resets:
+          minItems: 3
+        reset-names:
+          minItems: 3
+    else:
+      properties:
+        resets:
+          maxItems: 1
+        reset-names:
+          maxItems: 1
+
 unevaluatedProperties: false
 
 examples:
diff --git a/Bindings/media/qcom,x1e80100-camss.yaml b/Bindings/media/qcom,x1e80100-camss.yaml
new file mode 100644 (file)
index 0000000..113565c
--- /dev/null
@@ -0,0 +1,367 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/qcom,x1e80100-camss.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm X1E80100 Camera Subsystem (CAMSS)
+
+maintainers:
+  - Bryan O'Donoghue <bryan.odonoghue@linaro.org>
+
+description:
+  The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
+
+properties:
+  compatible:
+    const: qcom,x1e80100-camss
+
+  reg:
+    maxItems: 17
+
+  reg-names:
+    items:
+      - const: csid0
+      - const: csid1
+      - const: csid2
+      - const: csid_lite0
+      - const: csid_lite1
+      - const: csid_wrapper
+      - const: csiphy0
+      - const: csiphy1
+      - const: csiphy2
+      - const: csiphy4
+      - const: csitpg0
+      - const: csitpg1
+      - const: csitpg2
+      - const: vfe0
+      - const: vfe1
+      - const: vfe_lite0
+      - const: vfe_lite1
+
+  clocks:
+    maxItems: 29
+
+  clock-names:
+    items:
+      - const: camnoc_nrt_axi
+      - const: camnoc_rt_axi
+      - const: core_ahb
+      - const: cpas_ahb
+      - const: cpas_fast_ahb
+      - const: cpas_vfe0
+      - const: cpas_vfe1
+      - const: cpas_vfe_lite
+      - const: cphy_rx_clk_src
+      - const: csid
+      - const: csid_csiphy_rx
+      - const: csiphy0
+      - const: csiphy0_timer
+      - const: csiphy1
+      - const: csiphy1_timer
+      - const: csiphy2
+      - const: csiphy2_timer
+      - const: csiphy4
+      - const: csiphy4_timer
+      - const: gcc_axi_hf
+      - const: gcc_axi_sf
+      - const: vfe0
+      - const: vfe0_fast_ahb
+      - const: vfe1
+      - const: vfe1_fast_ahb
+      - const: vfe_lite
+      - const: vfe_lite_ahb
+      - const: vfe_lite_cphy_rx
+      - const: vfe_lite_csid
+
+  interrupts:
+    maxItems: 13
+
+  interrupt-names:
+    items:
+      - const: csid0
+      - const: csid1
+      - const: csid2
+      - const: csid_lite0
+      - const: csid_lite1
+      - const: csiphy0
+      - const: csiphy1
+      - const: csiphy2
+      - const: csiphy4
+      - const: vfe0
+      - const: vfe1
+      - const: vfe_lite0
+      - const: vfe_lite1
+
+  interconnects:
+    maxItems: 4
+
+  interconnect-names:
+    items:
+      - const: ahb
+      - const: hf_mnoc
+      - const: sf_mnoc
+      - const: sf_icp_mnoc
+
+  iommus:
+    maxItems: 8
+
+  power-domains:
+    items:
+      - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
+      - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
+      - description: Titan Top GDSC - Titan ISP Block, Global Distributed Switch Controller.
+
+  power-domain-names:
+    items:
+      - const: ife0
+      - const: ife1
+      - const: top
+
+  vdd-csiphy-0p8-supply:
+    description:
+      Phandle to a 0.8V regulator supply to a PHY.
+
+  vdd-csiphy-1p2-supply:
+    description:
+      Phandle to 1.8V regulator supply to a PHY.
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    description:
+      CSI input ports.
+
+    patternProperties:
+      "^port@[0-3]+$":
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+
+        description:
+          Input port for receiving CSI data from a CSIPHY.
+
+        properties:
+          endpoint:
+            $ref: video-interfaces.yaml#
+            unevaluatedProperties: false
+
+            properties:
+              clock-lanes:
+                maxItems: 1
+
+              data-lanes:
+                minItems: 1
+                maxItems: 4
+
+            required:
+              - clock-lanes
+              - data-lanes
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - clocks
+  - clock-names
+  - interrupts
+  - interrupt-names
+  - interconnects
+  - interconnect-names
+  - iommus
+  - power-domains
+  - power-domain-names
+  - vdd-csiphy-0p8-supply
+  - vdd-csiphy-1p2-supply
+  - ports
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/qcom,x1e80100-gcc.h>
+    #include <dt-bindings/clock/qcom,x1e80100-camcc.h>
+    #include <dt-bindings/interconnect/qcom,icc.h>
+    #include <dt-bindings/interconnect/qcom,x1e80100-rpmh.h>
+    #include <dt-bindings/power/qcom-rpmpd.h>
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        camss: isp@acb6000 {
+            compatible = "qcom,x1e80100-camss";
+
+            reg = <0 0x0acb7000 0 0x2000>,
+                  <0 0x0acb9000 0 0x2000>,
+                  <0 0x0acbb000 0 0x2000>,
+                  <0 0x0acc6000 0 0x1000>,
+                  <0 0x0acca000 0 0x1000>,
+                  <0 0x0acb6000 0 0x1000>,
+                  <0 0x0ace4000 0 0x1000>,
+                  <0 0x0ace6000 0 0x1000>,
+                  <0 0x0ace8000 0 0x1000>,
+                  <0 0x0acec000 0 0x4000>,
+                  <0 0x0acf6000 0 0x1000>,
+                  <0 0x0acf7000 0 0x1000>,
+                  <0 0x0acf8000 0 0x1000>,
+                  <0 0x0ac62000 0 0x4000>,
+                  <0 0x0ac71000 0 0x4000>,
+                  <0 0x0acc7000 0 0x2000>,
+                  <0 0x0accb000 0 0x2000>;
+
+            reg-names = "csid0",
+                        "csid1",
+                        "csid2",
+                        "csid_lite0",
+                        "csid_lite1",
+                        "csid_wrapper",
+                        "csiphy0",
+                        "csiphy1",
+                        "csiphy2",
+                        "csiphy4",
+                        "csitpg0",
+                        "csitpg1",
+                        "csitpg2",
+                        "vfe0",
+                        "vfe1",
+                        "vfe_lite0",
+                        "vfe_lite1";
+
+            clocks = <&camcc CAM_CC_CAMNOC_AXI_NRT_CLK>,
+                     <&camcc CAM_CC_CAMNOC_AXI_RT_CLK>,
+                     <&camcc CAM_CC_CORE_AHB_CLK>,
+                     <&camcc CAM_CC_CPAS_AHB_CLK>,
+                     <&camcc CAM_CC_CPAS_FAST_AHB_CLK>,
+                     <&camcc CAM_CC_CPAS_IFE_0_CLK>,
+                     <&camcc CAM_CC_CPAS_IFE_1_CLK>,
+                     <&camcc CAM_CC_CPAS_IFE_LITE_CLK>,
+                     <&camcc CAM_CC_CPHY_RX_CLK_SRC>,
+                     <&camcc CAM_CC_CSID_CLK>,
+                     <&camcc CAM_CC_CSID_CSIPHY_RX_CLK>,
+                     <&camcc CAM_CC_CSIPHY0_CLK>,
+                     <&camcc CAM_CC_CSI0PHYTIMER_CLK>,
+                     <&camcc CAM_CC_CSIPHY1_CLK>,
+                     <&camcc CAM_CC_CSI1PHYTIMER_CLK>,
+                     <&camcc CAM_CC_CSIPHY2_CLK>,
+                     <&camcc CAM_CC_CSI2PHYTIMER_CLK>,
+                     <&camcc CAM_CC_CSIPHY4_CLK>,
+                     <&camcc CAM_CC_CSI4PHYTIMER_CLK>,
+                     <&gcc GCC_CAMERA_HF_AXI_CLK>,
+                     <&gcc GCC_CAMERA_SF_AXI_CLK>,
+                     <&camcc CAM_CC_IFE_0_CLK>,
+                     <&camcc CAM_CC_IFE_0_FAST_AHB_CLK>,
+                     <&camcc CAM_CC_IFE_1_CLK>,
+                     <&camcc CAM_CC_IFE_1_FAST_AHB_CLK>,
+                     <&camcc CAM_CC_IFE_LITE_CLK>,
+                     <&camcc CAM_CC_IFE_LITE_AHB_CLK>,
+                     <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
+                     <&camcc CAM_CC_IFE_LITE_CSID_CLK>;
+
+            clock-names = "camnoc_nrt_axi",
+                          "camnoc_rt_axi",
+                          "core_ahb",
+                          "cpas_ahb",
+                          "cpas_fast_ahb",
+                          "cpas_vfe0",
+                          "cpas_vfe1",
+                          "cpas_vfe_lite",
+                          "cphy_rx_clk_src",
+                          "csid",
+                          "csid_csiphy_rx",
+                          "csiphy0",
+                          "csiphy0_timer",
+                          "csiphy1",
+                          "csiphy1_timer",
+                          "csiphy2",
+                          "csiphy2_timer",
+                          "csiphy4",
+                          "csiphy4_timer",
+                          "gcc_axi_hf",
+                          "gcc_axi_sf",
+                          "vfe0",
+                          "vfe0_fast_ahb",
+                          "vfe1",
+                          "vfe1_fast_ahb",
+                          "vfe_lite",
+                          "vfe_lite_ahb",
+                          "vfe_lite_cphy_rx",
+                          "vfe_lite_csid";
+
+           interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 466 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 468 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 359 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 478 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 479 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 122 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 467 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 469 IRQ_TYPE_EDGE_RISING>,
+                        <GIC_SPI 360 IRQ_TYPE_EDGE_RISING>;
+
+            interrupt-names = "csid0",
+                              "csid1",
+                              "csid2",
+                              "csid_lite0",
+                              "csid_lite1",
+                              "csiphy0",
+                              "csiphy1",
+                              "csiphy2",
+                              "csiphy4",
+                              "vfe0",
+                              "vfe1",
+                              "vfe_lite0",
+                              "vfe_lite1";
+
+            interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                             &config_noc SLAVE_CAMERA_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
+                            <&mmss_noc MASTER_CAMNOC_HF QCOM_ICC_TAG_ALWAYS
+                             &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                            <&mmss_noc MASTER_CAMNOC_SF QCOM_ICC_TAG_ALWAYS
+                             &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                            <&mmss_noc MASTER_CAMNOC_ICP QCOM_ICC_TAG_ALWAYS
+                             &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+
+            interconnect-names = "ahb",
+                                 "hf_mnoc",
+                                 "sf_mnoc",
+                                 "sf_icp_mnoc";
+
+            iommus = <&apps_smmu 0x800 0x60>,
+                     <&apps_smmu 0x860 0x60>,
+                     <&apps_smmu 0x1800 0x60>,
+                     <&apps_smmu 0x1860 0x60>,
+                     <&apps_smmu 0x18e0 0x00>,
+                     <&apps_smmu 0x1980 0x20>,
+                     <&apps_smmu 0x1900 0x00>,
+                     <&apps_smmu 0x19a0 0x20>;
+
+            power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
+                            <&camcc CAM_CC_IFE_1_GDSC>,
+                            <&camcc CAM_CC_TITAN_TOP_GDSC>;
+
+            power-domain-names = "ife0",
+                                 "ife1",
+                                 "top";
+
+            vdd-csiphy-0p8-supply = <&csiphy_0p8_supply>;
+            vdd-csiphy-1p2-supply = <&csiphy_1p2_supply>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                port@0 {
+                    reg = <0>;
+                    csiphy_ep0: endpoint {
+                        clock-lanes = <7>;
+                        data-lanes = <0 1>;
+                        remote-endpoint = <&sensor_ep>;
+                    };
+                };
+            };
+        };
+    };
index f94dacd962782287390cb3d2a151f1d180046549..7bf1266223e8204428f7c3e06accdf90f365625b 100644 (file)
@@ -30,14 +30,24 @@ properties:
               - renesas,r9a07g043u-fcpvd # RZ/G2UL
               - renesas,r9a07g044-fcpvd # RZ/G2{L,LC}
               - renesas,r9a07g054-fcpvd # RZ/V2L
+              - renesas,r9a09g057-fcpvd # RZ/V2H(P)
           - const: renesas,fcpv         # Generic FCP for VSP fallback
 
   reg:
     maxItems: 1
 
-  clocks: true
+  clocks:
+    minItems: 1
+    items:
+      - description: Main clock
+      - description: Register access clock
+      - description: Video clock
 
-  clock-names: true
+  clock-names:
+    items:
+      - const: aclk
+      - const: pclk
+      - const: vclk
 
   iommus:
     maxItems: 1
@@ -66,18 +76,11 @@ allOf:
               - renesas,r9a07g043u-fcpvd
               - renesas,r9a07g044-fcpvd
               - renesas,r9a07g054-fcpvd
+              - renesas,r9a09g057-fcpvd
     then:
       properties:
         clocks:
-          items:
-            - description: Main clock
-            - description: Register access clock
-            - description: Video clock
-        clock-names:
-          items:
-            - const: aclk
-            - const: pclk
-            - const: vclk
+          minItems: 3
       required:
         - clock-names
     else:
index c4de4555b7535a8bbaf0076e2a59b350d5a0b7da..d25e020f5e5ec6d4e965ebd80aba8e8e734647ef 100644 (file)
@@ -25,19 +25,55 @@ properties:
           - renesas,r8a779h0-isp # V4M
       - const: renesas,rcar-gen4-isp # Generic R-Car Gen4
   reg:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
+
+  reg-names:
+    minItems: 1
+    items:
+      - const: cs
+      - const: core
 
   interrupts:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
+
+  interrupt-names:
+    minItems: 1
+    items:
+      - const: cs
+      - const: core
 
   clocks:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: cs
+      - const: core
 
   power-domains:
     maxItems: 1
 
   resets:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
+
+  reset-names:
+    minItems: 1
+    items:
+      - const: cs
+      - const: core
+
+  renesas,vspx:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      A phandle to the companion VSPX responsible for the Streaming Bridge
+      functionality. The Streaming Bridge is responsible for feeding image
+      and configuration data to the ISP when operating in memory-to-memory
+      mode.
 
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
@@ -103,10 +139,14 @@ properties:
 required:
   - compatible
   - reg
+  - reg-names
   - interrupts
+  - interrupt-names
   - clocks
+  - clock-names
   - power-domains
   - resets
+  - reset-names
   - ports
 
 additionalProperties: false
@@ -119,11 +159,18 @@ examples:
 
     isp1: isp@fed20000 {
             compatible = "renesas,r8a779a0-isp", "renesas,rcar-gen4-isp";
-            reg = <0xfed20000 0x10000>;
-            interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
-            clocks = <&cpg CPG_MOD 613>;
+            reg = <0xfed20000 0x10000>, <0xfee00000 0x100000>;
+            reg-names = "cs", "core";
+            interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
+            interrupt-names = "cs", "core";
+            clocks = <&cpg CPG_MOD 613>, <&cpg CPG_MOD 17>;
+            clock-names = "cs", "core";
             power-domains = <&sysc R8A779A0_PD_A3ISP01>;
-            resets = <&cpg 613>;
+            resets = <&cpg 613>, <&cpg 17>;
+            reset-names = "cs", "core";
+
+            renesas,vspx = <&vspx1>;
 
             ports {
                     #address-cells = <1>;
index bc1245127025effc09b4a748cb98258f35755818..47e18690fa570305600131151975075f04875945 100644 (file)
@@ -17,24 +17,43 @@ description:
 
 properties:
   compatible:
-    items:
-      - enum:
-          - renesas,r9a07g043-cru       # RZ/G2UL
-          - renesas,r9a07g044-cru       # RZ/G2{L,LC}
-          - renesas,r9a07g054-cru       # RZ/V2L
-      - const: renesas,rzg2l-cru
+    oneOf:
+      - items:
+          - enum:
+              - renesas,r9a07g043-cru       # RZ/G2UL
+              - renesas,r9a07g044-cru       # RZ/G2{L,LC}
+              - renesas,r9a07g054-cru       # RZ/V2L
+          - const: renesas,rzg2l-cru
+      - const: renesas,r9a09g047-cru        # RZ/G3E
 
   reg:
     maxItems: 1
 
   interrupts:
-    maxItems: 3
+    oneOf:
+      - items:
+          - description: CRU Interrupt for image_conv
+          - description: CRU Interrupt for image_conv_err
+          - description: CRU AXI master error interrupt
+      - items:
+          - description: CRU Interrupt for image_conv
+          - description: CRU AXI master error interrupt
+          - description: CRU Video Data AXI Master Address 0 Write End interrupt
+          - description: CRU Statistics data AXI master addr 0 write end interrupt
+          - description: CRU Video statistics data AXI master addr 0 write end interrupt
 
   interrupt-names:
-    items:
-      - const: image_conv
-      - const: image_conv_err
-      - const: axi_mst_err
+    oneOf:
+      - items:
+          - const: image_conv
+          - const: image_conv_err
+          - const: axi_mst_err
+      - items:
+          - const: image_conv
+          - const: axi_mst_err
+          - const: vd_addr_wend
+          - const: sd_addr_wend
+          - const: vsd_addr_wend
 
   clocks:
     items:
@@ -109,6 +128,10 @@ allOf:
               - renesas,r9a07g054-cru
     then:
       properties:
+        interrupts:
+          maxItems: 3
+        interrupt-names:
+          maxItems: 3
         ports:
           required:
             - port@0
@@ -122,10 +145,30 @@ allOf:
               - renesas,r9a07g043-cru
     then:
       properties:
+        interrupts:
+          maxItems: 3
+        interrupt-names:
+          maxItems: 3
         ports:
           properties:
             port@0: false
+          required:
+            - port@1
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a09g047-cru
+    then:
+      properties:
+        interrupts:
+          minItems: 5
+        interrupt-names:
+          minItems: 5
+        ports:
+          properties:
+            port@0: false
           required:
             - port@1
 
index 7faa12fecd5bb5da4dd8044b9b35735dbbf6b398..c5c511c9f0db26f9a053f554abbf3c1d9c5dd1ed 100644 (file)
@@ -17,12 +17,17 @@ description:
 
 properties:
   compatible:
-    items:
-      - enum:
-          - renesas,r9a07g043-csi2       # RZ/G2UL
-          - renesas,r9a07g044-csi2       # RZ/G2{L,LC}
-          - renesas,r9a07g054-csi2       # RZ/V2L
-      - const: renesas,rzg2l-csi2
+    oneOf:
+      - items:
+          - enum:
+              - renesas,r9a07g043-csi2 # RZ/G2UL
+              - renesas,r9a07g044-csi2 # RZ/G2{L,LC}
+              - renesas,r9a07g054-csi2 # RZ/V2L
+          - const: renesas,rzg2l-csi2
+      - items:
+          - const: renesas,r9a09g047-csi2 # RZ/G3E
+          - const: renesas,r9a09g057-csi2
+      - const: renesas,r9a09g057-csi2 # RZ/V2H(P)
 
   reg:
     maxItems: 1
@@ -31,16 +36,24 @@ properties:
     maxItems: 1
 
   clocks:
-    items:
-      - description: Internal clock for connecting CRU and MIPI
-      - description: CRU Main clock
-      - description: CRU Register access clock
+    oneOf:
+      - items:
+          - description: Internal clock for connecting CRU and MIPI
+          - description: CRU Main clock
+          - description: CRU Register access clock
+      - items:
+          - description: CRU Main clock
+          - description: CRU Register access clock
 
   clock-names:
-    items:
-      - const: system
-      - const: video
-      - const: apb
+    oneOf:
+      - items:
+          - const: system
+          - const: video
+          - const: apb
+      - items:
+          - const: video
+          - const: apb
 
   power-domains:
     maxItems: 1
@@ -48,7 +61,7 @@ properties:
   resets:
     items:
       - description: CRU_PRESETN reset terminal
-      - description: CRU_CMN_RSTB reset terminal
+      - description: D-PHY reset (CRU_CMN_RSTB or CRU_n_S_RESETN)
 
   reset-names:
     items:
@@ -101,6 +114,25 @@ required:
   - reset-names
   - ports
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a09g057-csi2
+    then:
+      properties:
+        clocks:
+          maxItems: 2
+        clock-names:
+          maxItems: 2
+    else:
+      properties:
+        clocks:
+          minItems: 3
+        clock-names:
+          minItems: 3
+
 additionalProperties: false
 
 examples:
index 1a03e67462a4fee110f304e85b6eb8d3020d3a3b..fcf7219b1f40a51b57c9ce1c6176e19adf1a418c 100644 (file)
@@ -25,6 +25,7 @@ properties:
           - enum:
               - renesas,r9a07g043u-vsp2   # RZ/G2UL
               - renesas,r9a07g054-vsp2    # RZ/V2L
+              - renesas,r9a09g057-vsp2    # RZ/V2H(P)
           - const: renesas,r9a07g044-vsp2 # RZ/G2L fallback
 
   reg:
@@ -33,8 +34,18 @@ properties:
   interrupts:
     maxItems: 1
 
-  clocks: true
-  clock-names: true
+  clocks:
+    minItems: 1
+    items:
+      - description: Main clock
+      - description: Register access clock
+      - description: Video clock
+
+  clock-names:
+    items:
+      - const: aclk
+      - const: pclk
+      - const: vclk
 
   power-domains:
     maxItems: 1
@@ -78,15 +89,7 @@ allOf:
     then:
       properties:
         clocks:
-          items:
-            - description: Main clock
-            - description: Register access clock
-            - description: Video clock
-        clock-names:
-          items:
-            - const: aclk
-            - const: pclk
-            - const: vclk
+          minItems: 3
       required:
         - clock-names
     else:
index 2f36ac23604c50b1e9838c6a3d8b10bdc873bdac..0762e0ff66ef02e0667cae618f9b0e6e6dae36d6 100644 (file)
@@ -33,6 +33,7 @@ properties:
           - mediatek,mt2712-smi-common
           - mediatek,mt6779-smi-common
           - mediatek,mt6795-smi-common
+          - mediatek,mt6893-smi-common
           - mediatek,mt8167-smi-common
           - mediatek,mt8173-smi-common
           - mediatek,mt8183-smi-common
index 2381660b324cb3968e4a182e49b93057921b455d..2e7fac4b50945d3e5395c665d5449d14fcde23f3 100644 (file)
@@ -21,6 +21,7 @@ properties:
           - mediatek,mt2712-smi-larb
           - mediatek,mt6779-smi-larb
           - mediatek,mt6795-smi-larb
+          - mediatek,mt6893-smi-larb
           - mediatek,mt8167-smi-larb
           - mediatek,mt8173-smi-larb
           - mediatek,mt8183-smi-larb
diff --git a/Bindings/memory-controllers/renesas,rzg3e-xspi.yaml b/Bindings/memory-controllers/renesas,rzg3e-xspi.yaml
new file mode 100644 (file)
index 0000000..2bfe63e
--- /dev/null
@@ -0,0 +1,135 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/renesas,rzg3e-xspi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas Expanded Serial Peripheral Interface (xSPI)
+
+maintainers:
+  - Biju Das <biju.das.jz@bp.renesas.com>
+
+description: |
+  Renesas xSPI allows a SPI flash connected to the SoC to be accessed via
+  the memory-mapping or the manual command mode.
+
+  The flash chip itself should be represented by a subnode of the XSPI node.
+  The flash interface is selected based on the "compatible" property of this
+  subnode:
+  -  "jedec,spi-nor";
+
+allOf:
+  - $ref: /schemas/spi/spi-controller.yaml#
+
+properties:
+  compatible:
+    const: renesas,r9a09g047-xspi  # RZ/G3E
+
+  reg:
+    items:
+      - description: xSPI registers
+      - description: direct mapping area
+
+  reg-names:
+    items:
+      - const: regs
+      - const: dirmap
+
+  interrupts:
+    items:
+      - description: Interrupt pulse signal by factors excluding errors
+      - description: Interrupt pulse signal by error factors
+
+  interrupt-names:
+    items:
+      - const: pulse
+      - const: err_pulse
+
+  clocks:
+    items:
+      - description: AHB clock
+      - description: AXI clock
+      - description: SPI clock
+      - description: Double speed SPI clock
+
+  clock-names:
+    items:
+      - const: ahb
+      - const: axi
+      - const: spi
+      - const: spix2
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    items:
+      - description: Hardware reset
+      - description: AXI reset
+
+  reset-names:
+    items:
+      - const: hresetn
+      - const: aresetn
+
+  renesas,xspi-cs-addr-sys:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: |
+      Phandle to the system controller (sys) that allows to configure
+      xSPI CS0 and CS1 addresses.
+
+patternProperties:
+  "flash@[0-9a-f]+$":
+    type: object
+    additionalProperties: true
+
+    properties:
+      compatible:
+        contains:
+          const: jedec,spi-nor
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - interrupts
+  - interrupt-names
+  - clocks
+  - clock-names
+  - power-domains
+  - resets
+  - reset-names
+  - '#address-cells'
+  - '#size-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/renesas,r9a09g047-cpg.h>
+
+    spi@11030000 {
+        compatible = "renesas,r9a09g047-xspi";
+        reg = <0x11030000 0x10000>, <0x20000000 0x10000000>;
+        reg-names = "regs", "dirmap";
+        interrupts = <GIC_SPI 228 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 229 IRQ_TYPE_EDGE_RISING>;
+        interrupt-names = "pulse", "err_pulse";
+        clocks = <&cpg CPG_MOD 0x9f>, <&cpg CPG_MOD 0xa0>,
+                 <&cpg CPG_CORE 9>, <&cpg CPG_MOD 0xa1>;
+        clock-names = "ahb", "axi", "spi", "spix2";
+        power-domains = <&cpg>;
+        resets = <&cpg 0xa3>, <&cpg 0xa4>;
+        reset-names = "hresetn", "aresetn";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        flash@0 {
+          compatible = "jedec,spi-nor";
+          reg = <0>;
+          spi-max-frequency = <40000000>;
+          spi-tx-bus-width = <1>;
+          spi-rx-bus-width = <1>;
+        };
+    };
diff --git a/Bindings/memory-controllers/st,stm32mp25-omm.yaml b/Bindings/memory-controllers/st,stm32mp25-omm.yaml
new file mode 100644 (file)
index 0000000..344878d
--- /dev/null
@@ -0,0 +1,226 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/memory-controllers/st,stm32mp25-omm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STM32 Octo Memory Manager (OMM)
+
+maintainers:
+  - Patrice Chotard <patrice.chotard@foss.st.com>
+
+description: |
+  The STM32 Octo Memory Manager is a low-level interface that enables an
+  efficient OCTOSPI pin assignment with a full I/O matrix (before alternate
+  function map) and multiplex of single/dual/quad/octal SPI interfaces over
+  the same bus. It Supports up to:
+    - Two single/dual/quad/octal SPI interfaces
+    - Two ports for pin assignment
+
+properties:
+  compatible:
+    const: st,stm32mp25-omm
+
+  "#address-cells":
+    const: 2
+
+  "#size-cells":
+    const: 1
+
+  ranges:
+    description: |
+      Reflects the memory layout per OSPI instance.
+      Format:
+      <chip-select> 0 <registers base address> <size>
+    minItems: 2
+    maxItems: 2
+
+  reg:
+    items:
+      - description: OMM registers
+      - description: OMM memory map area
+
+  reg-names:
+    items:
+      - const: regs
+      - const: memory_map
+
+  memory-region:
+    description:
+      Memory region shared between the 2 OCTOSPI instance.
+      One or two phandle to a node describing a memory mapped region
+      depending of child number.
+    minItems: 1
+    maxItems: 2
+
+  memory-region-names:
+    description:
+      Identify to which OSPI instance the memory region belongs to.
+    items:
+      enum: [ospi1, ospi2]
+    minItems: 1
+    maxItems: 2
+
+  clocks:
+    maxItems: 3
+
+  clock-names:
+    items:
+      - const: omm
+      - const: ospi1
+      - const: ospi2
+
+  resets:
+    maxItems: 3
+
+  reset-names:
+    items:
+      - const: omm
+      - const: ospi1
+      - const: ospi2
+
+  access-controllers:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  st,syscfg-amcr:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description: |
+      The Address Mapping Control Register (AMCR) is used to split the 256MB
+      memory map area shared between the 2 OSPI instance. The Octo Memory
+      Manager sets the AMCR depending of the memory-region configuration.
+      The memory split bitmask description is:
+        - 000: OCTOSPI1 (256 Mbytes), OCTOSPI2 unmapped
+        - 001: OCTOSPI1 (192 Mbytes), OCTOSPI2 (64 Mbytes)
+        - 010: OCTOSPI1 (128 Mbytes), OCTOSPI2 (128 Mbytes)
+        - 011: OCTOSPI1 (64 Mbytes), OCTOSPI2 (192 Mbytes)
+        - 1xx: OCTOSPI1 unmapped, OCTOSPI2 (256 Mbytes)
+    items:
+      - items:
+          - description: phandle to syscfg
+          - description: register offset within syscfg
+          - description: register bitmask for memory split
+
+  st,omm-req2ack-ns:
+    description:
+      In multiplexed mode (MUXEN = 1), this field defines the time in
+      nanoseconds between two transactions.
+    default: 0
+
+  st,omm-cssel-ovr:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: |
+      Configure the chip select selector override for the 2 OCTOSPIs.
+      - 0: OCTOSPI1 chip select send to NCS1 OCTOSPI2 chip select send to NCS1
+      - 1: OCTOSPI1 chip select send to NCS2 OCTOSPI2 chip select send to NCS1
+      - 2: OCTOSPI1 chip select send to NCS1 OCTOSPI2 chip select send to NCS2
+      - 3: OCTOSPI1 chip select send to NCS2 OCTOSPI2 chip select send to NCS2
+    minimum: 0
+    maximum: 3
+    default: 0
+
+  st,omm-mux:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description: |
+      Configure the muxing between the 2 OCTOSPIs busses and the 2 output ports.
+      - 0: direct mode
+      - 1: mux OCTOSPI1 and OCTOSPI2 to port 1
+      - 2: swapped mode
+      - 3: mux OCTOSPI1 and OCTOSPI2 to port 2
+    minimum: 0
+    maximum: 3
+    default: 0
+
+patternProperties:
+  ^spi@[0-9]:
+    type: object
+    $ref: /schemas/spi/st,stm32mp25-ospi.yaml#
+    description: Required spi child node
+
+required:
+  - compatible
+  - reg
+  - "#address-cells"
+  - "#size-cells"
+  - clocks
+  - clock-names
+  - resets
+  - reset-names
+  - st,syscfg-amcr
+  - ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/st,stm32mp25-rcc.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/reset/st,stm32mp25-rcc.h>
+    ommanager@40500000 {
+      compatible = "st,stm32mp25-omm";
+      reg = <0x40500000 0x400>, <0x60000000 0x10000000>;
+      reg-names = "regs", "memory_map";
+      ranges = <0 0 0x40430000 0x400>,
+               <1 0 0x40440000 0x400>;
+      memory-region = <&mm_ospi1>, <&mm_ospi2>;
+      memory-region-names = "ospi1", "ospi2";
+      pinctrl-0 = <&ospi_port1_clk_pins_a
+                   &ospi_port1_io03_pins_a
+                   &ospi_port1_cs0_pins_a>;
+      pinctrl-1 = <&ospi_port1_clk_sleep_pins_a
+                   &ospi_port1_io03_sleep_pins_a
+                   &ospi_port1_cs0_sleep_pins_a>;
+      pinctrl-names = "default", "sleep";
+      clocks = <&rcc CK_BUS_OSPIIOM>,
+               <&scmi_clk CK_SCMI_OSPI1>,
+               <&scmi_clk CK_SCMI_OSPI2>;
+      clock-names = "omm", "ospi1", "ospi2";
+      resets = <&rcc OSPIIOM_R>,
+               <&scmi_reset RST_SCMI_OSPI1>,
+               <&scmi_reset RST_SCMI_OSPI2>;
+      reset-names = "omm", "ospi1", "ospi2";
+      access-controllers = <&rifsc 111>;
+      power-domains = <&CLUSTER_PD>;
+      #address-cells = <2>;
+      #size-cells = <1>;
+      st,syscfg-amcr = <&syscfg 0x2c00 0x7>;
+      st,omm-req2ack-ns = <0>;
+      st,omm-mux = <0>;
+      st,omm-cssel-ovr = <0>;
+
+      spi@0 {
+        compatible = "st,stm32mp25-ospi";
+        reg = <0 0 0x400>;
+        memory-region = <&mm_ospi1>;
+        interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
+        dmas = <&hpdma 2 0x62 0x00003121 0x0>,
+               <&hpdma 2 0x42 0x00003112 0x0>;
+        dma-names = "tx", "rx";
+        clocks = <&scmi_clk CK_SCMI_OSPI1>;
+        resets = <&scmi_reset RST_SCMI_OSPI1>, <&scmi_reset RST_SCMI_OSPI1DLL>;
+        access-controllers = <&rifsc 74>;
+        power-domains = <&CLUSTER_PD>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        st,syscfg-dlyb = <&syscfg 0x1000>;
+      };
+
+      spi@1 {
+        compatible = "st,stm32mp25-ospi";
+        reg = <1 0 0x400>;
+        memory-region = <&mm_ospi1>;
+        interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+        dmas = <&hpdma 3 0x62 0x00003121 0x0>,
+               <&hpdma 3 0x42 0x00003112 0x0>;
+        dma-names = "tx", "rx";
+        clocks = <&scmi_clk CK_KER_OSPI2>;
+        resets = <&scmi_reset RST_SCMI_OSPI2>, <&scmi_reset RST_SCMI_OSPI1DLL>;
+        access-controllers = <&rifsc 75>;
+        power-domains = <&CLUSTER_PD>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        st,syscfg-dlyb = <&syscfg 0x1000>;
+      };
+    };
index c800d5e53b65124e215432c73d15ff58691264c1..5eccd10d95ce5d4ebb7249eb61e991937c256d55 100644 (file)
@@ -66,8 +66,15 @@ patternProperties:
       - compatible
 
   '^interrupt-controller@[0-9a-f]+$':
-    description: See Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2xxx-scu-ic.txt
     type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        contains:
+          enum:
+            - aspeed,ast2500-scu-ic
+            - aspeed,ast2600-scu-ic0
+            - aspeed,ast2600-scu-ic1
 
   '^silicon-id@[0-9a-f]+$':
     description: Unique hardware silicon identifiers within the SoC
index f805545aa62a1729c1b3a59d037da800f8a9dd48..f6f47999c6c10d9f6b582a94894ab6ea2ddcbe32 100644 (file)
@@ -19,6 +19,7 @@ properties:
       - items:
           - enum:
               - atmel,at91sam9260-gpbr
+              - microchip,sama7d65-gpbr
           - const: syscon
       - items:
           - enum:
diff --git a/Bindings/mfd/brcm,bcm59056.txt b/Bindings/mfd/brcm,bcm59056.txt
deleted file mode 100644 (file)
index be51a15..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
--------------------------------
-BCM590xx Power Management Units
--------------------------------
-
-Required properties:
-- compatible: "brcm,bcm59056"
-- reg: I2C slave address
-- interrupts: interrupt for the PMU. Generic interrupt client node bindings
-  are described in interrupt-controller/interrupts.txt
-
-------------------
-Voltage Regulators
-------------------
-
-Optional child nodes:
-- regulators: container node for regulators following the generic
-  regulator binding in regulator/regulator.txt
-
-  The valid regulator node names for BCM59056 are:
-       rfldo, camldo1, camldo2, simldo1, simldo2, sdldo, sdxldo,
-       mmcldo1, mmcldo2, audldo, micldo, usbldo, vibldo,
-       csr, iosr1, iosr2, msr, sdsr1, sdsr2, vsr,
-       gpldo1, gpldo2, gpldo3, gpldo4, gpldo5, gpldo6,
-       vbus
-
-Example:
-       pmu: bcm59056@8 {
-               compatible = "brcm,bcm59056";
-               reg = <0x08>;
-               interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
-               regulators {
-                       rfldo_reg: rfldo {
-                               regulator-min-microvolt = <1200000>;
-                               regulator-max-microvolt = <3300000>;
-                       };
-
-                       ...
-               };
-       };
diff --git a/Bindings/mfd/brcm,bcm59056.yaml b/Bindings/mfd/brcm,bcm59056.yaml
new file mode 100644 (file)
index 0000000..b67d7a7
--- /dev/null
@@ -0,0 +1,76 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/brcm,bcm59056.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM590xx Power Management Units
+
+maintainers:
+  - Artur Weber <aweber.kernel@gmail.com>
+
+properties:
+  compatible:
+    enum:
+      - brcm,bcm59054
+      - brcm,bcm59056
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  regulators:
+    type: object
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,bcm59054
+    then:
+      properties:
+        regulators:
+          $ref: /schemas/regulator/brcm,bcm59054.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: brcm,bcm59056
+    then:
+      properties:
+        regulators:
+          $ref: /schemas/regulator/brcm,bcm59056.yaml#
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pmic@8 {
+            compatible = "brcm,bcm59056";
+            reg = <0x08>;
+            interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
+
+            regulators {
+                rfldo {
+                    regulator-min-microvolt = <1200000>;
+                    regulator-max-microvolt = <3300000>;
+                };
+            };
+        };
+    };
index e79ce447a8008d0c8d56f8f314a4db072dc64ddc..f242dd0e18fdbafd33db5311231c51f518eb9201 100644 (file)
@@ -60,43 +60,34 @@ examples:
     #include <dt-bindings/interrupt-controller/irq.h>
 
     i2c {
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            iqs620a@44 {
-                    compatible = "azoteq,iqs620a";
-                    reg = <0x44>;
-                    interrupt-parent = <&gpio>;
-                    interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
-
-                    keys {
-                            compatible = "azoteq,iqs620a-keys";
-
-                            linux,keycodes = <KEY_SELECT>,
-                                             <KEY_MENU>,
-                                             <KEY_OK>,
-                                             <KEY_MENU>;
-
-                            hall-switch-south {
-                                    linux,code = <SW_LID>;
-                                    azoteq,use-prox;
-                            };
-                    };
-
-                    iqs620a_pwm: pwm {
-                            compatible = "azoteq,iqs620a-pwm";
-                            #pwm-cells = <2>;
-                    };
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        iqs620a@44 {
+            compatible = "azoteq,iqs620a";
+            reg = <0x44>;
+            interrupt-parent = <&gpio>;
+            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+
+            keys {
+                compatible = "azoteq,iqs620a-keys";
+
+                linux,keycodes = <KEY_SELECT>,
+                                 <KEY_MENU>,
+                                 <KEY_OK>,
+                                 <KEY_MENU>;
+
+                hall-switch-south {
+                    linux,code = <SW_LID>;
+                    azoteq,use-prox;
+                };
             };
-    };
-
-    pwmleds {
-            compatible = "pwm-leds";
 
-            led-1 {
-                    pwms = <&iqs620a_pwm 0 1000000>;
-                    max-brightness = <255>;
+            iqs620a_pwm: pwm {
+                compatible = "azoteq,iqs620a-pwm";
+                #pwm-cells = <2>;
             };
+        };
     };
 
   - |
@@ -105,37 +96,37 @@ examples:
     #include <dt-bindings/interrupt-controller/irq.h>
 
     i2c {
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            iqs620a@44 {
-                    compatible = "azoteq,iqs620a";
-                    reg = <0x44>;
-                    interrupt-parent = <&gpio>;
-                    interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
-
-                    firmware-name = "iqs620a_coil.bin";
-
-                    keys {
-                            compatible = "azoteq,iqs620a-keys";
-
-                            linux,keycodes = <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <KEY_MUTE>;
-
-                            hall-switch-north {
-                                    linux,code = <SW_DOCK>;
-                            };
-
-                            hall-switch-south {
-                                    linux,code = <SW_TABLET_MODE>;
-                            };
-                    };
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        iqs620a@44 {
+            compatible = "azoteq,iqs620a";
+            reg = <0x44>;
+            interrupt-parent = <&gpio>;
+            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+
+            firmware-name = "iqs620a_coil.bin";
+
+            keys {
+                compatible = "azoteq,iqs620a-keys";
+
+                linux,keycodes = <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <KEY_MUTE>;
+
+                hall-switch-north {
+                    linux,code = <SW_DOCK>;
+                };
+
+                hall-switch-south {
+                    linux,code = <SW_TABLET_MODE>;
+                };
             };
+        };
     };
 
   - |
@@ -144,36 +135,36 @@ examples:
     #include <dt-bindings/interrupt-controller/irq.h>
 
     i2c {
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            iqs624@44 {
-                    compatible = "azoteq,iqs624";
-                    reg = <0x44>;
-                    interrupt-parent = <&gpio>;
-                    interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
-
-                    keys {
-                            compatible = "azoteq,iqs624-keys";
-
-                            linux,keycodes = <BTN_0>,
-                                             <0>,
-                                             <BTN_1>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <0>,
-                                             <KEY_VOLUMEUP>,
-                                             <KEY_VOLUMEDOWN>;
-                    };
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        iqs624@44 {
+            compatible = "azoteq,iqs624";
+            reg = <0x44>;
+            interrupt-parent = <&gpio>;
+            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+
+            keys {
+                compatible = "azoteq,iqs624-keys";
+
+                linux,keycodes = <BTN_0>,
+                                 <0>,
+                                 <BTN_1>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <0>,
+                                 <KEY_VOLUMEUP>,
+                                 <KEY_VOLUMEDOWN>;
             };
+        };
     };
 
 ...
diff --git a/Bindings/mfd/maxim,max77759.yaml b/Bindings/mfd/maxim,max77759.yaml
new file mode 100644 (file)
index 0000000..525de9a
--- /dev/null
@@ -0,0 +1,99 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/maxim,max77759.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim Integrated MAX77759 PMIC for USB Type-C applications
+
+maintainers:
+  - André Draszik <andre.draszik@linaro.org>
+
+description: |
+  This is a part of device tree bindings for the MAX77759 companion Power
+  Management IC for USB Type-C applications.
+
+  The MAX77759 includes Battery Charger, Fuel Gauge, temperature sensors, USB
+  Type-C Port Controller (TCPC), NVMEM, and a GPIO expander.
+
+properties:
+  compatible:
+    const: maxim,max77759
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-controller: true
+
+  "#interrupt-cells":
+    const: 2
+
+  reg:
+    maxItems: 1
+
+  gpio:
+    $ref: /schemas/gpio/maxim,max77759-gpio.yaml
+
+  nvmem-0:
+    $ref: /schemas/nvmem/maxim,max77759-nvmem.yaml
+
+required:
+  - compatible
+  - interrupts
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pmic@66 {
+            compatible = "maxim,max77759";
+            reg = <0x66>;
+            interrupts-extended = <&gpa8 3 IRQ_TYPE_LEVEL_LOW>;
+
+            interrupt-controller;
+            #interrupt-cells = <2>;
+
+            gpio {
+                compatible = "maxim,max77759-gpio";
+
+                gpio-controller;
+                #gpio-cells = <2>;
+
+                interrupt-controller;
+                #interrupt-cells = <2>;
+            };
+
+            nvmem-0 {
+                compatible = "maxim,max77759-nvmem";
+
+                nvmem-layout {
+                    compatible = "fixed-layout";
+                    #address-cells = <1>;
+                    #size-cells = <1>;
+
+                    reboot-mode@0 {
+                        reg = <0x0 0x4>;
+                    };
+
+                    boot-reason@4 {
+                        reg = <0x4 0x4>;
+                    };
+
+                    shutdown-user-flag@8 {
+                        reg = <0x8 0x1>;
+                    };
+
+                    rsoc@10 {
+                        reg = <0xa 0x2>;
+                    };
+                };
+            };
+        };
+    };
index 768390b92682765499ffb5c06b561eb650b241d9..0e1d43c96fb9dad07aed47ab19c410b6197ed3a5 100644 (file)
@@ -18,6 +18,7 @@ properties:
   compatible:
     items:
       - enum:
+          - mediatek,mt6893-scpsys
           - mediatek,mt8167-scpsys
           - mediatek,mt8173-scpsys
           - mediatek,mt8183-scpsys
index 8bd1abfc44d993e749fae53a6102d36a771814a0..b613da83dca49f472a33488cc43e420e3b948cad 100644 (file)
@@ -76,12 +76,6 @@ additionalProperties: false
 
 examples:
   - |
-    ocelot_clock: ocelot-clock {
-          compatible = "fixed-clock";
-          #clock-cells = <0>;
-          clock-frequency = <125000000>;
-      };
-
     spi {
         #address-cells = <1>;
         #size-cells = <0>;
index 59a630025f52fa919fbdfc48f4cb1bef8144e6f7..37fbb953ea12e7e2718c169991d1a9dbcc8b6c11 100644 (file)
@@ -48,29 +48,18 @@ examples:
   - |
     #include <dt-bindings/interrupt-controller/irq.h>
     i2c {
-            #address-cells = <1>;
-            #size-cells = <0>;
-
-            ec: embedded-controller@43 {
-                    pinctrl-names = "default";
-                    pinctrl-0 = <&pinctrl_ntxec>;
-
-                    compatible = "netronix,ntxec";
-                    reg = <0x43>;
-                    system-power-controller;
-                    interrupt-parent = <&gpio4>;
-                    interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
-                    #pwm-cells = <2>;
-            };
-    };
-
-    backlight {
-            compatible = "pwm-backlight";
-            pwms = <&ec 0 50000>;
-            power-supply = <&backlight_regulator>;
-    };
-
-    backlight_regulator: regulator-dummy {
-            compatible = "regulator-fixed";
-            regulator-name = "backlight";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        ec: embedded-controller@43 {
+                pinctrl-names = "default";
+                pinctrl-0 = <&pinctrl_ntxec>;
+
+                compatible = "netronix,ntxec";
+                reg = <0x43>;
+                system-power-controller;
+                interrupt-parent = <&gpio4>;
+                interrupts = <11 IRQ_TYPE_EDGE_FALLING>;
+                #pwm-cells = <2>;
+        };
     };
index 7e7225aadae3285f59ec303294cf1515772a629b..14ae3f00ef7e00e607bba93f49f03bb244253b0e 100644 (file)
@@ -41,6 +41,7 @@ properties:
           - qcom,sm8450-tcsr
           - qcom,tcsr-apq8064
           - qcom,tcsr-apq8084
+          - qcom,tcsr-ipq5018
           - qcom,tcsr-ipq5332
           - qcom,tcsr-ipq5424
           - qcom,tcsr-ipq6018
index 534cf03f36bbade96ed26e4dcfa7427665fba835..47611c2a982c7ce86ba373f52758fdcdfa3e0361 100644 (file)
@@ -99,29 +99,29 @@ examples:
     #include <dt-bindings/interrupt-controller/irq.h>
 
     i2c {
-          #address-cells = <1>;
-          #size-cells = <0>;
-
-          pmic: pmic@30 {
-                  compatible = "rohm,bd9571mwv";
-                  reg = <0x30>;
-                  interrupt-parent = <&gpio2>;
-                  interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
-                  interrupt-controller;
-                  #interrupt-cells = <2>;
-                  gpio-controller;
-                  #gpio-cells = <2>;
-                  rohm,ddr-backup-power = <0xf>;
-                  rohm,rstbmode-pulse;
-
-                  regulators {
-                          dvfs: dvfs {
-                                  regulator-name = "dvfs";
-                                  regulator-min-microvolt = <750000>;
-                                  regulator-max-microvolt = <1030000>;
-                                  regulator-boot-on;
-                                  regulator-always-on;
-                          };
-                  };
-          };
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pmic: pmic@30 {
+            compatible = "rohm,bd9571mwv";
+            reg = <0x30>;
+            interrupt-parent = <&gpio2>;
+            interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            rohm,ddr-backup-power = <0xf>;
+            rohm,rstbmode-pulse;
+
+            regulators {
+                dvfs: dvfs {
+                    regulator-name = "dvfs";
+                    regulator-min-microvolt = <750000>;
+                    regulator-max-microvolt = <1030000>;
+                    regulator-boot-on;
+                    regulator-always-on;
+                };
+            };
+        };
     };
index efee3de0d9ad29f357efaf5ee49e34b2b284ce7a..0e06570483ae976852b1009fa1d2a0b956873399 100644 (file)
@@ -4,19 +4,21 @@
 $id: http://devicetree.org/schemas/mfd/rohm,bd96801-pmic.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: ROHM BD96801 Scalable Power Management Integrated Circuit
+title: ROHM BD96801/BD96805 Scalable Power Management Integrated Circuit
 
 maintainers:
   - Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
 
 description:
-  BD96801 is an automotive grade single-chip power management IC.
-  It integrates 4 buck converters and 3 LDOs with safety features like
+  BD96801 and BD96805 are automotive grade, single-chip power management ICs.
+  They both integrate 4 buck converters and 3 LDOs with safety features like
   over-/under voltage and over current detection and a watchdog.
 
 properties:
   compatible:
-    const: rohm,bd96801
+    enum:
+      - rohm,bd96801
+      - rohm,bd96805
 
   reg:
     maxItems: 1
diff --git a/Bindings/mfd/rohm,bd96802-pmic.yaml b/Bindings/mfd/rohm,bd96802-pmic.yaml
new file mode 100644 (file)
index 0000000..6cbea79
--- /dev/null
@@ -0,0 +1,101 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/rohm,bd96802-pmic.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM BD96802 / BD96806 Scalable Power Management Integrated Circuit
+
+maintainers:
+  - Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
+
+description: |
+  BD96802Qxx-C and BD96806 are automotive grade configurable Power Management
+  Integrated Circuits supporting Functional Safety features for application
+  processors, SoCs and FPGAs
+
+properties:
+  compatible:
+    enum:
+      - rohm,bd96802
+      - rohm,bd96806
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    description:
+      The PMIC provides intb and errb IRQ lines. The errb IRQ line is used
+      for fatal IRQs which will cause the PMIC to shut down power outputs.
+      In many systems this will shut down the SoC contolling the PMIC and
+      connecting/handling the errb can be omitted. However, there are cases
+      where the SoC is not powered by the PMIC or has a short time backup
+      energy to handle shutdown of critical hardware. In that case it may be
+      useful to connect the errb and handle errb events.
+    minItems: 1
+    maxItems: 2
+
+  interrupt-names:
+    minItems: 1
+    items:
+      - enum: [intb, errb]
+      - const: errb
+
+  regulators:
+    $ref: ../regulator/rohm,bd96802-regulator.yaml
+    description:
+      List of child nodes that specify the regulators.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - regulators
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/leds/common.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        pmic: pmic@62 {
+            reg = <0x62>;
+            compatible = "rohm,bd96802";
+            interrupt-parent = <&gpio1>;
+            interrupts = <29 IRQ_TYPE_LEVEL_LOW>, <6 IRQ_TYPE_LEVEL_LOW>;
+            interrupt-names = "intb", "errb";
+
+            regulators {
+                buck1 {
+                    regulator-name = "buck1";
+                    regulator-ramp-delay = <1250>;
+                    /* 0.5V min INITIAL - 150 mV tune */
+                    regulator-min-microvolt = <350000>;
+                    /* 3.3V + 150mV tune */
+                    regulator-max-microvolt = <3450000>;
+
+                    /* These can be set only when PMIC is in STBY */
+                    rohm,initial-voltage-microvolt = <500000>;
+                    regulator-ov-error-microvolt = <230000>;
+                    regulator-uv-error-microvolt = <230000>;
+                    regulator-temp-protection-kelvin = <1>;
+                    regulator-temp-warn-kelvin = <0>;
+                };
+                buck2 {
+                    regulator-name = "buck2";
+                    regulator-min-microvolt = <350000>;
+                    regulator-max-microvolt = <3450000>;
+
+                    rohm,initial-voltage-microvolt = <3000000>;
+                    regulator-ov-error-microvolt = <18000>;
+                    regulator-uv-error-microvolt = <18000>;
+                    regulator-temp-protection-kelvin = <1>;
+                    regulator-temp-warn-kelvin = <1>;
+                };
+            };
+        };
+    };
index ac5d0c149796b6a4034b5d4245bfa8be0433cfab..d6b9e29147965b6d8eef786b0fb5b5f198ab69ab 100644 (file)
@@ -20,6 +20,7 @@ description: |
 properties:
   compatible:
     enum:
+      - samsung,s2mpg10-pmic
       - samsung,s2mps11-pmic
       - samsung,s2mps13-pmic
       - samsung,s2mps14-pmic
@@ -58,16 +59,39 @@ properties:
       reset (setting buck voltages to default values).
     type: boolean
 
+  system-power-controller: true
+
   wakeup-source: true
 
 required:
   - compatible
-  - reg
   - regulators
 
 additionalProperties: false
 
 allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,s2mpg10-pmic
+    then:
+      properties:
+        reg: false
+        samsung,s2mps11-acokb-ground: false
+        samsung,s2mps11-wrstbi-ground: false
+
+      oneOf:
+        - required: [interrupts]
+        - required: [interrupts-extended]
+
+    else:
+      properties:
+        system-power-controller: false
+
+      required:
+        - reg
+
   - if:
       properties:
         compatible:
index d41308856408fcb1124239f5e726e6d44f2de190..4eabafb8079d0976c6dfefaa574e9fa4dcbbdf1c 100644 (file)
@@ -21,7 +21,12 @@ maintainers:
 
 properties:
   compatible:
-    const: st,stm32-lptimer
+    oneOf:
+      - items:
+          - const: st,stm32mp25-lptimer
+          - const: st,stm32-lptimer
+      - items:
+          - const: st,stm32-lptimer
 
   reg:
     maxItems: 1
@@ -48,13 +53,21 @@ properties:
     minItems: 1
     maxItems: 2
 
+  power-domains:
+    maxItems: 1
+
   pwm:
     type: object
     additionalProperties: false
 
     properties:
       compatible:
-        const: st,stm32-pwm-lp
+        oneOf:
+          - items:
+              - const: st,stm32mp25-pwm-lp
+              - const: st,stm32-pwm-lp
+          - items:
+              - const: st,stm32-pwm-lp
 
       "#pwm-cells":
         const: 3
@@ -69,7 +82,12 @@ properties:
 
     properties:
       compatible:
-        const: st,stm32-lptimer-counter
+        oneOf:
+          - items:
+              - const: st,stm32mp25-lptimer-counter
+              - const: st,stm32-lptimer-counter
+          - items:
+              - const: st,stm32-lptimer-counter
 
     required:
       - compatible
@@ -80,7 +98,12 @@ properties:
 
     properties:
       compatible:
-        const: st,stm32-lptimer-timer
+        oneOf:
+          - items:
+              - const: st,stm32mp25-lptimer-timer
+              - const: st,stm32-lptimer-timer
+          - items:
+              - const: st,stm32-lptimer-timer
 
     required:
       - compatible
@@ -92,13 +115,18 @@ patternProperties:
 
     properties:
       compatible:
-        const: st,stm32-lptimer-trigger
+        oneOf:
+          - items:
+              - const: st,stm32mp25-lptimer-trigger
+              - const: st,stm32-lptimer-trigger
+          - items:
+              - const: st,stm32-lptimer-trigger
 
       reg:
         description: Identify trigger hardware block.
         items:
           minimum: 0
-          maximum: 2
+          maximum: 4
 
     required:
       - compatible
index c6bbb19c3e3e2245b4a823df06e7f361da311000..27672adeb1fedb7c81b8ae86c35f4f3b26d5516f 100644 (file)
@@ -84,6 +84,7 @@ select:
           - mediatek,mt2701-pctl-a-syscfg
           - mediatek,mt2712-pctl-a-syscfg
           - mediatek,mt6397-pctl-pmic-syscfg
+          - mediatek,mt7988-topmisc
           - mediatek,mt8135-pctl-a-syscfg
           - mediatek,mt8135-pctl-b-syscfg
           - mediatek,mt8173-pctl-a-syscfg
@@ -98,6 +99,8 @@ select:
           - mstar,msc313-pmsleep
           - nuvoton,ma35d1-sys
           - nuvoton,wpcm450-shm
+          - qcom,apq8064-mmss-sfpb
+          - qcom,apq8064-sps-sic
           - rockchip,px30-qos
           - rockchip,rk3036-qos
           - rockchip,rk3066-qos
@@ -187,9 +190,11 @@ properties:
           - mediatek,mt2701-pctl-a-syscfg
           - mediatek,mt2712-pctl-a-syscfg
           - mediatek,mt6397-pctl-pmic-syscfg
+          - mediatek,mt7988-topmisc
           - mediatek,mt8135-pctl-a-syscfg
           - mediatek,mt8135-pctl-b-syscfg
           - mediatek,mt8173-pctl-a-syscfg
+          - mediatek,mt8365-infracfg-nao
           - mediatek,mt8365-syscfg
           - microchip,lan966x-cpu-syscon
           - microchip,mpfs-sysreg-scb
@@ -201,6 +206,8 @@ properties:
           - mstar,msc313-pmsleep
           - nuvoton,ma35d1-sys
           - nuvoton,wpcm450-shm
+          - qcom,apq8064-mmss-sfpb
+          - qcom,apq8064-sps-sic
           - rockchip,px30-qos
           - rockchip,rk3036-qos
           - rockchip,rk3066-qos
index 3f7661bdd20204204a6de76f399dec24fb63ec0b..45f015d63df161db22d196d730aef24a0f3bbd6d 100644 (file)
@@ -316,106 +316,106 @@ additionalProperties: false
 
 examples:
   - |
-      i2c {
-          #address-cells = <1>;
-          #size-cells = <0>;
-
-          pmic@30 {
-              compatible = "x-powers,axp152";
-              reg = <0x30>;
-              interrupts = <0>;
-              interrupt-controller;
-              #interrupt-cells = <1>;
-          };
-      };
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pmic@30 {
+            compatible = "x-powers,axp152";
+            reg = <0x30>;
+            interrupts = <0>;
+            interrupt-controller;
+            #interrupt-cells = <1>;
+        };
+    };
 
   - |
-      #include <dt-bindings/interrupt-controller/irq.h>
-
-      i2c {
-          #address-cells = <1>;
-          #size-cells = <0>;
-
-          pmic@34 {
-              compatible = "x-powers,axp209";
-              reg = <0x34>;
-              interrupt-parent = <&nmi_intc>;
-              interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
-              interrupt-controller;
-              #interrupt-cells = <1>;
-
-              ac_power_supply: ac-power {
-                  compatible = "x-powers,axp202-ac-power-supply";
-              };
-
-              axp_adc: adc {
-                  compatible = "x-powers,axp209-adc";
-                  #io-channel-cells = <1>;
-              };
-
-              axp_gpio: gpio {
-                  compatible = "x-powers,axp209-gpio";
-                  gpio-controller;
-                  #gpio-cells = <2>;
-
-                  gpio0-adc-pin {
-                      pins = "GPIO0";
-                      function = "adc";
-                  };
-              };
-
-              battery_power_supply: battery-power {
-                  compatible = "x-powers,axp209-battery-power-supply";
-              };
-
-              regulators {
-                  /* Default work frequency for buck regulators */
-                  x-powers,dcdc-freq = <1500>;
-
-                  reg_dcdc2: dcdc2 {
-                      regulator-always-on;
-                      regulator-min-microvolt = <1000000>;
-                      regulator-max-microvolt = <1450000>;
-                      regulator-name = "vdd-cpu";
-                  };
-
-                  reg_dcdc3: dcdc3 {
-                      regulator-always-on;
-                      regulator-min-microvolt = <1000000>;
-                      regulator-max-microvolt = <1400000>;
-                      regulator-name = "vdd-int-dll";
-                  };
-
-                  reg_ldo1: ldo1 {
-                      /* LDO1 is a fixed output regulator */
-                      regulator-always-on;
-                      regulator-min-microvolt = <1300000>;
-                      regulator-max-microvolt = <1300000>;
-                      regulator-name = "vdd-rtc";
-                  };
-
-                  reg_ldo2: ldo2 {
-                      regulator-always-on;
-                      regulator-min-microvolt = <3000000>;
-                      regulator-max-microvolt = <3000000>;
-                      regulator-name = "avcc";
-                  };
-
-                  reg_ldo3: ldo3 {
-                      regulator-name = "ldo3";
-                  };
-
-                  reg_ldo4: ldo4 {
-                      regulator-name = "ldo4";
-                  };
-
-                  reg_ldo5: ldo5 {
-                      regulator-name = "ldo5";
-                  };
-              };
-
-              usb_power_supply: usb-power {
-                  compatible = "x-powers,axp202-usb-power-supply";
-              };
-          };
-      };
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pmic@34 {
+            compatible = "x-powers,axp209";
+            reg = <0x34>;
+            interrupt-parent = <&nmi_intc>;
+            interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+            interrupt-controller;
+            #interrupt-cells = <1>;
+
+            ac_power_supply: ac-power {
+                compatible = "x-powers,axp202-ac-power-supply";
+            };
+
+            axp_adc: adc {
+                compatible = "x-powers,axp209-adc";
+                #io-channel-cells = <1>;
+            };
+
+            axp_gpio: gpio {
+                compatible = "x-powers,axp209-gpio";
+                gpio-controller;
+                #gpio-cells = <2>;
+
+                gpio0-adc-pin {
+                    pins = "GPIO0";
+                    function = "adc";
+                };
+            };
+
+            battery_power_supply: battery-power {
+                compatible = "x-powers,axp209-battery-power-supply";
+            };
+
+            regulators {
+                /* Default work frequency for buck regulators */
+                x-powers,dcdc-freq = <1500>;
+
+                reg_dcdc2: dcdc2 {
+                    regulator-always-on;
+                    regulator-min-microvolt = <1000000>;
+                    regulator-max-microvolt = <1450000>;
+                    regulator-name = "vdd-cpu";
+                };
+
+                reg_dcdc3: dcdc3 {
+                    regulator-always-on;
+                    regulator-min-microvolt = <1000000>;
+                    regulator-max-microvolt = <1400000>;
+                    regulator-name = "vdd-int-dll";
+                };
+
+                reg_ldo1: ldo1 {
+                    /* LDO1 is a fixed output regulator */
+                    regulator-always-on;
+                    regulator-min-microvolt = <1300000>;
+                    regulator-max-microvolt = <1300000>;
+                    regulator-name = "vdd-rtc";
+                };
+
+                reg_ldo2: ldo2 {
+                    regulator-always-on;
+                    regulator-min-microvolt = <3000000>;
+                    regulator-max-microvolt = <3000000>;
+                    regulator-name = "avcc";
+                };
+
+                reg_ldo3: ldo3 {
+                    regulator-name = "ldo3";
+                };
+
+                reg_ldo4: ldo4 {
+                    regulator-name = "ldo4";
+                };
+
+                reg_ldo5: ldo5 {
+                    regulator-name = "ldo5";
+                };
+            };
+
+            usb_power_supply: usb-power {
+                compatible = "x-powers,axp202-usb-power-supply";
+            };
+        };
+    };
index a85137add66894cad5a36d27afaa3e134c7b618d..471373ad0cfb6155ca89d2e8ddbc18e7d5c9cc98 100644 (file)
@@ -50,6 +50,7 @@ properties:
   device_type: true
 
 allOf:
+  - $ref: /schemas/opp/opp-v1.yaml#
   - if:
       properties:
         compatible:
@@ -68,7 +69,7 @@ required:
   - compatible
   - reg
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
diff --git a/Bindings/mips/econet.yaml b/Bindings/mips/econet.yaml
new file mode 100644 (file)
index 0000000..d8181b5
--- /dev/null
@@ -0,0 +1,26 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mips/econet.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: EcoNet MIPS SoCs
+
+maintainers:
+  - Caleb James DeLisle <cjd@cjdns.fr>
+
+properties:
+  $nodename:
+    const: '/'
+
+  compatible:
+    oneOf:
+      - description: Boards with EcoNet EN751221 family SoC
+        items:
+          - enum:
+              - smartfiber,xp8421-b
+          - const: econet,en751221
+
+additionalProperties: true
+
+...
diff --git a/Bindings/misc/ti,fpc202.yaml b/Bindings/misc/ti,fpc202.yaml
new file mode 100644 (file)
index 0000000..a8cb10f
--- /dev/null
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/misc/ti,fpc202.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI FPC202 dual port controller with expanded IOs
+
+maintainers:
+  - Romain Gantois <romain.gantois@bootlin.com>
+
+allOf:
+  - $ref: /schemas/i2c/i2c-atr.yaml#
+
+properties:
+  compatible:
+    const: ti,fpc202
+
+  reg:
+    maxItems: 1
+
+  gpio-controller: true
+
+  "#gpio-cells":
+    const: 2
+
+  enable-gpios:
+    description:
+      Specifier for the GPIO connected to the EN pin.
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+patternProperties:
+  "^i2c@[0-1]$":
+    $ref: /schemas/i2c/i2c-controller.yaml#
+    description: Downstream device ports 0 and 1
+
+    properties:
+      reg:
+        maxItems: 1
+        description:
+          Downstream port ID
+
+    required:
+      - "#address-cells"
+      - "#size-cells"
+      - reg
+
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - gpio-controller
+  - "#gpio-cells"
+  - "#address-cells"
+  - "#size-cells"
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        i2c-atr@f {
+            compatible = "ti,fpc202";
+            reg = <0xf>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            gpio-controller;
+            #gpio-cells = <2>;
+
+            i2c@0 {
+                #address-cells = <1>;
+                #size-cells = <0>;
+                reg = <0>;
+            };
+
+            i2c@1 {
+                #address-cells = <1>;
+                #size-cells = <0>;
+                reg = <1>;
+            };
+        };
+    };
+...
index 9075add020bf0240b5bbe70871e2730a81ff63cc..8e79de97b242a698a2c555b0b94e2975b1761710 100644 (file)
@@ -38,6 +38,15 @@ allOf:
             - items:
                 - const: clk_out_sd1
                 - const: clk_in_sd1
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,rzn1-sdhci
+    then:
+      properties:
+        interrupts:
+          minItems: 2
 
 properties:
   compatible:
@@ -45,6 +54,10 @@ properties:
       - const: arasan,sdhci-8.9a                # generic Arasan SDHCI 8.9a PHY
       - const: arasan,sdhci-4.9a                # generic Arasan SDHCI 4.9a PHY
       - const: arasan,sdhci-5.1                 # generic Arasan SDHCI 5.1 PHY
+      - items:
+          - const: renesas,r9a06g032-sdhci      # Renesas RZ/N1D SoC
+          - const: renesas,rzn1-sdhci           # Renesas RZ/N1 family
+          - const: arasan,sdhci-8.9a
       - items:
           - const: rockchip,rk3399-sdhci-5.1    # rk3399 eMMC PHY
           - const: arasan,sdhci-5.1
@@ -109,7 +122,14 @@ properties:
       - const: gate
 
   interrupts:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
+
+  interrupt-names:
+    minItems: 1
+    items:
+      - const: int
+      - const: wakeup
 
   phys:
     maxItems: 1
index b86ffb53b18b519733633567eef62e9ffa35d91b..62087cf920df8f5cac80a4d51b1de39c16a3fd00 100644 (file)
@@ -24,6 +24,7 @@ properties:
           - fsl,t1040-esdhc
           - fsl,t4240-esdhc
           - fsl,ls1012a-esdhc
+          - fsl,ls1021a-esdhc
           - fsl,ls1028a-esdhc
           - fsl,ls1088a-esdhc
           - fsl,ls1043a-esdhc
index 3f48d8292d5be3ae7632beb13b812c3eb3de66fe..ee2ddef3636902796a684a1d5b82f68239bf9e61 100644 (file)
@@ -52,9 +52,14 @@ properties:
       - const: core
       - const: axi
 
+  dma-coherent: true
+
   interrupts:
     maxItems: 1
 
+  iommus:
+    maxItems: 1
+
   marvell,pad-type:
     $ref: /schemas/types.yaml#/definitions/string
     enum:
@@ -142,7 +147,7 @@ properties:
       This property provides the re-tuning counter.
 
 allOf:
-  - $ref: mmc-controller.yaml#
+  - $ref: sdhci-common.yaml#
   - if:
       properties:
         compatible:
@@ -164,26 +169,6 @@ allOf:
 
         marvell,pad-type: false
 
-  - if:
-      properties:
-        compatible:
-          contains:
-            enum:
-              - marvell,armada-cp110-sdhci
-              - marvell,armada-ap807-sdhci
-              - marvell,armada-ap806-sdhci
-
-    then:
-      properties:
-        clocks:
-          minItems: 2
-
-        clock-names:
-          items:
-            - const: core
-            - const: axi
-
-
 required:
   - compatible
   - reg
diff --git a/Bindings/mmc/microchip,sdhci-pic32.txt b/Bindings/mmc/microchip,sdhci-pic32.txt
deleted file mode 100644 (file)
index f064528..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-* Microchip PIC32 SDHCI Controller
-
-This file documents differences between the core properties in mmc.txt
-and the properties used by the sdhci-pic32 driver.
-
-Required properties:
-- compatible: Should be "microchip,pic32mzda-sdhci"
-- interrupts: Should contain interrupt
-- clock-names: Should be "base_clk", "sys_clk".
-               See: Documentation/devicetree/bindings/resource-names.txt
-- clocks: Phandle to the clock.
-          See: Documentation/devicetree/bindings/clock/clock-bindings.txt
-- pinctrl-names: A pinctrl state names "default" must be defined.
-- pinctrl-0: Phandle referencing pin configuration of the SDHCI controller.
-             See: Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
-
-Example:
-
-       sdhci@1f8ec000 {
-               compatible = "microchip,pic32mzda-sdhci";
-               reg = <0x1f8ec000 0x100>;
-               interrupts = <191 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&rootclk REF4CLK>, <&rootclk PB5CLK>;
-               clock-names = "base_clk", "sys_clk";
-               bus-width = <4>;
-               cap-sd-highspeed;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_sdhc1>;
-       };
diff --git a/Bindings/mmc/microchip,sdhci-pic32.yaml b/Bindings/mmc/microchip,sdhci-pic32.yaml
new file mode 100644 (file)
index 0000000..ca0ca7d
--- /dev/null
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/microchip,sdhci-pic32.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip PIC32 SDHI Controller
+
+description:
+  The Microchip PIC32 family of microcontrollers (MCUs) includes models with
+  Secure Digital Host Controller Interface (SDHCI) controllers, allowing them
+  to interface with Secure Digital (SD) cards. This interface is used for reading,
+  writing, and managing data on SD cards, enabling storage and data transfer
+  capabilities in embedded systems.
+
+allOf:
+  - $ref: mmc-controller.yaml
+
+maintainers:
+  - Ulf Hansson <ulf.hansson@linaro.org>
+
+properties:
+  compatible:
+    const: microchip,pic32mzda-sdhci
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: base_clk
+      - const: sys_clk
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - pinctrl-names
+  - pinctrl-0
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/microchip,pic32-clock.h>
+    mmc@1f8ec000 {
+        compatible = "microchip,pic32mzda-sdhci";
+        reg = <0x1f8ec000 0x100>;
+        interrupts = <191 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&rootclk REF4CLK>, <&rootclk PB5CLK>;
+        clock-names = "base_clk", "sys_clk";
+        bus-width = <4>;
+        cap-sd-highspeed;
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_sdhc1>;
+    };
+...
index 0debccbd6519cfb20927773db0b935033ef920df..6dd26ad314916a3e40cf55ff69a7d93ed63dbdd4 100644 (file)
@@ -32,6 +32,7 @@ properties:
           - const: mediatek,mt2701-mmc
       - items:
           - enum:
+              - mediatek,mt6893-mmc
               - mediatek,mt8186-mmc
               - mediatek,mt8188-mmc
               - mediatek,mt8192-mmc
@@ -299,6 +300,7 @@ allOf:
       properties:
         compatible:
           enum:
+            - mediatek,mt6893-mmc
             - mediatek,mt8186-mmc
             - mediatek,mt8188-mmc
             - mediatek,mt8195-mmc
index 773baa6c2656ce663de25c5919d53d5f8c114416..7563623876fc07558a4b4a2a7645756ac9ba2488 100644 (file)
@@ -69,7 +69,9 @@ properties:
               - renesas,sdhi-r9a09g011 # RZ/V2M
           - const: renesas,rzg2l-sdhi
       - items:
-          - const: renesas,sdhi-r9a09g047 # RZ/G3E
+          - enum:
+              - renesas,sdhi-r9a09g047 # RZ/G3E
+              - renesas,sdhi-r9a09g056 # RZ/V2N
           - const: renesas,sdhi-r9a09g057 # RZ/V2H(P)
 
   reg:
index eed9063e9bb352b5c8dac10ae2d289c5ca17f81b..2b2cbce2458b70b96b98c042109b10ead26e2291 100644 (file)
@@ -60,6 +60,7 @@ properties:
               - qcom,sm6125-sdhci
               - qcom,sm6350-sdhci
               - qcom,sm6375-sdhci
+              - qcom,sm7150-sdhci
               - qcom,sm8150-sdhci
               - qcom,sm8250-sdhci
               - qcom,sm8350-sdhci
diff --git a/Bindings/mmc/sdhci.txt b/Bindings/mmc/sdhci.txt
deleted file mode 100644 (file)
index 0e9923a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-The properties specific for SD host controllers. For properties shared by MMC
-host controllers refer to the mmc[1] bindings.
-
-  [1] Documentation/devicetree/bindings/mmc/mmc.txt
-
-Optional properties:
-- sdhci-caps-mask: The sdhci capabilities register is incorrect. This 64bit
-  property corresponds to the bits in the sdhci capability register. If the bit
-  is on in the mask then the bit is incorrect in the register and should be
-  turned off, before applying sdhci-caps.
-- sdhci-caps: The sdhci capabilities register is incorrect. This 64bit
-  property corresponds to the bits in the sdhci capability register. If the
-  bit is on in the property then the bit should be turned on.
index e6e604072d3c6de9370697739f1b7d4e15d6ed21..f882219a0a26a71d1f497e0e224db34db18d6ef4 100644 (file)
@@ -19,6 +19,9 @@ properties:
               - rockchip,rk3562-dwcmshc
               - rockchip,rk3576-dwcmshc
           - const: rockchip,rk3588-dwcmshc
+      - items:
+          - const: sophgo,sg2044-dwcmshc
+          - const: sophgo,sg2042-dwcmshc
       - enum:
           - rockchip,rk3568-dwcmshc
           - rockchip,rk3588-dwcmshc
@@ -117,10 +120,6 @@ allOf:
       required:
         - power-domains
 
-    else:
-      properties:
-        power-domains: false
-
 unevaluatedProperties: false
 
 examples:
diff --git a/Bindings/mmc/spacemit,sdhci.yaml b/Bindings/mmc/spacemit,sdhci.yaml
new file mode 100644 (file)
index 0000000..13d9382
--- /dev/null
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/spacemit,sdhci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SpacemiT SDHCI Controller
+
+maintainers:
+  - Yixun Lan <dlan@gentoo.org>
+
+allOf:
+  - $ref: mmc-controller.yaml#
+
+properties:
+  compatible:
+    const: spacemit,k1-sdhci
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: core clock, used by internal controller
+      - description: io clock, output for SD, SDIO, eMMC device
+
+  clock-names:
+    items:
+      - const: core
+      - const: io
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    mmc@d4281000 {
+      compatible = "spacemit,k1-sdhci";
+      reg = <0xd4281000 0x200>;
+      interrupts = <101>;
+      interrupt-parent = <&plic>;
+      clocks = <&clk_apmu 10>, <&clk_apmu 13>;
+      clock-names = "core", "io";
+    };
diff --git a/Bindings/mmc/vt8500-sdmmc.txt b/Bindings/mmc/vt8500-sdmmc.txt
deleted file mode 100644 (file)
index d7fb6ab..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-* Wondermedia WM8505/WM8650 SD/MMC Host Controller
-
-This file documents differences between the core properties described
-by mmc.txt and the properties used by the wmt-sdmmc driver.
-
-Required properties:
-- compatible: Should be "wm,wm8505-sdhc".
-- interrupts: Two interrupts are required - regular irq and dma irq.
-
-Optional properties:
-- sdon-inverted: SD_ON bit is inverted on the controller
-
-Examples:
-
-sdhc@d800a000 {
-       compatible = "wm,wm8505-sdhc";
-       reg = <0xd800a000 0x1000>;
-       interrupts = <20 21>;
-       clocks = <&sdhc>;
-       bus-width = <4>;
-       sdon-inverted;
-};
-
diff --git a/Bindings/mmc/wm,wm8505-sdhc.yaml b/Bindings/mmc/wm,wm8505-sdhc.yaml
new file mode 100644 (file)
index 0000000..5b55174
--- /dev/null
@@ -0,0 +1,66 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/wm,wm8505-sdhc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: WonderMedia SoC SDHCI Controller
+
+maintainers:
+  - Alexey Charkov <alchark@gmail.com>
+
+allOf:
+  - $ref: mmc-controller.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - const: wm,wm8505-sdhc
+      - items:
+          - const: wm,wm8650-sdhc
+          - const: wm,wm8505-sdhc
+      - items:
+          - const: wm,wm8750-sdhc
+          - const: wm,wm8505-sdhc
+      - items:
+          - const: wm,wm8850-sdhc
+          - const: wm,wm8505-sdhc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: SDMMC controller interrupt
+      - description: SDMMC controller DMA interrupt
+
+  sdon-inverted:
+    type: boolean
+    description: All chips before (not including) WM8505 rev. A2 treated their
+      "clock stop" bit (register offset 0x08 a.k.a. SDMMC_BUSMODE, bit 0x10)
+      as "set 1 to disable SD clock", while all the later versions treated it
+      as "set 0 to disable SD clock". Set this property for later versions of
+      wm,wm8505-sdhc. On wm,wm8650-sdhc and later this property is implied and
+      does not need to be set explicitly
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    mmc@d800a000 {
+        compatible = "wm,wm8505-sdhc";
+        reg = <0xd800a000 0x1000>;
+        interrupts = <20>, <21>;
+        clocks = <&sdhc>;
+        bus-width = <4>;
+        sdon-inverted;
+    };
diff --git a/Bindings/mtd/fsl,vf610-nfc.yaml b/Bindings/mtd/fsl,vf610-nfc.yaml
new file mode 100644 (file)
index 0000000..480a5c8
--- /dev/null
@@ -0,0 +1,89 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mtd/fsl,vf610-nfc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale's NAND flash controller (NFC)
+
+description:
+  This variant of the Freescale NAND flash controller (NFC) can be found on
+  Vybrid (vf610), MPC5125, MCF54418 and Kinetis K70.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    enum:
+      - fsl,vf610-nfc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: nfc
+
+patternProperties:
+  "^nand@[a-f0-9]$":
+    type: object
+    $ref: raw-nand-chip.yaml
+
+    properties:
+      compatible:
+        const: fsl,vf610-nfc-nandcs
+
+      reg:
+        const: 0
+
+      nand-ecc-strength:
+        enum: [24, 32]
+
+      nand-ecc-step-size:
+        const: 2048
+
+    unevaluatedProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+allOf:
+  - $ref: nand-controller.yaml
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/vf610-clock.h>
+
+    nand-controller@400e0000 {
+        compatible = "fsl,vf610-nfc";
+        reg = <0x400e0000 0x4000>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clks VF610_CLK_NFC>;
+        clock-names = "nfc";
+        assigned-clocks = <&clks VF610_CLK_NFC>;
+        assigned-clock-rates = <33000000>;
+
+        nand@0 {
+            compatible = "fsl,vf610-nfc-nandcs";
+            reg = <0>;
+            nand-bus-width = <8>;
+            nand-ecc-mode = "hw";
+            nand-ecc-strength = <32>;
+            nand-ecc-step-size = <2048>;
+            nand-on-flash-bbt;
+        };
+    };
diff --git a/Bindings/mtd/loongson,ls1b-nand-controller.yaml b/Bindings/mtd/loongson,ls1b-nand-controller.yaml
new file mode 100644 (file)
index 0000000..a09e92e
--- /dev/null
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mtd/loongson,ls1b-nand-controller.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Loongson-1 NAND Controller
+
+maintainers:
+  - Keguang Zhang <keguang.zhang@gmail.com>
+
+description:
+  The Loongson-1 NAND controller abstracts all supported operations,
+  meaning it does not support low-level access to raw NAND flash chips.
+  Moreover, the controller is paired with the DMA engine to perform
+  READ and PROGRAM functions.
+
+allOf:
+  - $ref: nand-controller.yaml
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - loongson,ls1b-nand-controller
+          - loongson,ls1c-nand-controller
+      - items:
+          - enum:
+              - loongson,ls1a-nand-controller
+          - const: loongson,ls1b-nand-controller
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: nand
+      - const: nand-dma
+
+  dmas:
+    maxItems: 1
+
+  dma-names:
+    const: rxtx
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - dmas
+  - dma-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    nand-controller@1fe78000 {
+        compatible = "loongson,ls1b-nand-controller";
+        reg = <0x1fe78000 0x24>, <0x1fe78040 0x4>;
+        reg-names = "nand", "nand-dma";
+        dmas = <&dma 0>;
+        dma-names = "rxtx";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        nand@0 {
+            reg = <0>;
+            label = "ls1x-nand";
+            nand-use-soft-ecc-engine;
+            nand-ecc-algo = "hamming";
+        };
+    };
index 35b4206ea9183bc1a254251d551e3bde88ae8658..5511389960f0336e188811df569a87216a23322b 100644 (file)
@@ -11,12 +11,18 @@ maintainers:
 
 properties:
   compatible:
-    enum:
-      - qcom,ipq806x-nand
-      - qcom,ipq4019-nand
-      - qcom,ipq6018-nand
-      - qcom,ipq8074-nand
-      - qcom,sdx55-nand
+    oneOf:
+      - items:
+          - enum:
+              - qcom,sdx75-nand
+          - const: qcom,sdx55-nand
+      - items:
+          - enum:
+              - qcom,ipq806x-nand
+              - qcom,ipq4019-nand
+              - qcom,ipq6018-nand
+              - qcom,ipq8074-nand
+              - qcom,sdx55-nand
 
   reg:
     maxItems: 1
@@ -95,6 +101,18 @@ allOf:
           items:
             - const: rxtx
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sdx75-nand
+
+    then:
+      properties:
+        iommus:
+          maxItems: 1
+
   - if:
       properties:
         compatible:
diff --git a/Bindings/mtd/vf610-nfc.txt b/Bindings/mtd/vf610-nfc.txt
deleted file mode 100644 (file)
index 7db5e6e..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-Freescale's NAND flash controller (NFC)
-
-This variant of the Freescale NAND flash controller (NFC) can be found on
-Vybrid (vf610), MPC5125, MCF54418 and Kinetis K70.
-
-Required properties:
-- compatible: Should be set to "fsl,vf610-nfc".
-- reg: address range of the NFC.
-- interrupts: interrupt of the NFC.
-- #address-cells: shall be set to 1. Encode the nand CS.
-- #size-cells : shall be set to 0.
-- assigned-clocks: main clock from the SoC, for Vybrid <&clks VF610_CLK_NFC>;
-- assigned-clock-rates: The NAND bus timing is derived from this clock
-    rate and should not exceed maximum timing for any NAND memory chip
-    in a board stuffing. Typical NAND memory timings derived from this
-    clock are found in the SoC hardware reference manual. Furthermore,
-    there might be restrictions on maximum rates when using hardware ECC.
-
-- #address-cells, #size-cells : Must be present if the device has sub-nodes
-  representing partitions.
-
-Required children nodes:
-Children nodes represent the available nand chips. Currently the driver can
-only handle one NAND chip.
-
-Required properties:
-- compatible: Should be set to "fsl,vf610-nfc-cs".
-- nand-bus-width: see nand-controller.yaml
-- nand-ecc-mode: see nand-controller.yaml
-
-Required properties for hardware ECC:
-- nand-ecc-strength: supported strengths are 24 and 32 bit (see nand-controller.yaml)
-- nand-ecc-step-size: step size equals page size, currently only 2k pages are
-    supported
-- nand-on-flash-bbt: see nand-controller.yaml
-
-Example:
-
-       nfc: nand@400e0000 {
-               compatible = "fsl,vf610-nfc";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               reg = <0x400e0000 0x4000>;
-               interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&clks VF610_CLK_NFC>;
-               clock-names = "nfc";
-               assigned-clocks = <&clks VF610_CLK_NFC>;
-               assigned-clock-rates = <33000000>;
-
-               nand@0 {
-                       compatible = "fsl,vf610-nfc-nandcs";
-                       reg = <0>;
-                       nand-bus-width = <8>;
-                       nand-ecc-mode = "hw";
-                       nand-ecc-strength = <32>;
-                       nand-ecc-step-size = <2048>;
-                       nand-on-flash-bbt;
-               };
-       };
index b597c1f2c57723a3c106d3f3066a9f7ee40e16e9..ef7e33ec85d479ce57c5fe4a780f81a08a6ab6ba 100644 (file)
@@ -25,6 +25,10 @@ properties:
     description:
       List of gpios used to control the multiplexer, least significant bit first.
 
+  mux-supply:
+    description:
+      Regulator to power on the multiplexer.
+
   '#mux-control-cells':
     enum: [ 0, 1 ]
 
diff --git a/Bindings/net/aeonsemi,as21xxx.yaml b/Bindings/net/aeonsemi,as21xxx.yaml
new file mode 100644 (file)
index 0000000..69eb29d
--- /dev/null
@@ -0,0 +1,122 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/aeonsemi,as21xxx.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Aeonsemi AS21XXX Ethernet PHY
+
+maintainers:
+  - Christian Marangi <ansuelsmth@gmail.com>
+
+description: |
+  Aeonsemi AS21xxx Ethernet PHYs requires a firmware to be loaded to actually
+  work. The same firmware is compatible with various PHYs of the same family.
+
+  A PHY with not firmware loaded will be exposed on the MDIO bus with ID
+  0x7500 0x7500 or 0x7500 0x9410 on C45 registers.
+
+  This can be done and is implemented by OEM in 2 different way:
+    - Attached SPI flash directly to the PHY with the firmware. The PHY
+      will self load the firmware in the presence of this configuration.
+    - Manually provided firmware loaded from a file in the filesystem.
+
+  Each PHY can support up to 5 LEDs.
+
+  AS2xxx PHY Name logic:
+
+  AS21x1xxB1
+      ^ ^^
+      | |J: Supports SyncE/PTP
+      | |P: No SyncE/PTP support
+      | 1: Supports 2nd Serdes
+      | 2: Not 2nd Serdes support
+      0: 10G, 5G, 2.5G
+      5: 5G, 2.5G
+      2: 2.5G
+
+allOf:
+  - $ref: ethernet-phy.yaml#
+
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - ethernet-phy-id7500.9410
+          - ethernet-phy-id7500.9402
+          - ethernet-phy-id7500.9412
+          - ethernet-phy-id7500.9422
+          - ethernet-phy-id7500.9432
+          - ethernet-phy-id7500.9442
+          - ethernet-phy-id7500.9452
+          - ethernet-phy-id7500.9462
+          - ethernet-phy-id7500.9472
+          - ethernet-phy-id7500.9482
+          - ethernet-phy-id7500.9492
+  required:
+    - compatible
+
+properties:
+  reg:
+    maxItems: 1
+
+  firmware-name:
+    description: specify the name of PHY firmware to load
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+if:
+  properties:
+    compatible:
+      contains:
+        const: ethernet-phy-id7500.9410
+then:
+  required:
+    - firmware-name
+else:
+  properties:
+    firmware-name: false
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/leds/common.h>
+
+    mdio {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        ethernet-phy@1f {
+            compatible = "ethernet-phy-id7500.9410",
+                         "ethernet-phy-ieee802.3-c45";
+
+            reg = <31>;
+            firmware-name = "as21x1x_fw.bin";
+
+            leds {
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                led@0 {
+                    reg = <0>;
+                    color = <LED_COLOR_ID_GREEN>;
+                    function = LED_FUNCTION_LAN;
+                    function-enumerator = <0>;
+                    default-state = "keep";
+                };
+
+                led@1 {
+                    reg = <1>;
+                    color = <LED_COLOR_ID_GREEN>;
+                    function = LED_FUNCTION_LAN;
+                    function-enumerator = <1>;
+                    default-state = "keep";
+                };
+            };
+        };
+    };
index 0fdd1126541774acacc783d98e4c089b2d2b85e2..6d22131ac2f9e28390b9e785ce33e8d983eafd0f 100644 (file)
@@ -57,6 +57,16 @@ properties:
       - const: hsi-mac
       - const: xfp-mac
 
+  memory-region:
+    items:
+      - description: QDMA0 buffer memory
+      - description: QDMA1 buffer memory
+
+  memory-region-names:
+    items:
+      - const: qdma0-buf
+      - const: qdma1-buf
+
   "#address-cells":
     const: 1
 
@@ -140,6 +150,9 @@ examples:
                      <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
                      <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
 
+        memory-region = <&qdma0_buf>, <&qdma1_buf>;
+        memory-region-names = "qdma0-buf", "qdma1-buf";
+
         airoha,npu = <&npu>;
 
         #address-cells = <1>;
index 7fe0352dff0f8d74a08f3f6aac5450ad685e6a08..19934d5c24e5fb27afedf2634b187f6d7940fa96 100644 (file)
@@ -23,6 +23,7 @@ properties:
               - allwinner,sun20i-d1-emac
               - allwinner,sun50i-h6-emac
               - allwinner,sun50i-h616-emac0
+              - allwinner,sun55i-a523-gmac0
           - const: allwinner,sun50i-a64-emac
 
   reg:
index d02e9dd847eff9f1c1d0a4cfc14b8909b60c460a..3ab60c70286f5aecac5bf0ba98ceda15f9c9bad5 100644 (file)
@@ -48,6 +48,18 @@ properties:
     description:
       The GPIO number of the NXP chipset used for BT_WAKE_IN.
 
+  interrupts:
+    maxItems: 1
+    description:
+      Host wakeup by falling edge interrupt on this pin which is
+      connected to BT_WAKE_OUT pin of the NXP chipset.
+
+  interrupt-names:
+    items:
+      - const: wakeup
+
+  wakeup-source: true
+
   nxp,wakeout-pin:
     $ref: /schemas/types.yaml#/definitions/uint8
     description:
@@ -61,6 +73,7 @@ unevaluatedProperties: false
 examples:
   - |
     #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
     serial {
         bluetooth {
             compatible = "nxp,88w8987-bt";
@@ -70,5 +83,9 @@ examples:
             nxp,wakein-pin = /bits/ 8 <18>;
             nxp,wakeout-pin = /bits/ 8 <19>;
             local-bd-address = [66 55 44 33 22 11];
+            interrupt-parent = <&gpio>;
+            interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
+            interrupt-names = "wakeup";
+            wakeup-source;
         };
     };
index 660e2ca42daf50f5a5e9a3522b1ed2d7c1d3698c..a3db6d594c8c9c60adaf9a0967c0af3cd93e4a51 100644 (file)
@@ -4,7 +4,7 @@
 $id: http://devicetree.org/schemas/net/brcm,asp-v2.0.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Broadcom ASP 2.0 Ethernet controller
+title: Broadcom ASP Ethernet controller
 
 maintainers:
   - Justin Chen <justin.chen@broadcom.com>
@@ -15,6 +15,10 @@ description: Broadcom Ethernet controller first introduced with 72165
 properties:
   compatible:
     oneOf:
+      - items:
+          - enum:
+              - brcm,bcm74110-asp
+          - const: brcm,asp-v3.0
       - items:
           - enum:
               - brcm,bcm74165b0-asp
@@ -23,10 +27,6 @@ properties:
           - enum:
               - brcm,bcm74165-asp
           - const: brcm,asp-v2.1
-      - items:
-          - enum:
-              - brcm,bcm72165-asp
-          - const: brcm,asp-v2.0
 
   "#address-cells":
     const: 1
@@ -39,11 +39,9 @@ properties:
   ranges: true
 
   interrupts:
-    minItems: 1
     items:
       - description: RX/TX interrupt
-      - description: Port 0 Wake-on-LAN
-      - description: Port 1 Wake-on-LAN
+      - description: Wake-on-LAN interrupt
 
   clocks:
     maxItems: 1
@@ -106,16 +104,17 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
 
     ethernet@9c00000 {
-        compatible = "brcm,bcm72165-asp", "brcm,asp-v2.0";
+        compatible = "brcm,bcm74165-asp", "brcm,asp-v2.1";
         reg = <0x9c00000 0x1fff14>;
-        interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+        interrupts-extended = <&intc GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                              <&aon_pm_l2_intc 14>;
         ranges = <0x0 0x9c00000 0x1fff14>;
         clocks = <&scmi 14>;
         #address-cells = <1>;
         #size-cells = <1>;
 
         mdio@c614 {
-            compatible = "brcm,asp-v2.0-mdio";
+            compatible = "brcm,asp-v2.1-mdio";
             reg = <0xc614 0x8>;
             reg-names = "mdio";
             #address-cells = <1>;
@@ -127,7 +126,7 @@ examples:
        };
 
         mdio@ce14 {
-            compatible = "brcm,asp-v2.0-mdio";
+            compatible = "brcm,asp-v2.1-mdio";
             reg = <0xce14 0x8>;
             reg-names = "mdio";
             #address-cells = <1>;
index 63bee5b542f50135479bf42891fc97408d1543ee..43516dd357b8cc272d7ea835ecd0c40ca476cb95 100644 (file)
@@ -22,9 +22,9 @@ properties:
       - brcm,genet-mdio-v3
       - brcm,genet-mdio-v4
       - brcm,genet-mdio-v5
-      - brcm,asp-v2.0-mdio
       - brcm,asp-v2.1-mdio
       - brcm,asp-v2.2-mdio
+      - brcm,asp-v3.0-mdio
       - brcm,unimac-mdio
       - brcm,bcm6846-mdio
 
index 144a3785132c31a23253dc5b11b4ea215deaf9fc..ec0c2168e4b9e8730cc4180160c8a51f811bdd27 100644 (file)
@@ -16,9 +16,7 @@ properties:
           - nxp,sja1000
           - technologic,sja1000
       - items:
-          - enum:
-              - renesas,r9a06g032-sja1000 # RZ/N1D
-              - renesas,r9a06g033-sja1000 # RZ/N1S
+          - const: renesas,r9a06g032-sja1000 # RZ/N1D
           - const: renesas,rzn1-sja1000 # RZ/N1
 
   reg:
index f6884f6e59e7431702f8815cfb51c23a81382a9e..f4ac21c684278b961d7b8d8db67ee8c79bb0b483 100644 (file)
@@ -42,19 +42,80 @@ properties:
               - renesas,r9a07g054-canfd    # RZ/V2L
           - const: renesas,rzg2l-canfd     # RZ/G2L family
 
+      - const: renesas,r9a09g047-canfd     # RZ/G3E
+
   reg:
     maxItems: 1
 
-  interrupts: true
+  interrupts:
+    oneOf:
+      - items:
+          - description: Channel interrupt
+          - description: Global interrupt
+      - items:
+          - description: CAN global error interrupt
+          - description: CAN receive FIFO interrupt
+          - description: CAN0 error interrupt
+          - description: CAN0 transmit interrupt
+          - description: CAN0 transmit/receive FIFO receive completion interrupt
+          - description: CAN1 error interrupt
+          - description: CAN1 transmit interrupt
+          - description: CAN1 transmit/receive FIFO receive completion interrupt
+          - description: CAN2 error interrupt
+          - description: CAN2 transmit interrupt
+          - description: CAN2 transmit/receive FIFO receive completion interrupt
+          - description: CAN3 error interrupt
+          - description: CAN3 transmit interrupt
+          - description: CAN3 transmit/receive FIFO receive completion interrupt
+          - description: CAN4 error interrupt
+          - description: CAN4 transmit interrupt
+          - description: CAN4 transmit/receive FIFO receive completion interrupt
+          - description: CAN5 error interrupt
+          - description: CAN5 transmit interrupt
+          - description: CAN5 transmit/receive FIFO receive completion interrupt
+        minItems: 8
+
+  interrupt-names:
+    oneOf:
+      - items:
+          - const: ch_int
+          - const: g_int
+      - items:
+          - const: g_err
+          - const: g_recc
+          - const: ch0_err
+          - const: ch0_rec
+          - const: ch0_trx
+          - const: ch1_err
+          - const: ch1_rec
+          - const: ch1_trx
+          - const: ch2_err
+          - const: ch2_rec
+          - const: ch2_trx
+          - const: ch3_err
+          - const: ch3_rec
+          - const: ch3_trx
+          - const: ch4_err
+          - const: ch4_rec
+          - const: ch4_trx
+          - const: ch5_err
+          - const: ch5_rec
+          - const: ch5_trx
+        minItems: 8
 
   clocks:
     maxItems: 3
 
   clock-names:
-    items:
-      - const: fck
-      - const: canfd
-      - const: can_clk
+    oneOf:
+      - items:
+          - const: fck
+          - const: canfd
+          - const: can_clk
+      - items:
+          - const: fck
+          - const: ram_clk
+          - const: can_clk
 
   power-domains:
     maxItems: 1
@@ -117,52 +178,77 @@ allOf:
     then:
       properties:
         interrupts:
-          items:
-            - description: CAN global error interrupt
-            - description: CAN receive FIFO interrupt
-            - description: CAN0 error interrupt
-            - description: CAN0 transmit interrupt
-            - description: CAN0 transmit/receive FIFO receive completion interrupt
-            - description: CAN1 error interrupt
-            - description: CAN1 transmit interrupt
-            - description: CAN1 transmit/receive FIFO receive completion interrupt
+          maxItems: 8
 
         interrupt-names:
-          items:
-            - const: g_err
-            - const: g_recc
-            - const: ch0_err
-            - const: ch0_rec
-            - const: ch0_trx
-            - const: ch1_err
-            - const: ch1_rec
-            - const: ch1_trx
+          maxItems: 8
 
         resets:
+          minItems: 2
           maxItems: 2
 
         reset-names:
-          items:
-            - const: rstp_n
-            - const: rstc_n
+          minItems: 2
+          maxItems: 2
 
       required:
         - reset-names
-    else:
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,rcar-gen3-canfd
+              - renesas,rcar-gen4-canfd
+    then:
       properties:
         interrupts:
-          items:
-            - description: Channel interrupt
-            - description: Global interrupt
+          minItems: 2
+          maxItems: 2
 
         interrupt-names:
-          items:
-            - const: ch_int
-            - const: g_int
+          minItems: 2
+          maxItems: 2
 
         resets:
           maxItems: 1
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a09g047-canfd
+    then:
+      properties:
+        interrupts:
+          minItems: 20
+
+        interrupt-names:
+          minItems: 20
+
+        resets:
+          minItems: 2
+          maxItems: 2
+
+        reset-names:
+          minItems: 2
+          maxItems: 2
+
+      required:
+        - reset-names
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,rcar-gen3-canfd
+              - renesas,rzg2l-canfd
+    then:
+      patternProperties:
+        "^channel[2-7]$": false
+
   - if:
       properties:
         compatible:
@@ -171,16 +257,15 @@ allOf:
     then:
       patternProperties:
         "^channel[4-7]$": false
-    else:
-      if:
-        not:
-          properties:
-            compatible:
-              contains:
-                const: renesas,rcar-gen4-canfd
-      then:
-        patternProperties:
-          "^channel[2-7]$": false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,r9a09g047-canfd
+    then:
+      patternProperties:
+        "^channel[6-7]$": false
 
 unevaluatedProperties: false
 
index ea979bcae1d6ea3f790330faa7bd1a13d19bac95..51205f9f29856de6c7df1b667b11ae7990da2ac9 100644 (file)
@@ -96,6 +96,10 @@ properties:
           Built-in switch of the Airoha EN7581 SoC
         const: airoha,en7581-switch
 
+      - description:
+          Built-in switch of the Airoha AN7583 SoC
+        const: airoha,an7583-switch
+
   reg:
     maxItems: 1
 
@@ -291,6 +295,7 @@ allOf:
           enum:
             - mediatek,mt7988-switch
             - airoha,en7581-switch
+            - airoha,an7583-switch
     then:
       $ref: "#/$defs/mt7530-dsa-port"
       properties:
index a2d4c626f659a57fc7dcd39301f322c28afed69d..7cbf11bbe99ca6941ebc2155209020d0426aeba1 100644 (file)
@@ -16,30 +16,6 @@ properties:
   label:
     description: Human readable label on a port of a box.
 
-  local-mac-address:
-    description:
-      Specifies the MAC address that was assigned to the network device.
-    $ref: /schemas/types.yaml#/definitions/uint8-array
-    minItems: 6
-    maxItems: 6
-
-  mac-address:
-    description:
-      Specifies the MAC address that was last used by the boot
-      program; should be used in cases where the MAC address assigned
-      to the device by the boot program is different from the
-      local-mac-address property.
-    $ref: /schemas/types.yaml#/definitions/uint8-array
-    minItems: 6
-    maxItems: 6
-
-  max-frame-size:
-    $ref: /schemas/types.yaml#/definitions/uint32
-    description:
-      Maximum transfer unit (IEEE defined MTU), rather than the
-      maximum frame size (there\'s contradiction in the Devicetree
-      Specification).
-
   max-speed:
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
@@ -195,7 +171,7 @@ properties:
             description:
               Link speed.
             $ref: /schemas/types.yaml#/definitions/uint32
-            enum: [10, 100, 1000, 2500, 10000]
+            enum: [10, 100, 1000, 2500, 5000, 10000]
 
           full-duplex:
             $ref: /schemas/types.yaml#/definitions/flag
@@ -260,6 +236,7 @@ dependencies:
   pcs-handle-names: [pcs-handle]
 
 allOf:
+  - $ref: /schemas/net/network-class.yaml#
   - if:
       properties:
         phy-mode:
index 824bbe4333b7ed95cc39737d3c334a20aa890f01..71e2cd32580f2e9e1af88e6f74517ccb92d1c20f 100644 (file)
@@ -238,6 +238,16 @@ properties:
       peak-to-peak specified in ANSI X3.263. When omitted, the PHYs default
       will be left as is.
 
+  mac-termination-ohms:
+    maximum: 200
+    description:
+      The xMII signals need series termination on the driver side to match both
+      the output driver impedance and the line characteristic impedance, to
+      prevent reflections and EMI problems. Select a resistance value which is
+      supported by the builtin resistors of the PHY, otherwise the resistors may
+      have to be placed on board. When omitted, the PHYs default will be left as
+      is.
+
   leds:
     type: object
 
diff --git a/Bindings/net/network-class.yaml b/Bindings/net/network-class.yaml
new file mode 100644 (file)
index 0000000..06461fb
--- /dev/null
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/network-class.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Network Class Common Properties
+
+maintainers:
+  - Devicetree Specification Mailing List <devicetree-spec@vger.kernel.org>
+
+properties:
+  address-bits:
+    description:
+      Specifies number of address bits required to address the device
+      described by this node, e.g. size of the MAC address.
+    default: 48
+    const: 48
+
+  local-mac-address:
+    description:
+      Specifies MAC address that was assigned to the network device described by
+      the node containing this property.
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    minItems: 6
+    maxItems: 6
+
+  mac-address:
+    description:
+      Specifies the MAC address that was last used by the boot program. This
+      property should be used in cases where the MAC address assigned to the
+      device by the boot program is different from the
+      local-mac-address property. This property shall be used only if the value
+      differs from local-mac-address property value.
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    minItems: 6
+    maxItems: 6
+
+  max-frame-size:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Maximum transfer unit (IEEE defined MTU), rather than the
+      maximum frame size (there\'s contradiction in the Devicetree
+      Specification).
+
+additionalProperties: true
diff --git a/Bindings/net/renesas,r9a09g057-gbeth.yaml b/Bindings/net/renesas,r9a09g057-gbeth.yaml
new file mode 100644 (file)
index 0000000..c498a99
--- /dev/null
@@ -0,0 +1,203 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/renesas,r9a09g057-gbeth.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: GBETH glue layer for Renesas RZ/V2H(P) (and similar SoCs)
+
+maintainers:
+  - Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
+
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - renesas,r9a09g056-gbeth
+          - renesas,r9a09g057-gbeth
+          - renesas,rzv2h-gbeth
+  required:
+    - compatible
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - renesas,r9a09g056-gbeth # RZ/V2N
+          - renesas,r9a09g057-gbeth # RZ/V2H(P)
+      - const: renesas,rzv2h-gbeth
+      - const: snps,dwmac-5.20
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: CSR clock
+      - description: AXI system clock
+      - description: PTP clock
+      - description: TX clock
+      - description: RX clock
+      - description: TX clock phase-shifted by 180 degrees
+      - description: RX clock phase-shifted by 180 degrees
+
+  clock-names:
+    items:
+      - const: stmmaceth
+      - const: pclk
+      - const: ptp_ref
+      - const: tx
+      - const: rx
+      - const: tx-180
+      - const: rx-180
+
+  interrupts:
+    minItems: 11
+
+  interrupt-names:
+    items:
+      - const: macirq
+      - const: eth_wake_irq
+      - const: eth_lpi
+      - const: rx-queue-0
+      - const: rx-queue-1
+      - const: rx-queue-2
+      - const: rx-queue-3
+      - const: tx-queue-0
+      - const: tx-queue-1
+      - const: tx-queue-2
+      - const: tx-queue-3
+
+  resets:
+    items:
+      - description: AXI power-on system reset
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - interrupt-names
+  - resets
+
+allOf:
+  - $ref: snps,dwmac.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/renesas-cpg-mssr.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    ethernet@15c30000 {
+        compatible = "renesas,r9a09g057-gbeth", "renesas,rzv2h-gbeth", "snps,dwmac-5.20";
+        reg = <0x15c30000 0x10000>;
+        clocks =  <&cpg CPG_MOD 0xbd>, <&cpg CPG_MOD 0xbc>,
+                  <&ptp_clock>, <&cpg CPG_MOD 0xb8>,
+                  <&cpg CPG_MOD 0xb9>, <&cpg CPG_MOD 0xba>,
+                  <&cpg CPG_MOD 0xbb>;
+        clock-names = "stmmaceth", "pclk", "ptp_ref",
+                      "tx", "rx", "tx-180", "rx-180";
+        resets = <&cpg 0xb0>;
+        interrupts = <GIC_SPI 765 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 767 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 766 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 772 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 773 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 774 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 745 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 768 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 769 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 770 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 771 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "macirq", "eth_wake_irq", "eth_lpi",
+                          "rx-queue-0", "rx-queue-1", "rx-queue-2",
+                          "rx-queue-3", "tx-queue-0", "tx-queue-1",
+                          "tx-queue-2", "tx-queue-3";
+        phy-mode = "rgmii-id";
+        snps,multicast-filter-bins = <256>;
+        snps,perfect-filter-entries = <128>;
+        rx-fifo-depth = <8192>;
+        tx-fifo-depth = <8192>;
+        snps,fixed-burst;
+        snps,force_thresh_dma_mode;
+        snps,axi-config = <&stmmac_axi_setup>;
+        snps,mtl-rx-config = <&mtl_rx_setup>;
+        snps,mtl-tx-config = <&mtl_tx_setup>;
+        snps,txpbl = <32>;
+        snps,rxpbl = <32>;
+        phy-handle = <&phy0>;
+
+        stmmac_axi_setup: stmmac-axi-config {
+            snps,lpi_en;
+            snps,wr_osr_lmt = <0xf>;
+            snps,rd_osr_lmt = <0xf>;
+            snps,blen = <16 8 4 0 0 0 0>;
+        };
+
+        mtl_rx_setup: rx-queues-config {
+            snps,rx-queues-to-use = <4>;
+            snps,rx-sched-sp;
+
+            queue0 {
+                snps,dcb-algorithm;
+                snps,priority = <0x1>;
+                snps,map-to-dma-channel = <0>;
+            };
+
+            queue1 {
+                snps,dcb-algorithm;
+                snps,priority = <0x2>;
+                snps,map-to-dma-channel = <1>;
+            };
+
+            queue2 {
+                snps,dcb-algorithm;
+                snps,priority = <0x4>;
+                snps,map-to-dma-channel = <2>;
+            };
+
+            queue3 {
+                snps,dcb-algorithm;
+                snps,priority = <0x8>;
+                snps,map-to-dma-channel = <3>;
+            };
+        };
+
+        mtl_tx_setup: tx-queues-config {
+            snps,tx-queues-to-use = <4>;
+
+            queue0 {
+                snps,dcb-algorithm;
+                snps,priority = <0x1>;
+            };
+
+            queue1 {
+                snps,dcb-algorithm;
+                snps,priority = <0x2>;
+            };
+
+            queue2 {
+                snps,dcb-algorithm;
+                snps,priority = <0x4>;
+            };
+
+            queue3 {
+                snps,dcb-algorithm;
+                snps,priority = <0x1>;
+            };
+        };
+
+        mdio {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            compatible = "snps,dwmac-mdio";
+
+            phy0: ethernet-phy@0 {
+                reg = <0>;
+            };
+        };
+    };
index 78b3030dc56d279ea3618200dc8af11d7fbf429c..90b79283e228b0372c613ef56395da7847513e2d 100644 (file)
@@ -75,6 +75,7 @@ properties:
         - qcom,sm8150-ethqos
         - renesas,r9a06g032-gmac
         - renesas,rzn1-gmac
+        - renesas,rzv2h-gbeth
         - rockchip,px30-gmac
         - rockchip,rk3128-gmac
         - rockchip,rk3228-gmac
@@ -114,19 +115,25 @@ properties:
 
   interrupts:
     minItems: 1
-    items:
-      - description: Combined signal for various interrupt events
-      - description: The interrupt to manage the remote wake-up packet detection
-      - description: The interrupt that occurs when Rx exits the LPI state
-      - description: The interrupt that occurs when HW safety error triggered
+    maxItems: 11
 
   interrupt-names:
     minItems: 1
+    maxItems: 11
     items:
-      - const: macirq
-      - enum: [eth_wake_irq, eth_lpi, sfty]
-      - enum: [eth_wake_irq, eth_lpi, sfty]
-      - enum: [eth_wake_irq, eth_lpi, sfty]
+      oneOf:
+        - description: Combined signal for various interrupt events
+          const: macirq
+        - description: The interrupt to manage the remote wake-up packet detection
+          const: eth_wake_irq
+        - description: The interrupt that occurs when Rx exits the LPI state
+          const: eth_lpi
+        - description: The interrupt that occurs when HW safety error triggered
+          const: sfty
+        - description: Per channel receive completion interrupt
+          pattern: '^rx-queue-[0-3]$'
+        - description: Per channel transmit completion interrupt
+          pattern: '^tx-queue-[0-3]$'
 
   clocks:
     minItems: 1
@@ -703,7 +710,7 @@ examples:
             };
         };
 
-        mdio0 {
+        mdio {
             #address-cells = <1>;
             #size-cells = <0>;
             compatible = "snps,dwmac-mdio";
index 4dd2dc9c678b70120e7fe7d64d9c1963264ba690..8afbd9ebd73f69934c14a20af73822d0ab7e3a1c 100644 (file)
@@ -80,6 +80,8 @@ examples:
       interrupt-parent = <&intc>;
       interrupts = <296 IRQ_TYPE_LEVEL_HIGH>;
       interrupt-names = "macirq";
+      phy-handle = <&phy0>;
+      phy-mode = "rgmii-id";
       resets = <&rst 30>;
       reset-names = "stmmaceth";
       snps,multicast-filter-bins = <0>;
@@ -91,7 +93,6 @@ examples:
       snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
       snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
       snps,axi-config = <&gmac0_stmmac_axi_setup>;
-      status = "disabled";
 
       gmac0_mtl_rx_setup: rx-queues-config {
         snps,rx-queues-to-use = <8>;
index 50c24248df266f1950371b950cd9c4d417835f97..28a0bddb9af940e79a7a768a35ef588e28ec5bd4 100644 (file)
@@ -122,6 +122,9 @@ properties:
       - free-running
       - recovered
 
+  mac-termination-ohms:
+    enum: [43, 44, 46, 48, 50, 53, 55, 58, 61, 65, 69, 73, 78, 84, 91, 99]
+
 required:
   - reg
 
@@ -137,6 +140,7 @@ examples:
         rx-internal-delay-ps = <1>;
         tx-internal-delay-ps = <1>;
         ti,gpio2-clk-out = "xi";
+        mac-termination-ohms = <43>;
       };
     };
 
index b11894fbaec47b63f05b0e2442004d0328730dd5..7b3d948f187dff44980e9ecfc2ffcf57c1ab8663 100644 (file)
@@ -143,6 +143,8 @@ properties:
           label:
             description: label associated with this port
 
+          fixed-link: true
+
           ti,mac-only:
             $ref: /schemas/types.yaml#/definitions/flag
             description:
index 4158673f723c9ec46b5e0843fb2d97f910ac6b4a..8359de7ad272e217c1babf65804c90fae2d03ad9 100644 (file)
@@ -63,7 +63,7 @@ examples:
             compatible = "vertexcom,mse1021";
             reg = <0>;
             interrupt-parent = <&gpio>;
-            interrupts = <23 IRQ_TYPE_EDGE_RISING>;
+            interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
             spi-cpha;
             spi-cpol;
             spi-max-frequency = <7142857>;
diff --git a/Bindings/net/via,vt8500-rhine.yaml b/Bindings/net/via,vt8500-rhine.yaml
new file mode 100644 (file)
index 0000000..e663d5a
--- /dev/null
@@ -0,0 +1,41 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/via,vt8500-rhine.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: VIA Rhine 10/100 Network Controller
+
+description:
+  VIA's Ethernet controller integrated into VIA VT8500,
+  WonderMedia WM8950 and related SoCs
+
+maintainers:
+  - Alexey Charkov <alchark@gmail.com>
+
+allOf:
+  - $ref: ethernet-controller.yaml#
+
+properties:
+  compatible:
+    const: via,vt8500-rhine
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - reg
+  - interrupts
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    ethernet@d8004000 {
+        compatible = "via,vt8500-rhine";
+        reg = <0xd8004000 0x100>;
+        interrupts = <10>;
+    };
diff --git a/Bindings/net/via-rhine.txt b/Bindings/net/via-rhine.txt
deleted file mode 100644 (file)
index 334eca2..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-* VIA Rhine 10/100 Network Controller
-
-Required properties:
-- compatible : Should be "via,vt8500-rhine" for integrated
-       Rhine controllers found in VIA VT8500, WonderMedia WM8950
-       and similar. These are listed as 1106:3106 rev. 0x84 on the
-       virtual PCI bus under vendor-provided kernels
-- reg : Address and length of the io space
-- interrupts : Should contain the controller interrupt line
-
-Examples:
-
-ethernet@d8004000 {
-       compatible = "via,vt8500-rhine";
-       reg = <0xd8004000 0x100>;
-       interrupts = <10>;
-};
index a3607d55ef3671514cdf2c884cf5bd0ccaadb162..7c8100e59a6cd045837a2f602e367f3f79ced5ba 100644 (file)
@@ -16,7 +16,7 @@ description:
   binding.
 
 allOf:
-  - $ref: ieee80211.yaml#
+  - $ref: /schemas/net/wireless/wireless-controller.yaml#
 
 properties:
   compatible:
index 9e557cb838c7a712931d512376f2c601ca47667a..dc68dd59988fc757e8f53e809128cb4e820d66d1 100644 (file)
@@ -21,6 +21,12 @@ properties:
   reg:
     maxItems: 1
 
+  firmware-name:
+    maxItems: 1
+    description:
+      If present, a board or platform specific string used to lookup
+      usecase-specific firmware files for the device.
+
   vddaon-supply:
     description: VDD_AON supply regulator handle
 
diff --git a/Bindings/net/wireless/qcom,ipq5332-wifi.yaml b/Bindings/net/wireless/qcom,ipq5332-wifi.yaml
new file mode 100644 (file)
index 0000000..363a0ec
--- /dev/null
@@ -0,0 +1,315 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+# Copyright (c) 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/wireless/qcom,ipq5332-wifi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Technologies ath12k wireless devices (AHB)
+
+maintainers:
+  - Jeff Johnson <jjohnson@kernel.org>
+
+description:
+  Qualcomm Technologies IEEE 802.11be AHB devices.
+
+properties:
+  compatible:
+    enum:
+      - qcom,ipq5332-wifi
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: XO clock used for copy engine
+
+  clock-names:
+    items:
+      - const: xo
+
+  interrupts:
+    items:
+      - description: Fatal interrupt
+      - description: Ready interrupt
+      - description: Spawn acknowledge interrupt
+      - description: Stop acknowledge interrupt
+      - description: misc-pulse1 interrupt events
+      - description: misc-latch interrupt events
+      - description: sw exception interrupt events
+      - description: interrupt event for ring CE0
+      - description: interrupt event for ring CE1
+      - description: interrupt event for ring CE2
+      - description: interrupt event for ring CE3
+      - description: interrupt event for ring CE4
+      - description: interrupt event for ring CE5
+      - description: interrupt event for ring CE6
+      - description: interrupt event for ring CE7
+      - description: interrupt event for ring CE8
+      - description: interrupt event for ring CE9
+      - description: interrupt event for ring CE10
+      - description: interrupt event for ring CE11
+      - description: interrupt event for ring host2wbm-desc-feed
+      - description: interrupt event for ring host2reo-re-injection
+      - description: interrupt event for ring host2reo-command
+      - description: interrupt event for ring host2rxdma-monitor-ring1
+      - description: interrupt event for ring reo2ost-exception
+      - description: interrupt event for ring wbm2host-rx-release
+      - description: interrupt event for ring reo2host-status
+      - description: interrupt event for ring reo2host-destination-ring4
+      - description: interrupt event for ring reo2host-destination-ring3
+      - description: interrupt event for ring reo2host-destination-ring2
+      - description: interrupt event for ring reo2host-destination-ring1
+      - description: interrupt event for ring rxdma2host-monitor-destination-mac3
+      - description: interrupt event for ring rxdma2host-monitor-destination-mac2
+      - description: interrupt event for ring rxdma2host-monitor-destination-mac1
+      - description: interrupt event for ring host2rxdma-host-buf-ring-mac3
+      - description: interrupt event for ring host2rxdma-host-buf-ring-mac2
+      - description: interrupt event for ring host2rxdma-host-buf-ring-mac1
+      - description: interrupt event for ring host2tcl-input-ring4
+      - description: interrupt event for ring host2tcl-input-ring3
+      - description: interrupt event for ring host2tcl-input-ring2
+      - description: interrupt event for ring host2tcl-input-ring1
+      - description: interrupt event for ring wbm2host-tx-completions-ring4
+      - description: interrupt event for ring wbm2host-tx-completions-ring3
+      - description: interrupt event for ring wbm2host-tx-completions-ring2
+      - description: interrupt event for ring wbm2host-tx-completions-ring1
+      - description: interrupt event for ring host2tx-monitor-ring1
+      - description: interrupt event for ring txmon2host-monitor-destination-mac3
+      - description: interrupt event for ring txmon2host-monitor-destination-mac2
+      - description: interrupt event for ring txmon2host-monitor-destination-mac1
+      - description: interrupt event for umac-reset
+
+  interrupt-names:
+    items:
+      - const: fatal
+      - const: ready
+      - const: spawn
+      - const: stop-ack
+      - const: misc-pulse1
+      - const: misc-latch
+      - const: sw-exception
+      - const: ce0
+      - const: ce1
+      - const: ce2
+      - const: ce3
+      - const: ce4
+      - const: ce5
+      - const: ce6
+      - const: ce7
+      - const: ce8
+      - const: ce9
+      - const: ce10
+      - const: ce11
+      - const: host2wbm-desc-feed
+      - const: host2reo-re-injection
+      - const: host2reo-command
+      - const: host2rxdma-monitor-ring1
+      - const: reo2ost-exception
+      - const: wbm2host-rx-release
+      - const: reo2host-status
+      - const: reo2host-destination-ring4
+      - const: reo2host-destination-ring3
+      - const: reo2host-destination-ring2
+      - const: reo2host-destination-ring1
+      - const: rxdma2host-monitor-destination-mac3
+      - const: rxdma2host-monitor-destination-mac2
+      - const: rxdma2host-monitor-destination-mac1
+      - const: host2rxdma-host-buf-ring-mac3
+      - const: host2rxdma-host-buf-ring-mac2
+      - const: host2rxdma-host-buf-ring-mac1
+      - const: host2tcl-input-ring4
+      - const: host2tcl-input-ring3
+      - const: host2tcl-input-ring2
+      - const: host2tcl-input-ring1
+      - const: wbm2host-tx-completions-ring4
+      - const: wbm2host-tx-completions-ring3
+      - const: wbm2host-tx-completions-ring2
+      - const: wbm2host-tx-completions-ring1
+      - const: host2tx-monitor-ring1
+      - const: txmon2host-monitor-destination-mac3
+      - const: txmon2host-monitor-destination-mac2
+      - const: txmon2host-monitor-destination-mac1
+      - const: umac-reset
+
+  memory-region:
+    description:
+      Memory regions used by the ath12k firmware.
+    items:
+      - description: Q6 memory region
+      - description: m3 dump memory region
+      - description: Q6 caldata memory region
+      - description: Multi Link Operation (MLO) Global memory region
+
+  memory-region-names:
+    items:
+      - const: q6-region
+      - const: m3-dump
+      - const: q6-caldb
+      - const: mlo-global-mem
+
+  qcom,calibration-variant:
+    $ref: /schemas/types.yaml#/definitions/string
+    description:
+      String to uniquely identify variant of the calibration data for designs
+      with colliding bus and device ids
+
+  qcom,rproc:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to the Qualcomm Hexagon DSP(q6 remote processor), which is utilized
+      for offloading WiFi processing tasks, this q6 remote processor operates in
+      conjunction with WiFi.
+
+  qcom,smem-states:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description: States used by the AP to signal the remote processor
+    items:
+      - description: Shutdown WCSS pd
+      - description: Stop WCSS pd
+      - description: Spawn WCSS pd
+
+  qcom,smem-state-names:
+    description:
+      Names of the states used by the AP to signal the remote processor
+    items:
+      - const: shutdown
+      - const: stop
+      - const: spawn
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - interrupt-names
+  - memory-region
+  - memory-region-names
+  - qcom,rproc
+  - qcom,smem-states
+  - qcom,smem-state-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
+
+    wifi0: wifi@c000000 {
+        compatible = "qcom,ipq5332-wifi";
+        reg = <0x0c000000 0x1000000>;
+        clocks = <&gcc GCC_XO_CLK>;
+        clock-names = "xo";
+        interrupts-extended = <&wcss_smp2p_in 8 IRQ_TYPE_NONE>,
+                              <&wcss_smp2p_in 9 IRQ_TYPE_NONE>,
+                              <&wcss_smp2p_in 12 IRQ_TYPE_NONE>,
+                              <&wcss_smp2p_in 11 IRQ_TYPE_NONE>,
+                              <&intc GIC_SPI 559 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 560 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 561 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 422 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 423 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 424 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 425 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 426 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 427 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 428 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 429 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 430 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 431 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 432 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 433 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 491 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 495 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 493 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 544 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 457 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 466 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 497 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 454 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 453 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 452 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 451 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 488 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 488 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 484 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 554 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 554 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 549 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 507 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 500 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 499 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 498 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 450 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 449 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 448 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 447 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 543 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 486 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 486 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 482 IRQ_TYPE_EDGE_RISING>,
+                              <&intc GIC_SPI 419 IRQ_TYPE_EDGE_RISING>;
+        interrupt-names = "fatal",
+                          "ready",
+                          "spawn",
+                          "stop-ack",
+                          "misc-pulse1",
+                          "misc-latch",
+                          "sw-exception",
+                          "ce0",
+                          "ce1",
+                          "ce2",
+                          "ce3",
+                          "ce4",
+                          "ce5",
+                          "ce6",
+                          "ce7",
+                          "ce8",
+                          "ce9",
+                          "ce10",
+                          "ce11",
+                          "host2wbm-desc-feed",
+                          "host2reo-re-injection",
+                          "host2reo-command",
+                          "host2rxdma-monitor-ring1",
+                          "reo2ost-exception",
+                          "wbm2host-rx-release",
+                          "reo2host-status",
+                          "reo2host-destination-ring4",
+                          "reo2host-destination-ring3",
+                          "reo2host-destination-ring2",
+                          "reo2host-destination-ring1",
+                          "rxdma2host-monitor-destination-mac3",
+                          "rxdma2host-monitor-destination-mac2",
+                          "rxdma2host-monitor-destination-mac1",
+                          "host2rxdma-host-buf-ring-mac3",
+                          "host2rxdma-host-buf-ring-mac2",
+                          "host2rxdma-host-buf-ring-mac1",
+                          "host2tcl-input-ring4",
+                          "host2tcl-input-ring3",
+                          "host2tcl-input-ring2",
+                          "host2tcl-input-ring1",
+                          "wbm2host-tx-completions-ring4",
+                          "wbm2host-tx-completions-ring3",
+                          "wbm2host-tx-completions-ring2",
+                          "wbm2host-tx-completions-ring1",
+                          "host2tx-monitor-ring1",
+                          "txmon2host-monitor-destination-mac3",
+                          "txmon2host-monitor-destination-mac2",
+                          "txmon2host-monitor-destination-mac1",
+                          "umac-reset";
+
+        memory-region = <&q6_region>, <&m3_dump>, <&q6_caldb>, <&mlo_mem>;
+        memory-region-names = "q6-region", "m3-dump", "q6-caldb", "mlo-global-mem";
+        qcom,calibration-variant = "RDP441_1";
+        qcom,rproc = <&q6v5_wcss>;
+        qcom,smem-states = <&wcss_smp2p_out 8>,
+                           <&wcss_smp2p_out 9>,
+                           <&wcss_smp2p_out 10>;
+        qcom,smem-state-names = "shutdown",
+                                "stop",
+                                "spawn";
+    };
diff --git a/Bindings/net/wireless/realtek,rtl8188e.yaml b/Bindings/net/wireless/realtek,rtl8188e.yaml
new file mode 100644 (file)
index 0000000..2769731
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/wireless/realtek,rtl8188e.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Realtek RTL8188E USB WiFi
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+description:
+  Realtek RTL8188E is a family of USB-connected 2.4 GHz WiFi modules.
+
+allOf:
+  - $ref: /schemas/usb/usb-device.yaml#
+
+properties:
+  compatible:
+    const: usbbda,179  # RTL8188ETV
+
+  reg: true
+
+  vdd-supply:
+    description:
+      Regulator for the 3V3 supply.
+
+required:
+  - compatible
+  - reg
+  - vdd-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    usb {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        wifi: wifi@1 {
+            compatible = "usbbda,179";
+            reg = <1>;
+            vdd-supply = <&vcc3v3>;
+        };
+    };
+
+...
index 84e5659e50ef3125b5063fbebcaf1d2b2bdb7398..6c0888ae4c4e172edf2a5f6249cb8aed5ed11681 100644 (file)
@@ -71,15 +71,12 @@ properties:
       "Platform Data Set" in Silabs jargon). Default depends of "compatible"
       string. For "silabs,wf200", the default is 'wf200.pds'.
 
-  local-mac-address: true
-
-  mac-address: true
-
 required:
   - compatible
   - reg
 
 allOf:
+  - $ref: /schemas/net/wireless/wireless-controller.yaml#
   - $ref: /schemas/spi/spi-peripheral-props.yaml#
 
 unevaluatedProperties: false
diff --git a/Bindings/net/wireless/wireless-controller.yaml b/Bindings/net/wireless/wireless-controller.yaml
new file mode 100644 (file)
index 0000000..7379f6c
--- /dev/null
@@ -0,0 +1,23 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/wireless/wireless-controller.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Wireless Controller Common Properties
+
+maintainers:
+  - Lorenzo Bianconi <lorenzo@kernel.org>
+
+properties:
+  $nodename:
+    pattern: "^wifi(@.*)?$"
+
+allOf:
+  - $ref: ieee80211.yaml#
+  - $ref: /schemas/net/network-class.yaml#
+
+additionalProperties: true
+
+...
+
diff --git a/Bindings/numa.txt b/Bindings/numa.txt
deleted file mode 100644 (file)
index 42f282c..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-==============================================================================
-NUMA binding description.
-==============================================================================
-
-==============================================================================
-1 - Introduction
-==============================================================================
-
-Systems employing a Non Uniform Memory Access (NUMA) architecture contain
-collections of hardware resources including processors, memory, and I/O buses,
-that comprise what is commonly known as a NUMA node.
-Processor accesses to memory within the local NUMA node is generally faster
-than processor accesses to memory outside of the local NUMA node.
-DT defines interfaces that allow the platform to convey NUMA node
-topology information to OS.
-
-==============================================================================
-2 - numa-node-id
-==============================================================================
-
-For the purpose of identification, each NUMA node is associated with a unique
-token known as a node id. For the purpose of this binding
-a node id is a 32-bit integer.
-
-A device node is associated with a NUMA node by the presence of a
-numa-node-id property which contains the node id of the device.
-
-Example:
-       /* numa node 0 */
-       numa-node-id = <0>;
-
-       /* numa node 1 */
-       numa-node-id = <1>;
-
-==============================================================================
-3 - distance-map
-==============================================================================
-
-The optional device tree node distance-map describes the relative
-distance (memory latency) between all numa nodes.
-
-- compatible : Should at least contain "numa-distance-map-v1".
-
-- distance-matrix
-  This property defines a matrix to describe the relative distances
-  between all numa nodes.
-  It is represented as a list of node pairs and their relative distance.
-
-  Note:
-       1. Each entry represents distance from first node to second node.
-       The distances are equal in either direction.
-       2. The distance from a node to self (local distance) is represented
-       with value 10 and all internode distance should be represented with
-       a value greater than 10.
-       3. distance-matrix should have entries in lexicographical ascending
-       order of nodes.
-       4. There must be only one device node distance-map which must
-       reside in the root node.
-       5. If the distance-map node is not present, a default
-       distance-matrix is used.
-
-Example:
-       4 nodes connected in mesh/ring topology as below,
-
-               0_______20______1
-               |               |
-               |               |
-               20             20
-               |               |
-               |               |
-               |_______________|
-               3       20      2
-
-       if relative distance for each hop is 20,
-       then internode distance would be,
-             0 -> 1 = 20
-             1 -> 2 = 20
-             2 -> 3 = 20
-             3 -> 0 = 20
-             0 -> 2 = 40
-             1 -> 3 = 40
-
-     and dt presentation for this distance matrix is,
-
-               distance-map {
-                        compatible = "numa-distance-map-v1";
-                        distance-matrix = <0 0  10>,
-                                          <0 1  20>,
-                                          <0 2  40>,
-                                          <0 3  20>,
-                                          <1 0  20>,
-                                          <1 1  10>,
-                                          <1 2  20>,
-                                          <1 3  40>,
-                                          <2 0  40>,
-                                          <2 1  20>,
-                                          <2 2  10>,
-                                          <2 3  20>,
-                                          <3 0  20>,
-                                          <3 1  40>,
-                                          <3 2  20>,
-                                          <3 3  10>;
-               };
-
-==============================================================================
-4 - Empty memory nodes
-==============================================================================
-
-Empty memory nodes, which no memory resides in, are allowed. There are no
-device nodes for these empty memory nodes. However, the NUMA node IDs and
-distance maps are still valid and memory may be added into them through
-hotplug afterwards.
-
-Example:
-
-       memory@0 {
-               device_type = "memory";
-               reg = <0x0 0x0 0x0 0x80000000>;
-               numa-node-id = <0>;
-       };
-
-       memory@80000000 {
-               device_type = "memory";
-               reg = <0x0 0x80000000 0x0 0x80000000>;
-               numa-node-id = <1>;
-       };
-
-       /* Empty memory node 2 and 3 */
-       distance-map {
-               compatible = "numa-distance-map-v1";
-               distance-matrix = <0 0  10>,
-                                 <0 1  20>,
-                                 <0 2  40>,
-                                 <0 3  20>,
-                                 <1 0  20>,
-                                 <1 1  10>,
-                                 <1 2  20>,
-                                 <1 3  40>,
-                                 <2 0  40>,
-                                 <2 1  20>,
-                                 <2 2  10>,
-                                 <2 3  20>,
-                                 <3 0  20>,
-                                 <3 1  40>,
-                                 <3 2  20>,
-                                 <3 3  10>;
-       };
-
-==============================================================================
-5 - Example dts
-==============================================================================
-
-Dual socket system consists of 2 boards connected through ccn bus and
-each board having one socket/soc of 8 cpus, memory and pci bus.
-
-       memory@c00000 {
-               device_type = "memory";
-               reg = <0x0 0xc00000 0x0 0x80000000>;
-               /* node 0 */
-               numa-node-id = <0>;
-       };
-
-       memory@10000000000 {
-               device_type = "memory";
-               reg = <0x100 0x0 0x0 0x80000000>;
-               /* node 1 */
-               numa-node-id = <1>;
-       };
-
-       cpus {
-               #address-cells = <2>;
-               #size-cells = <0>;
-
-               cpu@0 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x0>;
-                       enable-method = "psci";
-                       /* node 0 */
-                       numa-node-id = <0>;
-               };
-               cpu@1 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x1>;
-                       enable-method = "psci";
-                       numa-node-id = <0>;
-               };
-               cpu@2 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x2>;
-                       enable-method = "psci";
-                       numa-node-id = <0>;
-               };
-               cpu@3 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x3>;
-                       enable-method = "psci";
-                       numa-node-id = <0>;
-               };
-               cpu@4 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x4>;
-                       enable-method = "psci";
-                       numa-node-id = <0>;
-               };
-               cpu@5 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x5>;
-                       enable-method = "psci";
-                       numa-node-id = <0>;
-               };
-               cpu@6 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x6>;
-                       enable-method = "psci";
-                       numa-node-id = <0>;
-               };
-               cpu@7 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x7>;
-                       enable-method = "psci";
-                       numa-node-id = <0>;
-               };
-               cpu@8 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x8>;
-                       enable-method = "psci";
-                       /* node 1 */
-                       numa-node-id = <1>;
-               };
-               cpu@9 {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0x9>;
-                       enable-method = "psci";
-                       numa-node-id = <1>;
-               };
-               cpu@a {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0xa>;
-                       enable-method = "psci";
-                       numa-node-id = <1>;
-               };
-               cpu@b {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0xb>;
-                       enable-method = "psci";
-                       numa-node-id = <1>;
-               };
-               cpu@c {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0xc>;
-                       enable-method = "psci";
-                       numa-node-id = <1>;
-               };
-               cpu@d {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0xd>;
-                       enable-method = "psci";
-                       numa-node-id = <1>;
-               };
-               cpu@e {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0xe>;
-                       enable-method = "psci";
-                       numa-node-id = <1>;
-               };
-               cpu@f {
-                       device_type = "cpu";
-                       compatible =  "arm,armv8";
-                       reg = <0x0 0xf>;
-                       enable-method = "psci";
-                       numa-node-id = <1>;
-               };
-       };
-
-       pcie0: pcie0@848000000000 {
-               compatible = "arm,armv8";
-               device_type = "pci";
-               bus-range = <0 255>;
-               #size-cells = <2>;
-               #address-cells = <3>;
-               reg = <0x8480 0x00000000 0 0x10000000>;  /* Configuration space */
-               ranges = <0x03000000 0x8010 0x00000000 0x8010 0x00000000 0x70 0x00000000>;
-               /* node 0 */
-               numa-node-id = <0>;
-        };
-
-       pcie1: pcie1@948000000000 {
-               compatible = "arm,armv8";
-               device_type = "pci";
-               bus-range = <0 255>;
-               #size-cells = <2>;
-               #address-cells = <3>;
-               reg = <0x9480 0x00000000 0 0x10000000>;  /* Configuration space */
-               ranges = <0x03000000 0x9010 0x00000000 0x9010 0x00000000 0x70 0x00000000>;
-               /* node 1 */
-               numa-node-id = <1>;
-        };
-
-       distance-map {
-               compatible = "numa-distance-map-v1";
-               distance-matrix = <0 0 10>,
-                                 <0 1 20>,
-                                 <1 1 10>;
-       };
diff --git a/Bindings/nvmem/apple,spmi-nvmem.yaml b/Bindings/nvmem/apple,spmi-nvmem.yaml
new file mode 100644 (file)
index 0000000..80b5a6c
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/nvmem/apple,spmi-nvmem.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple SPMI NVMEM
+
+description: Exports a series of SPMI registers as NVMEM cells
+
+maintainers:
+  - Sasha Finkelstein <fnkl.kernel@gmail.com>
+
+allOf:
+  - $ref: nvmem.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apple,maverick-pmic
+          - apple,sera-pmic
+          - apple,stowe-pmic
+      - const: apple,spmi-nvmem
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/spmi/spmi.h>
+
+    pmic@f {
+        compatible = "apple,maverick-pmic", "apple,spmi-nvmem";
+        reg = <0xf SPMI_USID>;
+
+        nvmem-layout {
+            compatible = "fixed-layout";
+            #address-cells = <1>;
+            #size-cells = <1>;
+
+            boot_stage: boot-stage@6001 {
+                reg = <0x6001 0x1>;
+            };
+        };
+    };
+
+...
diff --git a/Bindings/nvmem/maxim,max77759-nvmem.yaml b/Bindings/nvmem/maxim,max77759-nvmem.yaml
new file mode 100644 (file)
index 0000000..1e3bd44
--- /dev/null
@@ -0,0 +1,32 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/nvmem/maxim,max77759-nvmem.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim Integrated MAX77759 Non Volatile Memory
+
+maintainers:
+  - André Draszik <andre.draszik@linaro.org>
+
+description: |
+  This module is part of the MAX77759 PMIC. For additional information, see
+  Documentation/devicetree/bindings/mfd/maxim,max77759.yaml.
+
+  The MAX77759 is a PMIC integrating, amongst others, Non Volatile Memory
+  (NVMEM) with 30 bytes of storage which can be used by software to store
+  information or communicate with a boot loader.
+
+properties:
+  compatible:
+    const: maxim,max77759-nvmem
+
+  wp-gpios: false
+
+required:
+  - compatible
+
+allOf:
+  - $ref: nvmem.yaml#
+
+unevaluatedProperties: false
index 07e26c26781535f9212de068b2c7526147b89b14..61c080e508597413bdfdf91b4766b005b94083f5 100644 (file)
@@ -18,9 +18,21 @@ description: |+
 
   This binding only supports voltage-frequency pairs.
 
-select: true
+deprecated: true
 
 properties:
+  clock-latency:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      The latency in nanoseconds for clock changes. Use OPP tables for new
+      designs instead.
+
+  voltage-tolerance:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 10
+    description:
+      The voltage tolerance in percent. Use OPP tables for new designs instead.
+
   operating-points:
     $ref: /schemas/types.yaml#/definitions/uint32-matrix
     items:
@@ -28,8 +40,12 @@ properties:
         - description: Frequency in kHz
         - description: Voltage for OPP in uV
 
+dependencies:
+  clock-latency: [ operating-points ]
+  voltage-tolerance: [ operating-points ]
 
 additionalProperties: true
+
 examples:
   - |
     cpus {
diff --git a/Bindings/opp/opp-v2-qcom-adreno.yaml b/Bindings/opp/opp-v2-qcom-adreno.yaml
new file mode 100644 (file)
index 0000000..a27ba7b
--- /dev/null
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/opp/opp-v2-qcom-adreno.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm Adreno compatible OPP supply
+
+description:
+  Adreno GPUs present in Qualcomm's Snapdragon chipsets uses an OPP specific
+  ACD related information tailored for the specific chipset. This binding
+  provides the information needed to describe such a hardware value.
+
+maintainers:
+  - Rob Clark <robdclark@gmail.com>
+
+allOf:
+  - $ref: opp-v2-base.yaml#
+
+properties:
+  compatible:
+    contains:
+      const: operating-points-v2-adreno
+
+patternProperties:
+  '^opp-[0-9]+$':
+    type: object
+    additionalProperties: false
+
+    properties:
+      opp-hz: true
+
+      opp-level: true
+
+      opp-peak-kBps: true
+
+      opp-supported-hw: true
+
+      qcom,opp-acd-level:
+        description: |
+          A positive value representing the ACD (Adaptive Clock Distribution,
+          a fancy name for clk throttling during voltage droop) level associated
+          with this OPP node. This value is shared to a co-processor inside GPU
+          (called Graphics Management Unit a.k.a GMU) during wake up. It may not
+          be present for some OPPs and GMU will disable ACD while transitioning
+          to that OPP. This value encodes a voltage threshold, delay cycles &
+          calibration margins which are identified by characterization of the
+          SoC. So, it doesn't have any unit. This data is passed to GMU firmware
+          via 'HFI_H2F_MSG_ACD' packet.
+        $ref: /schemas/types.yaml#/definitions/uint32
+
+    required:
+      - opp-hz
+      - opp-level
+
+required:
+  - compatible
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/power/qcom-rpmpd.h>
+
+    gpu_opp_table: opp-table {
+        compatible = "operating-points-v2-adreno", "operating-points-v2";
+
+        opp-687000000 {
+            opp-hz = /bits/ 64 <687000000>;
+            opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+            opp-peak-kBps = <8171875>;
+            qcom,opp-acd-level = <0x882e5ffd>;
+        };
+
+        opp-550000000 {
+            opp-hz = /bits/ 64 <550000000>;
+            opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+            opp-peak-kBps = <6074219>;
+            qcom,opp-acd-level = <0xc0285ffd>;
+        };
+
+        opp-390000000 {
+            opp-hz = /bits/ 64 <390000000>;
+            opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
+            opp-peak-kBps = <3000000>;
+            qcom,opp-acd-level = <0xc0285ffd>;
+        };
+
+        opp-300000000 {
+            opp-hz = /bits/ 64 <300000000>;
+            opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
+            opp-peak-kBps = <2136719>;
+            /* Intentionally left out qcom,opp-acd-level property here */
+        };
+
+    };
index c8775f9cb071339dfa6f17f9f4a99f031c98b70a..c0852be04f6ded323d6e04468c6e4a212d101100 100644 (file)
@@ -17,6 +17,10 @@ description: |
   implements its root ports.  But the ATU found on most DesignWare
   PCIe host bridges is absent.
 
+  On systems derived from T602x, the PHY registers are in a region
+  separate from the port registers. In that case, there is one PHY
+  register range per port register range.
+
   All root ports share a single ECAM space, but separate GPIOs are
   used to take the PCI devices on those ports out of reset.  Therefore
   the standard "reset-gpios" and "max-link-speed" properties appear on
@@ -30,16 +34,18 @@ description: |
 
 properties:
   compatible:
-    items:
-      - enum:
-          - apple,t8103-pcie
-          - apple,t8112-pcie
-          - apple,t6000-pcie
-      - const: apple,pcie
+    oneOf:
+      - items:
+          - enum:
+              - apple,t8103-pcie
+              - apple,t8112-pcie
+              - apple,t6000-pcie
+          - const: apple,pcie
+      - const: apple,t6020-pcie
 
   reg:
     minItems: 3
-    maxItems: 6
+    maxItems: 10
 
   reg-names:
     minItems: 3
@@ -50,6 +56,10 @@ properties:
       - const: port1
       - const: port2
       - const: port3
+      - const: phy0
+      - const: phy1
+      - const: phy2
+      - const: phy3
 
   ranges:
     minItems: 2
@@ -98,6 +108,15 @@ allOf:
           maxItems: 5
         interrupts:
           maxItems: 3
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: apple,t6020-pcie
+    then:
+      properties:
+        reg-names:
+          minItems: 10
 
 examples:
   - |
index 29f0e1eb50961efdfe64bada7f32fd0e372e1135..c4f9674e8695d6645f16a06fbc4c7da8e3a391b1 100644 (file)
@@ -186,49 +186,48 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
 
     scb {
-            #address-cells = <2>;
-            #size-cells = <1>;
-            pcie0: pcie@7d500000 {
-                    compatible = "brcm,bcm2711-pcie";
-                    reg = <0x0 0x7d500000 0x9310>;
-                    device_type = "pci";
-                    #address-cells = <3>;
-                    #size-cells = <2>;
-                    #interrupt-cells = <1>;
-                    interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                                 <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
-                    interrupt-names = "pcie", "msi";
-                    interrupt-map-mask = <0x0 0x0 0x0 0x7>;
-                    interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH
-                                     0 0 0 2 &gicv2 GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH
-                                     0 0 0 3 &gicv2 GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH
-                                     0 0 0 4 &gicv2 GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
-
-                    msi-parent = <&pcie0>;
-                    msi-controller;
-                    ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000 0x0 0x04000000>;
-                    dma-ranges = <0x42000000 0x1 0x00000000 0x0 0x40000000 0x0 0x80000000>,
-                                 <0x42000000 0x1 0x80000000 0x3 0x00000000 0x0 0x80000000>;
-                    brcm,enable-ssc;
-                    brcm,scb-sizes =  <0x0000000080000000 0x0000000080000000>;
-
-                    /* PCIe bridge, Root Port */
-                    pci@0,0 {
-                            #address-cells = <3>;
-                            #size-cells = <2>;
-                            reg = <0x0 0x0 0x0 0x0 0x0>;
-                            compatible = "pciclass,0604";
-                            device_type = "pci";
-                            vpcie3v3-supply = <&vreg7>;
-                            ranges;
-
-                            /* PCIe endpoint */
-                            pci-ep@0,0 {
-                                    assigned-addresses =
-                                        <0x82010000 0x0 0xf8000000 0x6 0x00000000 0x0 0x2000>;
-                                    reg = <0x0 0x0 0x0 0x0 0x0>;
-                                    compatible = "pci14e4,1688";
-                            };
-                    };
+        #address-cells = <2>;
+        #size-cells = <1>;
+        pcie0: pcie@7d500000 {
+            compatible = "brcm,bcm2711-pcie";
+            reg = <0x0 0x7d500000 0x9310>;
+            device_type = "pci";
+            #address-cells = <3>;
+            #size-cells = <2>;
+            #interrupt-cells = <1>;
+            interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+            interrupt-names = "pcie", "msi";
+            interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+            interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH
+                             0 0 0 2 &gicv2 GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH
+                             0 0 0 3 &gicv2 GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH
+                             0 0 0 4 &gicv2 GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+
+            msi-parent = <&pcie0>;
+            msi-controller;
+            ranges = <0x02000000 0x0 0xf8000000 0x6 0x00000000 0x0 0x04000000>;
+            dma-ranges = <0x42000000 0x1 0x00000000 0x0 0x40000000 0x0 0x80000000>,
+                         <0x42000000 0x1 0x80000000 0x3 0x00000000 0x0 0x80000000>;
+            brcm,enable-ssc;
+            brcm,scb-sizes =  <0x0000000080000000 0x0000000080000000>;
+
+            /* PCIe bridge, Root Port */
+            pci@0,0 {
+                #address-cells = <3>;
+                #size-cells = <2>;
+                reg = <0x0 0x0 0x0 0x0 0x0>;
+                compatible = "pciclass,0604";
+                device_type = "pci";
+                vpcie3v3-supply = <&vreg7>;
+                ranges;
+
+                /* PCIe endpoint */
+                pci-ep@0,0 {
+                    assigned-addresses = <0x82010000 0x0 0xf8000000 0x6 0x00000000 0x0 0x2000>;
+                    reg = <0x0 0x0 0x0 0x0 0x0>;
+                    compatible = "pci14e4,1688";
+                };
             };
+        };
     };
index 98651ab22103fd34bca9879d336d41e401155561..8735293962eebdbe36a48e06739be382a9e9ff21 100644 (file)
@@ -37,14 +37,14 @@ examples:
         #size-cells = <2>;
 
         pcie-ep@fc000000 {
-                compatible = "cdns,cdns-pcie-ep";
-                reg = <0x0 0xfc000000 0x0 0x01000000>,
-                      <0x0 0x80000000 0x0 0x40000000>;
-                reg-names = "reg", "mem";
-                cdns,max-outbound-regions = <16>;
-                max-functions = /bits/ 8 <8>;
-                phys = <&pcie_phy0>;
-                phy-names = "pcie-phy";
+            compatible = "cdns,cdns-pcie-ep";
+            reg = <0x0 0xfc000000 0x0 0x01000000>,
+                  <0x0 0x80000000 0x0 0x40000000>;
+            reg-names = "reg", "mem";
+            cdns,max-outbound-regions = <16>;
+            max-functions = /bits/ 8 <8>;
+            phys = <&pcie_phy0>;
+            phy-names = "pcie-phy";
         };
     };
 ...
index 730e63fd76694b06d63b0ceb303466a5ddb6819a..b19f61ae72fb2792f185b659ed7c9a79e093987c 100644 (file)
@@ -53,17 +53,17 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/interrupt-controller/irq.h>
     pcie-ep@37000000 {
-          compatible = "intel,keembay-pcie-ep";
-          reg = <0x37000000 0x00001000>,
-                <0x37100000 0x00001000>,
-                <0x37300000 0x00001000>,
-                <0x36000000 0x01000000>,
-                <0x37800000 0x00000200>;
-          reg-names = "dbi", "dbi2", "atu", "addr_space", "apb";
-          interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
-                       <GIC_SPI 108 IRQ_TYPE_EDGE_RISING>,
-                       <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
-                       <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
-          interrupt-names = "pcie", "pcie_ev", "pcie_err", "pcie_mem_access";
-          num-lanes = <2>;
+        compatible = "intel,keembay-pcie-ep";
+        reg = <0x37000000 0x00001000>,
+              <0x37100000 0x00001000>,
+              <0x37300000 0x00001000>,
+              <0x36000000 0x01000000>,
+              <0x37800000 0x00000200>;
+        reg-names = "dbi", "dbi2", "atu", "addr_space", "apb";
+        interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 108 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "pcie", "pcie_ev", "pcie_err", "pcie_mem_access";
+        num-lanes = <2>;
     };
index 1fd557504b107e74bd539a99443672e1320088e0..dd71e3d6bf94c40140ce34587852de42564fea20 100644 (file)
@@ -75,23 +75,23 @@ examples:
     #define KEEM_BAY_A53_PCIE
     #define KEEM_BAY_A53_AUX_PCIE
     pcie@37000000 {
-          compatible = "intel,keembay-pcie";
-          reg = <0x37000000 0x00001000>,
-                <0x37300000 0x00001000>,
-                <0x36e00000 0x00200000>,
-                <0x37800000 0x00000200>;
-          reg-names = "dbi", "atu", "config", "apb";
-          #address-cells = <3>;
-          #size-cells = <2>;
-          device_type = "pci";
-          ranges = <0x02000000 0 0x36000000 0x36000000 0 0x00e00000>;
-          interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
-                       <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
-                       <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
-          interrupt-names = "pcie", "pcie_ev", "pcie_err";
-          clocks = <&scmi_clk KEEM_BAY_A53_PCIE>,
-                   <&scmi_clk KEEM_BAY_A53_AUX_PCIE>;
-          clock-names = "master", "aux";
-          reset-gpios = <&pca2 9 GPIO_ACTIVE_LOW>;
-          num-lanes = <2>;
+        compatible = "intel,keembay-pcie";
+        reg = <0x37000000 0x00001000>,
+              <0x37300000 0x00001000>,
+              <0x36e00000 0x00200000>,
+              <0x37800000 0x00000200>;
+        reg-names = "dbi", "atu", "config", "apb";
+        #address-cells = <3>;
+        #size-cells = <2>;
+        device_type = "pci";
+        ranges = <0x02000000 0 0x36000000 0x36000000 0 0x00e00000>;
+        interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "pcie", "pcie_ev", "pcie_err";
+        clocks = <&scmi_clk KEEM_BAY_A53_PCIE>,
+                 <&scmi_clk KEEM_BAY_A53_AUX_PCIE>;
+        clock-names = "master", "aux";
+        reset-gpios = <&pca2 9 GPIO_ACTIVE_LOW>;
+        num-lanes = <2>;
     };
diff --git a/Bindings/pci/marvell,armada8k-pcie.yaml b/Bindings/pci/marvell,armada8k-pcie.yaml
new file mode 100644 (file)
index 0000000..f3ba923
--- /dev/null
@@ -0,0 +1,100 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/marvell,armada8k-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 7K/8K PCIe interface
+
+maintainers:
+  - Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+
+description:
+  This PCIe host controller is based on the Synopsys DesignWare PCIe IP.
+
+select:
+  properties:
+    compatible:
+      contains:
+        enum:
+          - marvell,armada8k-pcie
+  required:
+    - compatible
+
+allOf:
+  - $ref: snps,dw-pcie.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - marvell,armada8k-pcie
+      - const: snps,dw-pcie
+
+  reg:
+    maxItems: 2
+
+  reg-names:
+    items:
+      - const: ctrl
+      - const: config
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: core
+      - const: reg
+
+  interrupts:
+    maxItems: 1
+
+  msi-parent:
+    maxItems: 1
+
+  phys:
+    minItems: 1
+    maxItems: 4
+
+  phy-names:
+    minItems: 1
+    maxItems: 4
+
+  marvell,reset-gpio:
+    maxItems: 1
+    deprecated: true
+
+required:
+  - interrupt-map
+  - clocks
+  - msi-parent
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    pcie@f2600000 {
+        compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
+        reg = <0xf2600000 0x10000>, <0xf6f00000 0x80000>;
+        reg-names = "ctrl", "config";
+        #address-cells = <3>;
+        #size-cells = <2>;
+        #interrupt-cells = <1>;
+        device_type = "pci";
+        dma-coherent;
+        msi-parent = <&gic_v2m0>;
+
+        ranges = <0x81000000 0 0xf9000000 0xf9000000 0 0x10000>,  /* downstream I/O */
+                 <0x82000000 0 0xf6000000 0xf6000000 0 0xf00000>;  /* non-prefetchable memory */
+        interrupt-map-mask = <0 0 0 0>;
+        interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+        interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+        num-lanes = <1>;
+        clocks = <&cpm_syscon0 1 13>;
+    };
+...
diff --git a/Bindings/pci/marvell,kirkwood-pcie.yaml b/Bindings/pci/marvell,kirkwood-pcie.yaml
new file mode 100644 (file)
index 0000000..7be6953
--- /dev/null
@@ -0,0 +1,277 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/marvell,kirkwood-pcie.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell EBU PCIe interfaces
+
+maintainers:
+  - Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+  - Pali Rohár <pali@kernel.org>
+
+allOf:
+  - $ref: /schemas/pci/pci-host-bridge.yaml#
+
+properties:
+  compatible:
+    enum:
+      - marvell,armada-370-pcie
+      - marvell,armada-xp-pcie
+      - marvell,dove-pcie
+      - marvell,kirkwood-pcie
+
+  ranges:
+    description: >
+      The ranges describing the MMIO registers have the following layout:
+
+        0x82000000 0 r MBUS_ID(0xf0, 0x01) r 0 s
+
+      where:
+
+        * r is a 32-bits value that gives the offset of the MMIO registers of
+        this PCIe interface, from the base of the internal registers.
+
+        * s is a 32-bits value that give the size of this MMIO registers area.
+        This range entry translates the '0x82000000 0 r' PCI address into the
+        'MBUS_ID(0xf0, 0x01) r' CPU address, which is part of the internal
+        register window (as identified by MBUS_ID(0xf0, 0x01)).
+
+      The ranges describing the MBus windows have the following layout:
+
+          0x8t000000 s 0     MBUS_ID(w, a) 0 1 0
+
+      where:
+
+        * t is the type of the MBus window (as defined by the standard PCI DT
+        bindings), 1 for I/O and 2 for memory.
+
+        * s is the PCI slot that corresponds to this PCIe interface
+
+        * w is the 'target ID' value for the MBus window
+
+        * a the 'attribute' value for the MBus window.
+
+      Since the location and size of the different MBus windows is not fixed in
+      hardware, and only determined in runtime, those ranges cover the full first
+      4 GB of the physical address space, and do not translate into a valid CPU
+      address.
+
+  msi-parent:
+    maxItems: 1
+
+patternProperties:
+  '^pcie@':
+    type: object
+    allOf:
+      - $ref: /schemas/pci/pci-bus-common.yaml#
+      - $ref: /schemas/pci/pci-device.yaml#
+    unevaluatedProperties: false
+
+    properties:
+      clocks:
+        maxItems: 1
+
+      interrupts:
+        minItems: 1
+        maxItems: 2
+
+      interrupt-names:
+        minItems: 1
+        items:
+          - const: intx
+          - const: error
+
+      reset-delay-us:
+        default: 100000
+        description: todo
+
+      marvell,pcie-port:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 3
+        description: todo
+
+      marvell,pcie-lane:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        maximum: 3
+        description: todo
+
+      interrupt-controller:
+        type: object
+        additionalProperties: false
+
+        properties:
+          interrupt-controller: true
+
+          '#interrupt-cells':
+            const: 1
+
+    required:
+      - assigned-addresses
+      - clocks
+      - interrupt-map
+      - marvell,pcie-port
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
+
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        pcie@f001000000000000 {
+            compatible = "marvell,armada-xp-pcie";
+            device_type = "pci";
+
+            #address-cells = <3>;
+            #size-cells = <2>;
+
+            bus-range = <0x00 0xff>;
+            msi-parent = <&mpic>;
+
+            ranges =
+                  <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000  /* Port 0.0 registers */
+                    0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000  /* Port 2.0 registers */
+                    0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000  /* Port 0.1 registers */
+                    0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000  /* Port 0.2 registers */
+                    0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000  /* Port 0.3 registers */
+                    0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000  /* Port 1.0 registers */
+                    0x82000000 0 0x82000 MBUS_ID(0xf0, 0x01) 0x82000 0 0x00002000  /* Port 3.0 registers */
+                    0x82000000 0 0x84000 MBUS_ID(0xf0, 0x01) 0x84000 0 0x00002000  /* Port 1.1 registers */
+                    0x82000000 0 0x88000 MBUS_ID(0xf0, 0x01) 0x88000 0 0x00002000  /* Port 1.2 registers */
+                    0x82000000 0 0x8c000 MBUS_ID(0xf0, 0x01) 0x8c000 0 0x00002000  /* Port 1.3 registers */
+                    0x82000000 0x1 0     MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */
+                    0x81000000 0x1 0     MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO  */
+                    0x82000000 0x2 0     MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 0.1 MEM */
+                    0x81000000 0x2 0     MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 0.1 IO  */
+                    0x82000000 0x3 0     MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 0.2 MEM */
+                    0x81000000 0x3 0     MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 0.2 IO  */
+                    0x82000000 0x4 0     MBUS_ID(0x04, 0x78) 0 1 0 /* Port 0.3 MEM */
+                    0x81000000 0x4 0     MBUS_ID(0x04, 0x70) 0 1 0 /* Port 0.3 IO  */
+
+                    0x82000000 0x5 0     MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 1.0 MEM */
+                    0x81000000 0x5 0     MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 1.0 IO  */
+                    0x82000000 0x6 0     MBUS_ID(0x08, 0xd8) 0 1 0 /* Port 1.1 MEM */
+                    0x81000000 0x6 0     MBUS_ID(0x08, 0xd0) 0 1 0 /* Port 1.1 IO  */
+                    0x82000000 0x7 0     MBUS_ID(0x08, 0xb8) 0 1 0 /* Port 1.2 MEM */
+                    0x81000000 0x7 0     MBUS_ID(0x08, 0xb0) 0 1 0 /* Port 1.2 IO  */
+                    0x82000000 0x8 0     MBUS_ID(0x08, 0x78) 0 1 0 /* Port 1.3 MEM */
+                    0x81000000 0x8 0     MBUS_ID(0x08, 0x70) 0 1 0 /* Port 1.3 IO  */
+
+                    0x82000000 0x9 0     MBUS_ID(0x04, 0xf8) 0 1 0 /* Port 2.0 MEM */
+                    0x81000000 0x9 0     MBUS_ID(0x04, 0xf0) 0 1 0 /* Port 2.0 IO  */
+
+                    0x82000000 0xa 0     MBUS_ID(0x08, 0xf8) 0 1 0 /* Port 3.0 MEM */
+                    0x81000000 0xa 0     MBUS_ID(0x08, 0xf0) 0 1 0 /* Port 3.0 IO  */>;
+
+            pcie@1,0 {
+                device_type = "pci";
+                assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
+                reg = <0x0800 0 0 0 0>;
+                #address-cells = <3>;
+                #size-cells = <2>;
+                #interrupt-cells = <1>;
+                ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
+                    0x81000000 0 0 0x81000000 0x1 0 1 0>;
+                interrupt-map-mask = <0 0 0 0>;
+                interrupt-map = <0 0 0 0 &mpic 58>;
+                marvell,pcie-port = <0>;
+                marvell,pcie-lane = <0>;
+                num-lanes = <1>;
+                /* low-active PERST# reset on GPIO 25 */
+                reset-gpios = <&gpio0 25 1>;
+                /* wait 20ms for device settle after reset deassertion */
+                reset-delay-us = <20000>;
+                clocks = <&gateclk 5>;
+            };
+
+            pcie@2,0 {
+                device_type = "pci";
+                assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
+                reg = <0x1000 0 0 0 0>;
+                #address-cells = <3>;
+                #size-cells = <2>;
+                #interrupt-cells = <1>;
+                ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0
+                    0x81000000 0 0 0x81000000 0x2 0 1 0>;
+                interrupt-map-mask = <0 0 0 0>;
+                interrupt-map = <0 0 0 0 &mpic 59>;
+                marvell,pcie-port = <0>;
+                marvell,pcie-lane = <1>;
+                num-lanes = <1>;
+                clocks = <&gateclk 6>;
+            };
+
+            pcie@3,0 {
+                device_type = "pci";
+                assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
+                reg = <0x1800 0 0 0 0>;
+                #address-cells = <3>;
+                #size-cells = <2>;
+                #interrupt-cells = <1>;
+                ranges = <0x82000000 0 0 0x82000000 0x3 0 1 0
+                    0x81000000 0 0 0x81000000 0x3 0 1 0>;
+                interrupt-map-mask = <0 0 0 0>;
+                interrupt-map = <0 0 0 0 &mpic 60>;
+                marvell,pcie-port = <0>;
+                marvell,pcie-lane = <2>;
+                num-lanes = <1>;
+                clocks = <&gateclk 7>;
+            };
+
+            pcie@4,0 {
+                device_type = "pci";
+                assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
+                reg = <0x2000 0 0 0 0>;
+                #address-cells = <3>;
+                #size-cells = <2>;
+                #interrupt-cells = <1>;
+                ranges = <0x82000000 0 0 0x82000000 0x4 0 1 0
+                    0x81000000 0 0 0x81000000 0x4 0 1 0>;
+                interrupt-map-mask = <0 0 0 0>;
+                interrupt-map = <0 0 0 0 &mpic 61>;
+                marvell,pcie-port = <0>;
+                marvell,pcie-lane = <3>;
+                num-lanes = <1>;
+                clocks = <&gateclk 8>;
+            };
+
+            pcie@5,0 {
+                device_type = "pci";
+                assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
+                reg = <0x2800 0 0 0 0>;
+                #address-cells = <3>;
+                #size-cells = <2>;
+                #interrupt-cells = <1>;
+                ranges = <0x82000000 0 0 0x82000000 0x5 0 1 0
+                    0x81000000 0 0 0x81000000 0x5 0 1 0>;
+                interrupt-map-mask = <0 0 0 0>;
+                interrupt-map = <0 0 0 0 &mpic 62>;
+                marvell,pcie-port = <1>;
+                marvell,pcie-lane = <0>;
+                num-lanes = <1>;
+                clocks = <&gateclk 9>;
+            };
+
+            pcie@6,0 {
+                device_type = "pci";
+                assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
+                reg = <0x3000 0 0 0 0>;
+                #address-cells = <3>;
+                #size-cells = <2>;
+                #interrupt-cells = <1>;
+                ranges = <0x82000000 0 0 0x82000000 0x6 0 1 0
+                    0x81000000 0 0 0x81000000 0x6 0 1 0>;
+                interrupt-map-mask = <0 0 0 0>;
+                interrupt-map = <0 0 0 0 &mpic 63>;
+                marvell,pcie-port = <1>;
+                marvell,pcie-lane = <1>;
+                num-lanes = <1>;
+                clocks = <&gateclk 10>;
+            };
+        };
+    };
+...
index 103574d18dbc2519c5a6130450ddbe46cd545978..47b0bad690d5a3e2f2937adf5e9f6f50999400ef 100644 (file)
@@ -50,7 +50,7 @@ properties:
     items:
       pattern: '^fic[0-3]$'
 
-  dma-coherent: true
+  dma-noncoherent: true
 
   ranges:
     minItems: 1
@@ -65,33 +65,33 @@ unevaluatedProperties: false
 examples:
   - |
     soc {
-            #address-cells = <2>;
+        #address-cells = <2>;
+        #size-cells = <2>;
+        pcie0: pcie@2030000000 {
+            compatible = "microchip,pcie-host-1.0";
+            reg = <0x0 0x70000000 0x0 0x08000000>,
+                  <0x0 0x43008000 0x0 0x00002000>,
+                  <0x0 0x4300a000 0x0 0x00002000>;
+            reg-names = "cfg", "bridge", "ctrl";
+            device_type = "pci";
+            #address-cells = <3>;
             #size-cells = <2>;
-            pcie0: pcie@2030000000 {
-                    compatible = "microchip,pcie-host-1.0";
-                    reg = <0x0 0x70000000 0x0 0x08000000>,
-                          <0x0 0x43008000 0x0 0x00002000>,
-                          <0x0 0x4300a000 0x0 0x00002000>;
-                    reg-names = "cfg", "bridge", "ctrl";
-                    device_type = "pci";
-                    #address-cells = <3>;
-                    #size-cells = <2>;
-                    #interrupt-cells = <1>;
-                    interrupts = <119>;
-                    interrupt-map-mask = <0x0 0x0 0x0 0x7>;
-                    interrupt-map = <0 0 0 1 &pcie_intc0 0>,
-                                    <0 0 0 2 &pcie_intc0 1>,
-                                    <0 0 0 3 &pcie_intc0 2>,
-                                    <0 0 0 4 &pcie_intc0 3>;
-                    interrupt-parent = <&plic0>;
-                    msi-parent = <&pcie0>;
-                    msi-controller;
-                    bus-range = <0x00 0x7f>;
-                    ranges = <0x03000000 0x0 0x78000000 0x0 0x78000000 0x0 0x04000000>;
-                    pcie_intc0: interrupt-controller {
-                        #address-cells = <0>;
-                        #interrupt-cells = <1>;
-                        interrupt-controller;
-                    };
+            #interrupt-cells = <1>;
+            interrupts = <119>;
+            interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+            interrupt-map = <0 0 0 1 &pcie_intc0 0>,
+                            <0 0 0 2 &pcie_intc0 1>,
+                            <0 0 0 3 &pcie_intc0 2>,
+                            <0 0 0 4 &pcie_intc0 3>;
+            interrupt-parent = <&plic0>;
+            msi-parent = <&pcie0>;
+            msi-controller;
+            bus-range = <0x00 0x7f>;
+            ranges = <0x03000000 0x0 0x78000000 0x0 0x78000000 0x0 0x04000000>;
+            pcie_intc0: interrupt-controller {
+                #address-cells = <0>;
+                #interrupt-cells = <1>;
+                interrupt-controller;
             };
+        };
     };
diff --git a/Bindings/pci/mvebu-pci.txt b/Bindings/pci/mvebu-pci.txt
deleted file mode 100644 (file)
index 6d022a9..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-* Marvell EBU PCIe interfaces
-
-Mandatory properties:
-
-- compatible: one of the following values:
-    marvell,armada-370-pcie
-    marvell,armada-xp-pcie
-    marvell,dove-pcie
-    marvell,kirkwood-pcie
-- #address-cells, set to <3>
-- #size-cells, set to <2>
-- #interrupt-cells, set to <1>
-- bus-range: PCI bus numbers covered
-- device_type, set to "pci"
-- ranges: ranges describing the MMIO registers to control the PCIe
-  interfaces, and ranges describing the MBus windows needed to access
-  the memory and I/O regions of each PCIe interface.
-- msi-parent: Link to the hardware entity that serves as the Message
-  Signaled Interrupt controller for this PCI controller.
-
-The ranges describing the MMIO registers have the following layout:
-
-    0x82000000 0 r MBUS_ID(0xf0, 0x01) r 0 s
-
-where:
-
-  * r is a 32-bits value that gives the offset of the MMIO
-  registers of this PCIe interface, from the base of the internal
-  registers.
-
-  * s is a 32-bits value that give the size of this MMIO
-  registers area. This range entry translates the '0x82000000 0 r' PCI
-  address into the 'MBUS_ID(0xf0, 0x01) r' CPU address, which is part
-  of the internal register window (as identified by MBUS_ID(0xf0,
-  0x01)).
-
-The ranges describing the MBus windows have the following layout:
-
-    0x8t000000 s 0     MBUS_ID(w, a) 0 1 0
-
-where:
-
-   * t is the type of the MBus window (as defined by the standard PCI DT
-   bindings), 1 for I/O and 2 for memory.
-
-   * s is the PCI slot that corresponds to this PCIe interface
-
-   * w is the 'target ID' value for the MBus window
-
-   * a the 'attribute' value for the MBus window.
-
-Since the location and size of the different MBus windows is not fixed in
-hardware, and only determined in runtime, those ranges cover the full first
-4 GB of the physical address space, and do not translate into a valid CPU
-address.
-
-In addition, the device tree node must have sub-nodes describing each
-PCIe interface, having the following mandatory properties:
-
-- reg: used only for interrupt mapping, so only the first four bytes
-  are used to refer to the correct bus number and device number.
-- assigned-addresses: reference to the MMIO registers used to control
-  this PCIe interface.
-- clocks: the clock associated to this PCIe interface
-- marvell,pcie-port: the physical PCIe port number
-- status: either "disabled" or "okay"
-- device_type, set to "pci"
-- #address-cells, set to <3>
-- #size-cells, set to <2>
-- #interrupt-cells, set to <1>
-- ranges, translating the MBus windows ranges of the parent node into
-  standard PCI addresses.
-- interrupt-map-mask and interrupt-map, standard PCI properties to
-  define the mapping of the PCIe interface to interrupt numbers.
-
-and the following optional properties:
-- marvell,pcie-lane: the physical PCIe lane number, for ports having
-  multiple lanes. If this property is not found, we assume that the
-  value is 0.
-- num-lanes: number of SerDes PCIe lanes for this link (1 or 4)
-- reset-gpios: optional GPIO to PERST#
-- reset-delay-us: delay in us to wait after reset de-assertion, if not
-  specified will default to 100ms, as required by the PCIe specification.
-- interrupt-names: list of interrupt names, supported are:
-   - "intx" - interrupt line triggered by one of the legacy interrupt
-- interrupts or interrupts-extended: List of the interrupt sources which
-  corresponding to the "interrupt-names". If non-empty then also additional
-  'interrupt-controller' subnode must be defined.
-
-Example:
-
-pcie-controller {
-       compatible = "marvell,armada-xp-pcie";
-       device_type = "pci";
-
-       #address-cells = <3>;
-       #size-cells = <2>;
-
-       bus-range = <0x00 0xff>;
-       msi-parent = <&mpic>;
-
-       ranges =
-              <0x82000000 0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x00002000   /* Port 0.0 registers */
-               0x82000000 0 0x42000 MBUS_ID(0xf0, 0x01) 0x42000 0 0x00002000   /* Port 2.0 registers */
-               0x82000000 0 0x44000 MBUS_ID(0xf0, 0x01) 0x44000 0 0x00002000   /* Port 0.1 registers */
-               0x82000000 0 0x48000 MBUS_ID(0xf0, 0x01) 0x48000 0 0x00002000   /* Port 0.2 registers */
-               0x82000000 0 0x4c000 MBUS_ID(0xf0, 0x01) 0x4c000 0 0x00002000   /* Port 0.3 registers */
-               0x82000000 0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x00002000   /* Port 1.0 registers */
-               0x82000000 0 0x82000 MBUS_ID(0xf0, 0x01) 0x82000 0 0x00002000   /* Port 3.0 registers */
-               0x82000000 0 0x84000 MBUS_ID(0xf0, 0x01) 0x84000 0 0x00002000   /* Port 1.1 registers */
-               0x82000000 0 0x88000 MBUS_ID(0xf0, 0x01) 0x88000 0 0x00002000   /* Port 1.2 registers */
-               0x82000000 0 0x8c000 MBUS_ID(0xf0, 0x01) 0x8c000 0 0x00002000   /* Port 1.3 registers */
-               0x82000000 0x1 0     MBUS_ID(0x04, 0xe8) 0 1 0 /* Port 0.0 MEM */
-               0x81000000 0x1 0     MBUS_ID(0x04, 0xe0) 0 1 0 /* Port 0.0 IO  */
-               0x82000000 0x2 0     MBUS_ID(0x04, 0xd8) 0 1 0 /* Port 0.1 MEM */
-               0x81000000 0x2 0     MBUS_ID(0x04, 0xd0) 0 1 0 /* Port 0.1 IO  */
-               0x82000000 0x3 0     MBUS_ID(0x04, 0xb8) 0 1 0 /* Port 0.2 MEM */
-               0x81000000 0x3 0     MBUS_ID(0x04, 0xb0) 0 1 0 /* Port 0.2 IO  */
-               0x82000000 0x4 0     MBUS_ID(0x04, 0x78) 0 1 0 /* Port 0.3 MEM */
-               0x81000000 0x4 0     MBUS_ID(0x04, 0x70) 0 1 0 /* Port 0.3 IO  */
-
-               0x82000000 0x5 0     MBUS_ID(0x08, 0xe8) 0 1 0 /* Port 1.0 MEM */
-               0x81000000 0x5 0     MBUS_ID(0x08, 0xe0) 0 1 0 /* Port 1.0 IO  */
-               0x82000000 0x6 0     MBUS_ID(0x08, 0xd8) 0 1 0 /* Port 1.1 MEM */
-               0x81000000 0x6 0     MBUS_ID(0x08, 0xd0) 0 1 0 /* Port 1.1 IO  */
-               0x82000000 0x7 0     MBUS_ID(0x08, 0xb8) 0 1 0 /* Port 1.2 MEM */
-               0x81000000 0x7 0     MBUS_ID(0x08, 0xb0) 0 1 0 /* Port 1.2 IO  */
-               0x82000000 0x8 0     MBUS_ID(0x08, 0x78) 0 1 0 /* Port 1.3 MEM */
-               0x81000000 0x8 0     MBUS_ID(0x08, 0x70) 0 1 0 /* Port 1.3 IO  */
-
-               0x82000000 0x9 0     MBUS_ID(0x04, 0xf8) 0 1 0 /* Port 2.0 MEM */
-               0x81000000 0x9 0     MBUS_ID(0x04, 0xf0) 0 1 0 /* Port 2.0 IO  */
-
-               0x82000000 0xa 0     MBUS_ID(0x08, 0xf8) 0 1 0 /* Port 3.0 MEM */
-               0x81000000 0xa 0     MBUS_ID(0x08, 0xf0) 0 1 0 /* Port 3.0 IO  */>;
-
-       pcie@1,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
-               reg = <0x0800 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
-                         0x81000000 0 0 0x81000000 0x1 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 58>;
-               marvell,pcie-port = <0>;
-               marvell,pcie-lane = <0>;
-               num-lanes = <1>;
-               /* low-active PERST# reset on GPIO 25 */
-               reset-gpios = <&gpio0 25 1>;
-               /* wait 20ms for device settle after reset deassertion */
-               reset-delay-us = <20000>;
-               clocks = <&gateclk 5>;
-       };
-
-       pcie@2,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82001000 0 0x44000 0 0x2000>;
-               reg = <0x1000 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0
-                         0x81000000 0 0 0x81000000 0x2 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 59>;
-               marvell,pcie-port = <0>;
-               marvell,pcie-lane = <1>;
-               num-lanes = <1>;
-               clocks = <&gateclk 6>;
-       };
-
-       pcie@3,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82001800 0 0x48000 0 0x2000>;
-               reg = <0x1800 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x3 0 1 0
-                         0x81000000 0 0 0x81000000 0x3 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 60>;
-               marvell,pcie-port = <0>;
-               marvell,pcie-lane = <2>;
-               num-lanes = <1>;
-               clocks = <&gateclk 7>;
-       };
-
-       pcie@4,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82002000 0 0x4c000 0 0x2000>;
-               reg = <0x2000 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x4 0 1 0
-                         0x81000000 0 0 0x81000000 0x4 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 61>;
-               marvell,pcie-port = <0>;
-               marvell,pcie-lane = <3>;
-               num-lanes = <1>;
-               clocks = <&gateclk 8>;
-       };
-
-       pcie@5,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
-               reg = <0x2800 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x5 0 1 0
-                         0x81000000 0 0 0x81000000 0x5 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 62>;
-               marvell,pcie-port = <1>;
-               marvell,pcie-lane = <0>;
-               num-lanes = <1>;
-               clocks = <&gateclk 9>;
-       };
-
-       pcie@6,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82003000 0 0x84000 0 0x2000>;
-               reg = <0x3000 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x6 0 1 0
-                         0x81000000 0 0 0x81000000 0x6 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 63>;
-               marvell,pcie-port = <1>;
-               marvell,pcie-lane = <1>;
-               num-lanes = <1>;
-               clocks = <&gateclk 10>;
-       };
-
-       pcie@7,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82003800 0 0x88000 0 0x2000>;
-               reg = <0x3800 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x7 0 1 0
-                         0x81000000 0 0 0x81000000 0x7 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 64>;
-               marvell,pcie-port = <1>;
-               marvell,pcie-lane = <2>;
-               num-lanes = <1>;
-               clocks = <&gateclk 11>;
-       };
-
-       pcie@8,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82004000 0 0x8c000 0 0x2000>;
-               reg = <0x4000 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x8 0 1 0
-                         0x81000000 0 0 0x81000000 0x8 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 65>;
-               marvell,pcie-port = <1>;
-               marvell,pcie-lane = <3>;
-               num-lanes = <1>;
-               clocks = <&gateclk 12>;
-       };
-
-       pcie@9,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82004800 0 0x42000 0 0x2000>;
-               reg = <0x4800 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0x9 0 1 0
-                         0x81000000 0 0 0x81000000 0x9 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 99>;
-               marvell,pcie-port = <2>;
-               marvell,pcie-lane = <0>;
-               num-lanes = <1>;
-               clocks = <&gateclk 26>;
-       };
-
-       pcie@a,0 {
-               device_type = "pci";
-               assigned-addresses = <0x82005000 0 0x82000 0 0x2000>;
-               reg = <0x5000 0 0 0 0>;
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               ranges = <0x82000000 0 0 0x82000000 0xa 0 1 0
-                         0x81000000 0 0 0x81000000 0xa 0 1 0>;
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &mpic 103>;
-               marvell,pcie-port = <3>;
-               marvell,pcie-lane = <0>;
-               num-lanes = <1>;
-               clocks = <&gateclk 27>;
-       };
-};
index a24fb8307d29174ae6a9688de7f5c475c5e8fe50..6d6052a2748ffe2f755f4119d7eb63fc3e85e9dc 100644 (file)
@@ -74,7 +74,7 @@ properties:
 
   reset-gpios:
     description: Must contain a phandle to a GPIO controller followed by GPIO
-      that is being used as PERST input signal. Please refer to pci.txt.
+      that is being used as PERST input signal.
 
   phys:
     minItems: 1
diff --git a/Bindings/pci/pci-armada8k.txt b/Bindings/pci/pci-armada8k.txt
deleted file mode 100644 (file)
index ff25a13..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-* Marvell Armada 7K/8K PCIe interface
-
-This PCIe host controller is based on the Synopsys DesignWare PCIe IP
-and thus inherits all the common properties defined in snps,dw-pcie.yaml.
-
-Required properties:
-- compatible: "marvell,armada8k-pcie"
-- reg: must contain two register regions
-   - the control register region
-   - the config space region
-- reg-names:
-   - "ctrl" for the control register region
-   - "config" for the config space region
-- interrupts: Interrupt specifier for the PCIe controller
-- clocks: reference to the PCIe controller clocks
-- clock-names: mandatory if there is a second clock, in this case the
-   name must be "core" for the first clock and "reg" for the second
-   one
-
-Optional properties:
-- phys: phandle(s) to PHY node(s) following the generic PHY bindings.
-       Either 1, 2 or 4 PHYs might be needed depending on the number of
-       PCIe lanes.
-- phy-names: names of the PHYs corresponding to the number of lanes.
-       Must be "cp0-pcie0-x4-lane0-phy", "cp0-pcie0-x4-lane1-phy" for
-       2 PHYs.
-
-Example:
-
-       pcie@f2600000 {
-               compatible = "marvell,armada8k-pcie", "snps,dw-pcie";
-               reg = <0 0xf2600000 0 0x10000>, <0 0xf6f00000 0 0x80000>;
-               reg-names = "ctrl", "config";
-               #address-cells = <3>;
-               #size-cells = <2>;
-               #interrupt-cells = <1>;
-               device_type = "pci";
-               dma-coherent;
-
-               bus-range = <0 0xff>;
-               ranges = <0x81000000 0 0xf9000000 0  0xf9000000 0 0x10000       /* downstream I/O */
-                         0x82000000 0 0xf6000000 0  0xf6000000 0 0xf00000>;    /* non-prefetchable memory */
-               interrupt-map-mask = <0 0 0 0>;
-               interrupt-map = <0 0 0 0 &gic 0 GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
-               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
-               num-lanes = <1>;
-               clocks = <&cpm_syscon0 1 13>;
-       };
index f75000e3093db83b2d1665b48bcfdc239d07d7ab..214caa4ec3d51241d5721c6c8026c3e13d9b30ba 100644 (file)
@@ -17,6 +17,24 @@ properties:
   $nodename:
     pattern: "^pcie-ep@"
 
+  iommu-map:
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    items:
+      items:
+        - description: Device ID (see msi-map) base
+          maximum: 0x7ffff
+        - description: phandle to IOMMU
+        - description: IOMMU specifier base (currently always 1 cell)
+        - description: Number of Device IDs
+          maximum: 0x80000
+
+  iommu-map-mask:
+    description:
+      A mask to be applied to each Device ID prior to being mapped to an
+      IOMMU specifier per the iommu-map property.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 0x7ffff
+
   max-functions:
     description: Maximum number of functions that can be configured
     $ref: /schemas/types.yaml#/definitions/uint8
@@ -35,6 +53,56 @@ properties:
     $ref: /schemas/types.yaml#/definitions/uint32
     enum: [ 1, 2, 3, 4 ]
 
+  msi-map:
+    description: |
+      Maps a Device ID to an MSI and associated MSI specifier data.
+
+      A PCI Endpoint (EP) can use MSI as a doorbell function. This is achieved by
+      mapping the MSI controller's address into PCI BAR<n>. The PCI Root Complex
+      can write to this BAR<n>, triggering the EP to generate IRQ. This notifies
+      the EP-side driver of an event, eliminating the need for the driver to
+      continuously poll for status changes.
+
+      However, the EP cannot rely on Requester ID (RID) because the RID is
+      determined by the PCI topology of the host system. Since the EP may be
+      connected to different PCI hosts, the RID can vary between systems and is
+      therefore not a reliable identifier.
+
+      Each EP can support up to 8 physical functions and up to 65,536 virtual
+      functions. To uniquely identify each child device, a device ID is defined
+      as
+         - Bits [2:0] for the function number (func)
+         - Bits [18:3] for the virtual function index (vfunc)
+
+      The resulting device ID is computed as:
+
+        (func & 0x7) | (vfunc << 3)
+
+      The property is an arbitrary number of tuples of
+      (device-id-base, msi, msi-base,length).
+
+      Any Device ID id in the interval [id-base, id-base + length) is
+      associated with the listed MSI, with the MSI specifier
+      (id - id-base + msi-base).
+    $ref: /schemas/types.yaml#/definitions/uint32-matrix
+    items:
+      items:
+        - description: The Device ID base matched by the entry
+          maximum: 0x7ffff
+        - description: phandle to msi-controller node
+        - description: (optional) The msi-specifier produced for the first
+            Device ID matched by the entry. Currently, msi-specifier is 0 or
+            1 cells.
+        - description: The length of consecutive Device IDs following the
+            Device ID base
+          maximum: 0x80000
+
+  msi-map-mask:
+    description: A mask to be applied to each Device ID prior to being
+      mapped to an msi-specifier per the msi-map property.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    maximum: 0x7ffff
+
   num-lanes:
     description: maximum number of lanes
     $ref: /schemas/types.yaml#/definitions/uint32
diff --git a/Bindings/pci/pci-iommu.txt b/Bindings/pci/pci-iommu.txt
deleted file mode 100644 (file)
index 0def586..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-This document describes the generic device tree binding for describing the
-relationship between PCI(e) devices and IOMMU(s).
-
-Each PCI(e) device under a root complex is uniquely identified by its Requester
-ID (AKA RID). A Requester ID is a triplet of a Bus number, Device number, and
-Function number.
-
-For the purpose of this document, when treated as a numeric value, a RID is
-formatted such that:
-
-* Bits [15:8] are the Bus number.
-* Bits [7:3] are the Device number.
-* Bits [2:0] are the Function number.
-* Any other bits required for padding must be zero.
-
-IOMMUs may distinguish PCI devices through sideband data derived from the
-Requester ID. While a given PCI device can only master through one IOMMU, a
-root complex may split masters across a set of IOMMUs (e.g. with one IOMMU per
-bus).
-
-The generic 'iommus' property is insufficient to describe this relationship,
-and a mechanism is required to map from a PCI device to its IOMMU and sideband
-data.
-
-For generic IOMMU bindings, see
-Documentation/devicetree/bindings/iommu/iommu.txt.
-
-
-PCI root complex
-================
-
-Optional properties
--------------------
-
-- iommu-map: Maps a Requester ID to an IOMMU and associated IOMMU specifier
-  data.
-
-  The property is an arbitrary number of tuples of
-  (rid-base,iommu,iommu-base,length).
-
-  Any RID r in the interval [rid-base, rid-base + length) is associated with
-  the listed IOMMU, with the IOMMU specifier (r - rid-base + iommu-base).
-
-- iommu-map-mask: A mask to be applied to each Requester ID prior to being
-  mapped to an IOMMU specifier per the iommu-map property.
-
-
-Example (1)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       iommu: iommu@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-iommu";
-               #iommu-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * The sideband data provided to the IOMMU is the RID,
-                * identity-mapped.
-                */
-               iommu-map = <0x0 &iommu 0x0 0x10000>;
-       };
-};
-
-
-Example (2)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       iommu: iommu@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-iommu";
-               #iommu-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * The sideband data provided to the IOMMU is the RID with the
-                * function bits masked out.
-                */
-               iommu-map = <0x0 &iommu 0x0 0x10000>;
-               iommu-map-mask = <0xfff8>;
-       };
-};
-
-
-Example (3)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       iommu: iommu@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-iommu";
-               #iommu-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * The sideband data provided to the IOMMU is the RID,
-                * but the high bits of the bus number are flipped.
-                */
-               iommu-map = <0x0000 &iommu 0x8000 0x8000>,
-                           <0x8000 &iommu 0x0000 0x8000>;
-       };
-};
-
-
-Example (4)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       iommu_a: iommu@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-iommu";
-               #iommu-cells = <1>;
-       };
-
-       iommu_b: iommu@b {
-               reg = <0xb 0x1>;
-               compatible = "vendor,some-iommu";
-               #iommu-cells = <1>;
-       };
-
-       iommu_c: iommu@c {
-               reg = <0xc 0x1>;
-               compatible = "vendor,some-iommu";
-               #iommu-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * Devices with bus number 0-127 are mastered via IOMMU
-                * a, with sideband data being RID[14:0].
-                * Devices with bus number 128-255 are mastered via
-                * IOMMU b, with sideband data being RID[14:0].
-                * No devices master via IOMMU c.
-                */
-               iommu-map = <0x0000 &iommu_a 0x0000 0x8000>,
-                           <0x8000 &iommu_b 0x0000 0x8000>;
-       };
-};
diff --git a/Bindings/pci/pci-msi.txt b/Bindings/pci/pci-msi.txt
deleted file mode 100644 (file)
index b73d839..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-This document describes the generic device tree binding for describing the
-relationship between PCI devices and MSI controllers.
-
-Each PCI device under a root complex is uniquely identified by its Requester ID
-(AKA RID). A Requester ID is a triplet of a Bus number, Device number, and
-Function number.
-
-For the purpose of this document, when treated as a numeric value, a RID is
-formatted such that:
-
-* Bits [15:8] are the Bus number.
-* Bits [7:3] are the Device number.
-* Bits [2:0] are the Function number.
-* Any other bits required for padding must be zero.
-
-MSIs may be distinguished in part through the use of sideband data accompanying
-writes. In the case of PCI devices, this sideband data may be derived from the
-Requester ID. A mechanism is required to associate a device with both the MSI
-controllers it can address, and the sideband data that will be associated with
-its writes to those controllers.
-
-For generic MSI bindings, see
-Documentation/devicetree/bindings/interrupt-controller/msi.txt.
-
-
-PCI root complex
-================
-
-Optional properties
--------------------
-
-- msi-map: Maps a Requester ID to an MSI controller and associated
-  msi-specifier data. The property is an arbitrary number of tuples of
-  (rid-base,msi-controller,msi-base,length), where:
-
-  * rid-base is a single cell describing the first RID matched by the entry.
-
-  * msi-controller is a single phandle to an MSI controller
-
-  * msi-base is an msi-specifier describing the msi-specifier produced for the
-    first RID matched by the entry.
-
-  * length is a single cell describing how many consecutive RIDs are matched
-    following the rid-base.
-
-  Any RID r in the interval [rid-base, rid-base + length) is associated with
-  the listed msi-controller, with the msi-specifier (r - rid-base + msi-base).
-
-- msi-map-mask: A mask to be applied to each Requester ID prior to being mapped
-  to an msi-specifier per the msi-map property.
-
-- msi-parent: Describes the MSI parent of the root complex itself. Where
-  the root complex and MSI controller do not pass sideband data with MSI
-  writes, this property may be used to describe the MSI controller(s)
-  used by PCI devices under the root complex, if defined as such in the
-  binding for the root complex.
-
-
-Example (1)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       msi: msi-controller@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-controller";
-               msi-controller;
-               #msi-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * The sideband data provided to the MSI controller is
-                * the RID, identity-mapped.
-                */
-               msi-map = <0x0 &msi_a 0x0 0x10000>,
-       };
-};
-
-
-Example (2)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       msi: msi-controller@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-controller";
-               msi-controller;
-               #msi-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * The sideband data provided to the MSI controller is
-                * the RID, masked to only the device and function bits.
-                */
-               msi-map = <0x0 &msi_a 0x0 0x100>,
-               msi-map-mask = <0xff>
-       };
-};
-
-
-Example (3)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       msi: msi-controller@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-controller";
-               msi-controller;
-               #msi-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * The sideband data provided to the MSI controller is
-                * the RID, but the high bit of the bus number is
-                * ignored.
-                */
-               msi-map = <0x0000 &msi 0x0000 0x8000>,
-                         <0x8000 &msi 0x0000 0x8000>;
-       };
-};
-
-
-Example (4)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       msi: msi-controller@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-controller";
-               msi-controller;
-               #msi-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * The sideband data provided to the MSI controller is
-                * the RID, but the high bit of the bus number is
-                * negated.
-                */
-               msi-map = <0x0000 &msi 0x8000 0x8000>,
-                         <0x8000 &msi 0x0000 0x8000>;
-       };
-};
-
-
-Example (5)
-===========
-
-/ {
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       msi_a: msi-controller@a {
-               reg = <0xa 0x1>;
-               compatible = "vendor,some-controller";
-               msi-controller;
-               #msi-cells = <1>;
-       };
-
-       msi_b: msi-controller@b {
-               reg = <0xb 0x1>;
-               compatible = "vendor,some-controller";
-               msi-controller;
-               #msi-cells = <1>;
-       };
-
-       msi_c: msi-controller@c {
-               reg = <0xc 0x1>;
-               compatible = "vendor,some-controller";
-               msi-controller;
-               #msi-cells = <1>;
-       };
-
-       pci: pci@f {
-               reg = <0xf 0x1>;
-               compatible = "vendor,pcie-root-complex";
-               device_type = "pci";
-
-               /*
-                * The sideband data provided to MSI controller a is the
-                * RID, but the high bit of the bus number is negated.
-                * The sideband data provided to MSI controller b is the
-                * RID, identity-mapped.
-                * MSI controller c is not addressable.
-                */
-               msi-map = <0x0000 &msi_a 0x8000 0x08000>,
-                         <0x8000 &msi_a 0x0000 0x08000>,
-                         <0x0000 &msi_b 0x0000 0x10000>;
-       };
-};
diff --git a/Bindings/pci/pci.txt b/Bindings/pci/pci.txt
deleted file mode 100644 (file)
index 6a8f287..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-PCI bus bridges have standardized Device Tree bindings:
-
-PCI Bus Binding to: IEEE Std 1275-1994
-https://www.devicetree.org/open-firmware/bindings/pci/pci2_1.pdf
-
-And for the interrupt mapping part:
-
-Open Firmware Recommended Practice: Interrupt Mapping
-https://www.devicetree.org/open-firmware/practice/imap/imap0_9d.pdf
-
-Additionally to the properties specified in the above standards a host bridge
-driver implementation may support the following properties:
-
-- linux,pci-domain:
-   If present this property assigns a fixed PCI domain number to a host bridge,
-   otherwise an unstable (across boots) unique number will be assigned.
-   It is required to either not set this property at all or set it for all
-   host bridges in the system, otherwise potentially conflicting domain numbers
-   may be assigned to root buses behind different host bridges.  The domain
-   number for each host bridge in the system must be unique.
-- max-link-speed:
-   If present this property specifies PCI gen for link capability.  Host
-   drivers could add this as a strategy to avoid unnecessary operation for
-   unsupported link speed, for instance, trying to do training for
-   unsupported link speed, etc.  Must be '4' for gen4, '3' for gen3, '2'
-   for gen2, and '1' for gen1. Any other values are invalid.
-- reset-gpios:
-   If present this property specifies PERST# GPIO. Host drivers can parse the
-   GPIO and apply fundamental reset to endpoints.
-- supports-clkreq:
-   If present this property specifies that CLKREQ signal routing exists from
-   root port to downstream device and host bridge drivers can do programming
-   which depends on CLKREQ signal existence. For example, programming root port
-   not to advertise ASPM L1 Sub-States support if there is no CLKREQ signal.
-
-PCI-PCI Bridge properties
--------------------------
-
-PCIe root ports and switch ports may be described explicitly in the device
-tree, as children of the host bridge node. Even though those devices are
-discoverable by probing, it might be necessary to describe properties that
-aren't provided by standard PCIe capabilities.
-
-Required properties:
-
-- reg:
-   Identifies the PCI-PCI bridge. As defined in the IEEE Std 1275-1994
-   document, it is a five-cell address encoded as (phys.hi phys.mid
-   phys.lo size.hi size.lo). phys.hi should contain the device's BDF as
-   0b00000000 bbbbbbbb dddddfff 00000000. The other cells should be zero.
-
-   The bus number is defined by firmware, through the standard bridge
-   configuration mechanism. If this port is a switch port, then firmware
-   allocates the bus number and writes it into the Secondary Bus Number
-   register of the bridge directly above this port. Otherwise, the bus
-   number of a root port is the first number in the bus-range property,
-   defaulting to zero.
-
-   If firmware leaves the ARI Forwarding Enable bit set in the bridge
-   above this port, then phys.hi contains the 8-bit function number as
-   0b00000000 bbbbbbbb ffffffff 00000000. Note that the PCIe specification
-   recommends that firmware only leaves ARI enabled when it knows that the
-   OS is ARI-aware.
-
-Optional properties:
-
-- external-facing:
-   When present, the port is external-facing. All bridges and endpoints
-   downstream of this port are external to the machine. The OS can, for
-   example, use this information to identify devices that cannot be
-   trusted with relaxed DMA protection, as users could easily attach
-   malicious devices to this port.
-
-Example:
-
-pcie@10000000 {
-       compatible = "pci-host-ecam-generic";
-       ...
-       pcie@0008 {
-               /* Root port 00:01.0 is external-facing */
-               reg = <0x00000800 0 0 0 0>;
-               external-facing;
-       };
-};
index efde49d1bef858044ff57f491d4cd514530d2ba3..e3fa232da2ca87ce8228c8f9d60b7fd4d25d07ad 100644 (file)
@@ -45,9 +45,10 @@ properties:
 
   interrupts:
     minItems: 8
-    maxItems: 8
+    maxItems: 9
 
   interrupt-names:
+    minItems: 8
     items:
       - const: msi0
       - const: msi1
@@ -57,6 +58,7 @@ properties:
       - const: msi5
       - const: msi6
       - const: msi7
+      - const: global
 
   resets:
     maxItems: 1
@@ -129,7 +131,8 @@ examples:
                          <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                         <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
             interrupt-names = "msi0",
                               "msi1",
                               "msi2",
@@ -137,7 +140,8 @@ examples:
                               "msi4",
                               "msi5",
                               "msi6",
-                              "msi7";
+                              "msi7",
+                              "global";
             #interrupt-cells = <1>;
             interrupt-map-mask = <0 0 0 0x7>;
             interrupt-map = <0 0 0 1 &intc GIC_SPI 434 IRQ_TYPE_LEVEL_HIGH>,
index 76cb9fbfd476fb0412217c68bd8db44a51c7d236..ff508f592a1acf7557ed8035d819207dab01f94d 100644 (file)
@@ -54,9 +54,10 @@ properties:
 
   interrupts:
     minItems: 8
-    maxItems: 8
+    maxItems: 9
 
   interrupt-names:
+    minItems: 8
     items:
       - const: msi0
       - const: msi1
@@ -66,6 +67,7 @@ properties:
       - const: msi5
       - const: msi6
       - const: msi7
+      - const: global
 
   resets:
     maxItems: 1
@@ -149,9 +151,10 @@ examples:
                          <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>;
+                         <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
             interrupt-names = "msi0", "msi1", "msi2", "msi3",
-                              "msi4", "msi5", "msi6", "msi7";
+                              "msi4", "msi5", "msi6", "msi7", "global";
             #interrupt-cells = <1>;
             interrupt-map-mask = <0 0 0 0x7>;
             interrupt-map = <0 0 0 1 &intc 0 0 0 434 IRQ_TYPE_LEVEL_HIGH>,
index baf1813ec0ac2fdaccf2d4e2125676126498d33c..331fc25d7a17d657d4db3863f0c538d0e44dc840 100644 (file)
@@ -49,9 +49,10 @@ properties:
 
   interrupts:
     minItems: 8
-    maxItems: 8
+    maxItems: 9
 
   interrupt-names:
+    minItems: 8
     items:
       - const: msi0
       - const: msi1
@@ -61,6 +62,7 @@ properties:
       - const: msi5
       - const: msi6
       - const: msi7
+      - const: global
 
   resets:
     maxItems: 1
@@ -136,7 +138,8 @@ examples:
                          <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
             interrupt-names = "msi0",
                           "msi1",
                           "msi2",
@@ -144,7 +147,8 @@ examples:
                           "msi4",
                           "msi5",
                           "msi6",
-                          "msi7";
+                          "msi7",
+                          "global";
             #interrupt-cells = <1>;
             interrupt-map-mask = <0 0 0 0x7>;
             interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
index 9d569644fda906c2eeb26d22eddb80137cac8c24..a604f2a79de3b28863a0b8933e6679df4953402c 100644 (file)
@@ -49,9 +49,10 @@ properties:
 
   interrupts:
     minItems: 8
-    maxItems: 8
+    maxItems: 9
 
   interrupt-names:
+    minItems: 8
     items:
       - const: msi0
       - const: msi1
@@ -61,6 +62,7 @@ properties:
       - const: msi5
       - const: msi6
       - const: msi7
+      - const: global
 
   resets:
     maxItems: 1
@@ -128,9 +130,10 @@ examples:
                          <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
             interrupt-names = "msi0", "msi1", "msi2", "msi3",
-                              "msi4", "msi5", "msi6", "msi7";
+                              "msi4", "msi5", "msi6", "msi7", "global";
             #interrupt-cells = <1>;
             interrupt-map-mask = <0 0 0 0x7>;
             interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
index 4d060bce6f9d7766ff887f0e1a0595e2f96fd33d..af4dae68d50873bf0e64d47571760b62263594cf 100644 (file)
@@ -61,9 +61,10 @@ properties:
 
   interrupts:
     minItems: 8
-    maxItems: 8
+    maxItems: 9
 
   interrupt-names:
+    minItems: 8
     items:
       - const: msi0
       - const: msi1
@@ -73,6 +74,7 @@ properties:
       - const: msi5
       - const: msi6
       - const: msi7
+      - const: global
 
   resets:
     maxItems: 1
@@ -143,9 +145,10 @@ examples:
                          <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
             interrupt-names = "msi0", "msi1", "msi2", "msi3",
-                              "msi4", "msi5", "msi6", "msi7";
+                              "msi4", "msi5", "msi6", "msi7", "global";
             #interrupt-cells = <1>;
             interrupt-map-mask = <0 0 0 0x7>;
             interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
index 2a4cc41fc710aa5aa1e6355811664dda4eb4beec..dde3079adbb3312f46d9c0e9cee5abbd67bcab1b 100644 (file)
@@ -51,9 +51,10 @@ properties:
 
   interrupts:
     minItems: 8
-    maxItems: 8
+    maxItems: 9
 
   interrupt-names:
+    minItems: 8
     items:
       - const: msi0
       - const: msi1
@@ -63,6 +64,7 @@ properties:
       - const: msi5
       - const: msi6
       - const: msi7
+      - const: global
 
   resets:
     maxItems: 1
@@ -132,9 +134,10 @@ examples:
                          <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                          <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
             interrupt-names = "msi0", "msi1", "msi2", "msi3",
-                              "msi4", "msi5", "msi6", "msi7";
+                              "msi4", "msi5", "msi6", "msi7", "global";
             #interrupt-cells = <1>;
             interrupt-map-mask = <0 0 0 0x7>;
             interrupt-map = <0 0 0 1 &intc 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
index 8f628939209e9ca63ba229c089520cd5538bbe6b..0e1808105a8196b450bacd6fd3d986c67e5e0082 100644 (file)
@@ -21,6 +21,7 @@ properties:
           - qcom,pcie-apq8064
           - qcom,pcie-apq8084
           - qcom,pcie-ipq4019
+          - qcom,pcie-ipq5018
           - qcom,pcie-ipq6018
           - qcom,pcie-ipq8064
           - qcom,pcie-ipq8064-v2
@@ -168,6 +169,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,pcie-ipq5018
               - qcom,pcie-ipq6018
               - qcom,pcie-ipq8074-gen3
               - qcom,pcie-ipq9574
@@ -175,14 +177,16 @@ allOf:
       properties:
         reg:
           minItems: 5
-          maxItems: 5
+          maxItems: 6
         reg-names:
+          minItems: 5
           items:
             - const: dbi # DesignWare PCIe registers
             - const: elbi # External local bus interface registers
             - const: atu # ATU address space
             - const: parf # Qualcomm specific registers
             - const: config # PCIe configuration space
+            - const: mhi # MHI registers
 
   - if:
       properties:
@@ -322,6 +326,53 @@ allOf:
             - const: ahb # AHB reset
             - const: phy_ahb # PHY AHB reset
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,pcie-ipq5018
+    then:
+      properties:
+        clocks:
+          minItems: 6
+          maxItems: 6
+        clock-names:
+          items:
+            - const: iface # PCIe to SysNOC BIU clock
+            - const: axi_m # AXI Master clock
+            - const: axi_s # AXI Slave clock
+            - const: ahb # AHB clock
+            - const: aux # Auxiliary clock
+            - const: axi_bridge # AXI bridge clock
+        resets:
+          minItems: 8
+          maxItems: 8
+        reset-names:
+          items:
+            - const: pipe # PIPE reset
+            - const: sleep # Sleep reset
+            - const: sticky # Core sticky reset
+            - const: axi_m # AXI master reset
+            - const: axi_s # AXI slave reset
+            - const: ahb # AHB reset
+            - const: axi_m_sticky # AXI master sticky reset
+            - const: axi_s_sticky # AXI slave sticky reset
+        interrupts:
+          minItems: 9
+          maxItems: 9
+        interrupt-names:
+          items:
+            - const: msi0
+            - const: msi1
+            - const: msi2
+            - const: msi3
+            - const: msi4
+            - const: msi5
+            - const: msi6
+            - const: msi7
+            - const: global
+
   - if:
       properties:
         compatible:
@@ -562,6 +613,7 @@ allOf:
               enum:
                 - qcom,pcie-apq8064
                 - qcom,pcie-ipq4019
+                - qcom,pcie-ipq5018
                 - qcom,pcie-ipq8064
                 - qcom,pcie-ipq8064v2
                 - qcom,pcie-ipq8074
@@ -589,7 +641,11 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,pcie-ipq6018
+              - qcom,pcie-ipq8074
+              - qcom,pcie-ipq8074-gen3
               - qcom,pcie-msm8996
+              - qcom,pcie-msm8998
               - qcom,pcie-sdm845
     then:
       oneOf:
@@ -602,8 +658,9 @@ allOf:
         - properties:
             interrupts:
               minItems: 8
-              maxItems: 8
+              maxItems: 9
             interrupt-names:
+              minItems: 8
               items:
                 - const: msi0
                 - const: msi1
@@ -613,6 +670,7 @@ allOf:
                 - const: msi5
                 - const: msi6
                 - const: msi7
+                - const: global
 
   - if:
       properties:
@@ -622,11 +680,8 @@ allOf:
               - qcom,pcie-apq8064
               - qcom,pcie-apq8084
               - qcom,pcie-ipq4019
-              - qcom,pcie-ipq6018
               - qcom,pcie-ipq8064
               - qcom,pcie-ipq8064-v2
-              - qcom,pcie-ipq8074
-              - qcom,pcie-ipq8074-gen3
               - qcom,pcie-qcs404
     then:
       properties:
index 32a3b7665ff5473c9007ecc28b3af05b4dcbd51b..6b91581c30aef7f9f559c5a59e281d2fb80a6ab5 100644 (file)
@@ -73,21 +73,21 @@ examples:
     #include <dt-bindings/interrupt-controller/arm-gic.h>
     #include <dt-bindings/power/r8a774c0-sysc.h>
 
-     pcie0_ep: pcie-ep@fe000000 {
-            compatible = "renesas,r8a774c0-pcie-ep",
-                         "renesas,rcar-gen3-pcie-ep";
-            reg = <0xfe000000 0x80000>,
-                  <0xfe100000 0x100000>,
-                  <0xfe200000 0x200000>,
-                  <0x30000000 0x8000000>,
-                  <0x38000000 0x8000000>;
-            reg-names = "apb-base", "memory0", "memory1", "memory2", "memory3";
-            interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
-                         <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-            resets = <&cpg 319>;
-            power-domains = <&sysc R8A774C0_PD_ALWAYS_ON>;
-            clocks = <&cpg CPG_MOD 319>;
-            clock-names = "pcie";
-            max-functions = /bits/ 8 <1>;
+    pcie0_ep: pcie-ep@fe000000 {
+        compatible = "renesas,r8a774c0-pcie-ep",
+                     "renesas,rcar-gen3-pcie-ep";
+        reg = <0xfe000000 0x80000>,
+              <0xfe100000 0x100000>,
+              <0xfe200000 0x200000>,
+              <0x30000000 0x8000000>,
+              <0x38000000 0x8000000>;
+        reg-names = "apb-base", "memory0", "memory1", "memory2", "memory3";
+        interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+        resets = <&cpg 319>;
+        power-domains = <&sysc R8A774C0_PD_ALWAYS_ON>;
+        clocks = <&cpg CPG_MOD 319>;
+        clock-names = "pcie";
+        max-functions = /bits/ 8 <1>;
     };
index 666f013e3af8f3ad1ae6bea020e4456f48c3a42d..7896576920aa27b6f0fdc6a3356357890ee27ec5 100644 (file)
@@ -113,27 +113,27 @@ examples:
         pcie: pcie@fe000000 {
             compatible = "renesas,pcie-r8a7791", "renesas,pcie-rcar-gen2";
             reg = <0 0xfe000000 0 0x80000>;
-             #address-cells = <3>;
-             #size-cells = <2>;
-             bus-range = <0x00 0xff>;
-             device_type = "pci";
-             ranges = <0x01000000 0 0x00000000 0 0xfe100000 0 0x00100000>,
-                      <0x02000000 0 0xfe200000 0 0xfe200000 0 0x00200000>,
-                      <0x02000000 0 0x30000000 0 0x30000000 0 0x08000000>,
-                      <0x42000000 0 0x38000000 0 0x38000000 0 0x08000000>;
-             dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 0 0x40000000>,
-                          <0x42000000 2 0x00000000 2 0x00000000 0 0x40000000>;
-             interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
-                          <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
-                          <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-             #interrupt-cells = <1>;
-             interrupt-map-mask = <0 0 0 0>;
-             interrupt-map = <0 0 0 0 &gic GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
-             clocks = <&cpg CPG_MOD 319>, <&pcie_bus_clk>;
-             clock-names = "pcie", "pcie_bus";
-             power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
-             resets = <&cpg 319>;
-             vpcie3v3-supply = <&pcie_3v3>;
-             vpcie12v-supply = <&pcie_12v>;
-         };
+            #address-cells = <3>;
+            #size-cells = <2>;
+            bus-range = <0x00 0xff>;
+            device_type = "pci";
+            ranges = <0x01000000 0 0x00000000 0 0xfe100000 0 0x00100000>,
+                     <0x02000000 0 0xfe200000 0 0xfe200000 0 0x00200000>,
+                     <0x02000000 0 0x30000000 0 0x30000000 0 0x08000000>,
+                     <0x42000000 0 0x38000000 0 0x38000000 0 0x08000000>;
+            dma-ranges = <0x42000000 0 0x40000000 0 0x40000000 0 0x40000000>,
+                         <0x42000000 2 0x00000000 2 0x00000000 0 0x40000000>;
+            interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+            #interrupt-cells = <1>;
+            interrupt-map-mask = <0 0 0 0>;
+            interrupt-map = <0 0 0 0 &gic GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&cpg CPG_MOD 319>, <&pcie_bus_clk>;
+            clock-names = "pcie", "pcie_bus";
+            power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
+            resets = <&cpg 319>;
+            vpcie3v3-supply = <&pcie_3v3>;
+            vpcie12v-supply = <&pcie_12v>;
+        };
     };
index cc9adfc7611cfe15f2e37c4b0a549f082ea9d71c..fde9b87508b30e8bd61472306148b695b3d1df25 100644 (file)
@@ -65,7 +65,11 @@ properties:
           tx_cpl_timeout, cor_err_sent, nf_err_sent, f_err_sent, cor_err_rx,
           nf_err_rx, f_err_rx, radm_qoverflow
       - description:
-          eDMA write channel 0 interrupt
+          If the matching interrupt name is "msi", then this is the combined
+          MSI line interrupt, which is to support MSI interrupts output to GIC
+          controller via GIC SPI interrupt instead of GIC ITS interrupt.
+          If the matching interrupt name is "dma0", then this is the eDMA write
+          channel 0 interrupt.
       - description:
           eDMA write channel 1 interrupt
       - description:
@@ -81,7 +85,9 @@ properties:
       - const: msg
       - const: legacy
       - const: err
-      - const: dma0
+      - enum:
+          - msi
+          - dma0
       - const: dma1
       - const: dma2
       - const: dma3
index 550d8a684af3fabc173cc6f9fc211688174f6954..6c6d828ce964133655552fedbdd8869c536c161f 100644 (file)
@@ -16,16 +16,14 @@ description: |+
   PCIe IP and thus inherits all the common properties defined in
   snps,dw-pcie.yaml.
 
-allOf:
-  - $ref: /schemas/pci/snps,dw-pcie.yaml#
-  - $ref: /schemas/pci/rockchip-dw-pcie-common.yaml#
-
 properties:
   compatible:
     oneOf:
       - const: rockchip,rk3568-pcie
       - items:
           - enum:
+              - rockchip,rk3562-pcie
+              - rockchip,rk3576-pcie
               - rockchip,rk3588-pcie
           - const: rockchip,rk3568-pcie
 
@@ -71,8 +69,58 @@ properties:
 
   vpcie3v3-supply: true
 
-required:
-  - msi-map
+allOf:
+  - $ref: /schemas/pci/snps,dw-pcie.yaml#
+  - $ref: /schemas/pci/rockchip-dw-pcie-common.yaml#
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              enum:
+                - rockchip,rk3562-pcie
+                - rockchip,rk3576-pcie
+    then:
+      required:
+        - msi-map
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - rockchip,rk3562-pcie
+              - rockchip,rk3576-pcie
+    then:
+      properties:
+        interrupts:
+          minItems: 6
+          maxItems: 6
+        interrupt-names:
+          items:
+            - const: sys
+            - const: pmc
+            - const: msg
+            - const: legacy
+            - const: err
+            - const: msi
+    else:
+      properties:
+        interrupts:
+          minItems: 5
+        interrupt-names:
+          minItems: 5
+          items:
+            - const: sys
+            - const: pmc
+            - const: msg
+            - const: legacy
+            - const: err
+            - const: dma0
+            - const: dma1
+            - const: dma2
+            - const: dma3
+
 
 unevaluatedProperties: false
 
index 844fc71423020b1e31e6497047a72f0068052ae8..d35ff807936b360f04516915dcb31e11e6100e0a 100644 (file)
@@ -81,10 +81,10 @@ unevaluatedProperties: false
 
 examples:
   - |
+    #include <dt-bindings/clock/sifive-fu740-prci.h>
     bus {
         #address-cells = <2>;
         #size-cells = <2>;
-        #include <dt-bindings/clock/sifive-fu740-prci.h>
 
         pcie@e00000000 {
             compatible = "sifive,fu740-pcie";
index dc05761c5cf9358a8b3ba34866c96880ad1e8608..34594972d8dbeb8e5069c443479d304d9fc3326e 100644 (file)
@@ -115,7 +115,7 @@ properties:
             above for new bindings.
           oneOf:
             - description: See native 'dbi' clock for details
-              enum: [ pcie, pcie_apb_sys, aclk_dbi ]
+              enum: [ pcie, pcie_apb_sys, aclk_dbi, reg ]
             - description: See native 'mstr/slv' clock for details
               enum: [ pcie_bus, pcie_inbound_axi, pcie_aclk, aclk_mst, aclk_slv ]
             - description: See native 'pipe' clock for details
@@ -201,6 +201,7 @@ properties:
           oneOf:
             - pattern: '^pcie(-?phy[0-9]*)?$'
             - pattern: '^p2u-[0-7]$'
+            - pattern: '^cp[01]-pcie[0-2]-x[124](-lane[0-3])?-phy$'  # marvell,armada8k-pcie
 
   reset-gpio:
     deprecated: true
index 1117a86fb6f75e67221b2fdfc88e3ac3fdedbaf7..69e82f438f5849e36a68e377e8fd1b169c61cc68 100644 (file)
@@ -105,6 +105,8 @@ properties:
             Vendor-specific CSR names. Consider using the generic names above
             for new bindings.
           oneOf:
+            - description: See native 'dbi' CSR region for details.
+              enum: [ ctrl ]
             - description: See native 'elbi/app' CSR region for details.
               enum: [ apb, mgmt, link, ulreg, appl ]
             - description: See native 'atu' CSR region for details.
@@ -117,7 +119,7 @@ properties:
               const: slcr
     allOf:
       - contains:
-          const: dbi
+          enum: [ dbi, ctrl ]
       - contains:
           const: config
 
diff --git a/Bindings/pci/v3,v360epc-pci.yaml b/Bindings/pci/v3,v360epc-pci.yaml
new file mode 100644 (file)
index 0000000..38cac88
--- /dev/null
@@ -0,0 +1,100 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pci/v3,v360epc-pci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: V3 Semiconductor V360 EPC PCI bridge
+
+maintainers:
+  - Linus Walleij <linus.walleij@linaro.org>
+
+description:
+  This bridge is found in the ARM Integrator/AP (Application Platform)
+
+allOf:
+  - $ref: /schemas/pci/pci-host-bridge.yaml#
+
+properties:
+  compatible:
+    items:
+      - const: arm,integrator-ap-pci
+      - const: v3,v360epc-pci
+
+  reg:
+    items:
+      - description: V3 host bridge controller
+      - description: Configuration space
+
+  clocks:
+    maxItems: 1
+
+  dma-ranges:
+    maxItems: 2
+    description:
+      The inbound ranges must be aligned to a 1MB boundary, and may be 1MB, 2MB,
+      4MB, 8MB, 16MB, 32MB, 64MB, 128MB, 256MB, 512MB, 1GB or 2GB in size. The
+      memory should be marked as pre-fetchable.
+
+  interrupts:
+    description: Bus Error IRQ
+    maxItems: 1
+
+  ranges:
+    description:
+      The non-prefetchable and prefetchable memory windows must each be exactly
+      256MB (0x10000000) in size. The prefetchable memory window must be
+      immediately adjacent to the non-prefetchable memory window.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - dma-ranges
+  - "#interrupt-cells"
+  - interrupt-map
+  - interrupt-map-mask
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    pci@62000000 {
+        compatible = "arm,integrator-ap-pci", "v3,v360epc-pci";
+        #interrupt-cells = <1>;
+        #size-cells = <2>;
+        #address-cells = <3>;
+        reg = <0x62000000 0x10000>, <0x61000000 0x01000000>;
+        device_type = "pci";
+        interrupt-parent = <&pic>;
+        interrupts = <17>; /* Bus error IRQ */
+        clocks = <&pciclk>;
+        ranges = <0x01000000 0 0x00000000 0x60000000 0 0x01000000>,     /* 16 MiB @ LB 60000000 */
+                 <0x02000000 0 0x40000000 0x40000000 0 0x10000000>,     /* 256 MiB @ LB 40000000 1:1 */
+                 <0x42000000 0 0x50000000 0x50000000 0 0x10000000>;     /* 256 MiB @ LB 50000000 1:1 */
+        dma-ranges = <0x02000000 0 0x20000000 0x20000000 0 0x20000000>, /* EBI: 512 MB @ LB 20000000 1:1 */
+                     <0x02000000 0 0x80000000 0x80000000 0 0x40000000>; /* CM alias: 1GB @ LB 80000000 */
+        interrupt-map-mask = <0xf800 0 0 0x7>;
+        interrupt-map =
+            /* IDSEL 9 */
+            <0x4800 0 0 1 &pic 13>, /* INT A on slot 9 is irq 13 */
+            <0x4800 0 0 2 &pic 14>, /* INT B on slot 9 is irq 14 */
+            <0x4800 0 0 3 &pic 15>, /* INT C on slot 9 is irq 15 */
+            <0x4800 0 0 4 &pic 16>, /* INT D on slot 9 is irq 16 */
+            /* IDSEL 10 */
+            <0x5000 0 0 1 &pic 14>, /* INT A on slot 10 is irq 14 */
+            <0x5000 0 0 2 &pic 15>, /* INT B on slot 10 is irq 15 */
+            <0x5000 0 0 3 &pic 16>, /* INT C on slot 10 is irq 16 */
+            <0x5000 0 0 4 &pic 13>, /* INT D on slot 10 is irq 13 */
+            /* IDSEL 11 */
+            <0x5800 0 0 1 &pic 15>, /* INT A on slot 11 is irq 15 */
+            <0x5800 0 0 2 &pic 16>, /* INT B on slot 11 is irq 16 */
+            <0x5800 0 0 3 &pic 13>, /* INT C on slot 11 is irq 13 */
+            <0x5800 0 0 4 &pic 14>, /* INT D on slot 11 is irq 14 */
+            /* IDSEL 12 */
+            <0x6000 0 0 1 &pic 16>, /* INT A on slot 12 is irq 16 */
+            <0x6000 0 0 2 &pic 13>, /* INT B on slot 12 is irq 13 */
+            <0x6000 0 0 3 &pic 14>, /* INT C on slot 12 is irq 14 */
+            <0x6000 0 0 4 &pic 15>; /* INT D on slot 12 is irq 15 */
+    };
+...
diff --git a/Bindings/pci/v3-v360epc-pci.txt b/Bindings/pci/v3-v360epc-pci.txt
deleted file mode 100644 (file)
index 1106329..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-V3 Semiconductor V360 EPC PCI bridge
-
-This bridge is found in the ARM Integrator/AP (Application Platform)
-
-Required properties:
-- compatible: should be one of:
-  "v3,v360epc-pci"
-  "arm,integrator-ap-pci", "v3,v360epc-pci"
-- reg: should contain two register areas:
-  first the base address of the V3 host bridge controller, 64KB
-  second the configuration area register space, 16MB
-- interrupts: should contain a reference to the V3 error interrupt
-  as routed on the system.
-- bus-range: see pci.txt
-- ranges: this follows the standard PCI bindings in the IEEE Std
-  1275-1994 (see pci.txt) with the following restriction:
-  - The non-prefetchable and prefetchable memory windows must
-    each be exactly 256MB (0x10000000) in size.
-  - The prefetchable memory window must be immediately adjacent
-    to the non-prefetcable memory window
-- dma-ranges: three ranges for the inbound memory region. The ranges must
-  be aligned to a 1MB boundary, and may be 1MB, 2MB, 4MB, 8MB, 16MB, 32MB,
-  64MB, 128MB, 256MB, 512MB, 1GB or 2GB in size. The memory should be marked
-  as pre-fetchable. Two ranges are supported by the hardware.
-
-Integrator-specific required properties:
-- syscon: should contain a link to the syscon device node, since
-  on the Integrator, some registers in the syscon are required to
-  operate the V3 host bridge.
-
-Example:
-
-pci: pciv3@62000000 {
-       compatible = "arm,integrator-ap-pci", "v3,v360epc-pci";
-       #interrupt-cells = <1>;
-       #size-cells = <2>;
-       #address-cells = <3>;
-       reg = <0x62000000 0x10000>, <0x61000000 0x01000000>;
-       interrupt-parent = <&pic>;
-       interrupts = <17>; /* Bus error IRQ */
-       clocks = <&pciclk>;
-       bus-range = <0x00 0xff>;
-       ranges = 0x01000000 0 0x00000000 /* I/O space @00000000 */
-               0x60000000 0 0x01000000 /* 16 MiB @ LB 60000000 */
-               0x02000000 0 0x40000000 /* non-prefectable memory @40000000 */
-               0x40000000 0 0x10000000 /* 256 MiB @ LB 40000000 1:1 */
-               0x42000000 0 0x50000000 /* prefetchable memory @50000000 */
-               0x50000000 0 0x10000000>; /* 256 MiB @ LB 50000000 1:1 */
-       dma-ranges = <0x02000000 0 0x20000000 /* EBI memory space */
-               0x20000000 0 0x20000000 /* 512 MB @ LB 20000000 1:1 */
-               0x02000000 0 0x80000000 /* Core module alias memory */
-               0x80000000 0 0x40000000>; /* 1GB @ LB 80000000 */
-       interrupt-map-mask = <0xf800 0 0 0x7>;
-       interrupt-map = <
-       /* IDSEL 9 */
-       0x4800 0 0 1 &pic 13 /* INT A on slot 9 is irq 13 */
-       0x4800 0 0 2 &pic 14 /* INT B on slot 9 is irq 14 */
-       0x4800 0 0 3 &pic 15 /* INT C on slot 9 is irq 15 */
-       0x4800 0 0 4 &pic 16 /* INT D on slot 9 is irq 16 */
-       /* IDSEL 10 */
-       0x5000 0 0 1 &pic 14 /* INT A on slot 10 is irq 14 */
-       0x5000 0 0 2 &pic 15 /* INT B on slot 10 is irq 15 */
-       0x5000 0 0 3 &pic 16 /* INT C on slot 10 is irq 16 */
-       0x5000 0 0 4 &pic 13 /* INT D on slot 10 is irq 13 */
-       /* IDSEL 11 */
-       0x5800 0 0 1 &pic 15 /* INT A on slot 11 is irq 15 */
-       0x5800 0 0 2 &pic 16 /* INT B on slot 11 is irq 16 */
-       0x5800 0 0 3 &pic 13 /* INT C on slot 11 is irq 13 */
-       0x5800 0 0 4 &pic 14 /* INT D on slot 11 is irq 14 */
-       /* IDSEL 12 */
-       0x6000 0 0 1 &pic 16 /* INT A on slot 12 is irq 16 */
-       0x6000 0 0 2 &pic 13 /* INT B on slot 12 is irq 13 */
-       0x6000 0 0 3 &pic 14 /* INT C on slot 12 is irq 14 */
-       0x6000 0 0 4 &pic 15 /* INT D on slot 12 is irq 15 */
-       >;
-};
index d674a24c8ccc614bd552f8cfbd3f9586f2d023db..9823456addea31f5ba61c7d6ea7e481b15d709e3 100644 (file)
@@ -76,64 +76,62 @@ unevaluatedProperties: false
 
 examples:
   - |
-
     versal {
-               #address-cells = <2>;
-               #size-cells = <2>;
-               cpm_pcie: pcie@fca10000 {
-                       compatible = "xlnx,versal-cpm-host-1.00";
-                       device_type = "pci";
-                       #address-cells = <3>;
-                       #interrupt-cells = <1>;
-                       #size-cells = <2>;
-                       interrupts = <0 72 4>;
-                       interrupt-parent = <&gic>;
-                       interrupt-map-mask = <0 0 0 7>;
-                       interrupt-map = <0 0 0 1 &pcie_intc_0 0>,
-                                       <0 0 0 2 &pcie_intc_0 1>,
-                                       <0 0 0 3 &pcie_intc_0 2>,
-                                       <0 0 0 4 &pcie_intc_0 3>;
-                       bus-range = <0x00 0xff>;
-                       ranges = <0x02000000 0x0 0xe0010000 0x0 0xe0010000 0x0 0x10000000>,
-                                <0x43000000 0x80 0x00000000 0x80 0x00000000 0x0 0x80000000>;
-                       msi-map = <0x0 &its_gic 0x0 0x10000>;
-                       reg = <0x0 0xfca10000 0x0 0x1000>,
-                             <0x6 0x00000000 0x0 0x10000000>;
-                       reg-names = "cpm_slcr", "cfg";
-                       pcie_intc_0: interrupt-controller {
-                               #address-cells = <0>;
-                               #interrupt-cells = <1>;
-                               interrupt-controller;
-                       };
-               };
-
-               cpm5_pcie: pcie@fcdd0000 {
-                       compatible = "xlnx,versal-cpm5-host";
-                       device_type = "pci";
-                       #address-cells = <3>;
-                       #interrupt-cells = <1>;
-                       #size-cells = <2>;
-                       interrupts = <0 72 4>;
-                       interrupt-parent = <&gic>;
-                       interrupt-map-mask = <0 0 0 7>;
-                       interrupt-map = <0 0 0 1 &pcie_intc_1 0>,
-                                       <0 0 0 2 &pcie_intc_1 1>,
-                                       <0 0 0 3 &pcie_intc_1 2>,
-                                       <0 0 0 4 &pcie_intc_1 3>;
-                       bus-range = <0x00 0xff>;
-                       ranges = <0x02000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000>,
-                                <0x43000000 0x80 0x00000000 0x80 0x00000000 0x0 0x80000000>;
-                       msi-map = <0x0 &its_gic 0x0 0x10000>;
-                       reg = <0x00 0xfcdd0000 0x00 0x1000>,
-                             <0x06 0x00000000 0x00 0x1000000>,
-                             <0x00 0xfce20000 0x00 0x1000000>;
-                       reg-names = "cpm_slcr", "cfg", "cpm_csr";
-
-                       pcie_intc_1: interrupt-controller {
-                               #address-cells = <0>;
-                               #interrupt-cells = <1>;
-                               interrupt-controller;
-                       };
-               };
-
+        #address-cells = <2>;
+        #size-cells = <2>;
+        pcie@fca10000 {
+            compatible = "xlnx,versal-cpm-host-1.00";
+            device_type = "pci";
+            #address-cells = <3>;
+            #interrupt-cells = <1>;
+            #size-cells = <2>;
+            interrupts = <0 72 4>;
+            interrupt-parent = <&gic>;
+            interrupt-map-mask = <0 0 0 7>;
+            interrupt-map = <0 0 0 1 &pcie_intc_0 0>,
+                            <0 0 0 2 &pcie_intc_0 1>,
+                            <0 0 0 3 &pcie_intc_0 2>,
+                            <0 0 0 4 &pcie_intc_0 3>;
+            bus-range = <0x00 0xff>;
+            ranges = <0x02000000 0x0 0xe0010000 0x0 0xe0010000 0x0 0x10000000>,
+                     <0x43000000 0x80 0x00000000 0x80 0x00000000 0x0 0x80000000>;
+            msi-map = <0x0 &its_gic 0x0 0x10000>;
+            reg = <0x0 0xfca10000 0x0 0x1000>,
+                  <0x6 0x00000000 0x0 0x10000000>;
+            reg-names = "cpm_slcr", "cfg";
+            pcie_intc_0: interrupt-controller {
+                    #address-cells = <0>;
+                    #interrupt-cells = <1>;
+                    interrupt-controller;
+            };
+        };
+
+        pcie@fcdd0000 {
+            compatible = "xlnx,versal-cpm5-host";
+            device_type = "pci";
+            #address-cells = <3>;
+            #interrupt-cells = <1>;
+            #size-cells = <2>;
+            interrupts = <0 72 4>;
+            interrupt-parent = <&gic>;
+            interrupt-map-mask = <0 0 0 7>;
+            interrupt-map = <0 0 0 1 &pcie_intc_1 0>,
+                            <0 0 0 2 &pcie_intc_1 1>,
+                            <0 0 0 3 &pcie_intc_1 2>,
+                            <0 0 0 4 &pcie_intc_1 3>;
+            bus-range = <0x00 0xff>;
+            ranges = <0x02000000 0x0 0xe0000000 0x0 0xe0000000 0x0 0x10000000>,
+                     <0x43000000 0x80 0x00000000 0x80 0x00000000 0x0 0x80000000>;
+            msi-map = <0x0 &its_gic 0x0 0x10000>;
+            reg = <0x00 0xfcdd0000 0x00 0x1000>,
+                  <0x06 0x00000000 0x00 0x1000000>,
+                  <0x00 0xfce20000 0x00 0x1000000>;
+            reg-names = "cpm_slcr", "cfg", "cpm_csr";
+
+            pcie_intc_1: interrupt-controller {
+                #address-cells = <0>;
+                #interrupt-cells = <1>;
+                interrupt-controller;
+            };
+        };
     };
index 580fbe37b37fa630e734d8257671eb3aff8ff064..843d04027c306d4160fbf86a018b6ae0bd945b20 100644 (file)
@@ -18,6 +18,7 @@ properties:
       - brcm,bcm4908-usb-phy
       - brcm,bcm7211-usb-phy
       - brcm,bcm7216-usb-phy
+      - brcm,bcm74110-usb-phy
       - brcm,brcmstb-usb-phy
 
   reg:
@@ -139,7 +140,9 @@ allOf:
       properties:
         compatible:
           contains:
-            const: brcm,bcm7216-usb-phy
+            enum:
+              - brcm,bcm7216-usb-phy
+              - brcm,bcm74110-usb-phy
     then:
       properties:
         reg:
index daee0c0fc915392d73570d8c36cee503fb571bd7..22dd91591a09428214afaa4c9c8e37aae9bd8aba 100644 (file)
@@ -43,15 +43,15 @@ properties:
   fsl,phy-tx-vref-tune-percent:
     description:
       Tunes the HS DC level relative to the nominal level
-    minimum: 94
+    minimum: 90
     maximum: 124
 
   fsl,phy-tx-rise-tune-percent:
     description:
       Adjusts the rise/fall time duration of the HS waveform relative to
       its nominal value
-    minimum: 97
-    maximum: 103
+    minimum: 90
+    maximum: 120
 
   fsl,phy-tx-preemp-amp-tune-microamp:
     description:
@@ -63,8 +63,7 @@ properties:
   fsl,phy-tx-vboost-level-microvolt:
     description:
       Adjust the boosted transmit launch pk-pk differential amplitude
-    minimum: 880
-    maximum: 1120
+    enum: [844, 1008, 1156]
 
   fsl,phy-comp-dis-tune-percent:
     description:
@@ -112,6 +111,34 @@ allOf:
         reg:
           maxItems: 1
 
+  - if:
+      properties:
+        compatible:
+          enum:
+            - fsl,imx8mq-usb-phy
+            - fsl,imx8mp-usb-phy
+    then:
+      properties:
+        fsl,phy-tx-vref-tune-percent:
+          minimum: 94
+        fsl,phy-tx-rise-tune-percent:
+          minimum: 97
+          maximum: 103
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,imx95-usb-phy
+    then:
+      properties:
+        fsl,phy-tx-vref-tune-percent:
+          maximum: 108
+        fsl,phy-comp-dis-tune-percent:
+          minimum: 94
+          maximum: 104
+
   - if:
       required:
         - orientation-switch
index f6e494d0d89b82dabed0265782dbd9cd83de5737..acdbce937b0a4372dd892c2ae90c0534defec369 100644 (file)
@@ -30,6 +30,7 @@ properties:
           - const: mediatek,mt8173-mipi-tx
       - items:
           - enum:
+              - mediatek,mt6893-mipi-tx
               - mediatek,mt8188-mipi-tx
               - mediatek,mt8195-mipi-tx
               - mediatek,mt8365-mipi-tx
index 6be3aa4557e55dc148653643180e9a86964bc83b..b2218c15193917d7a983594978a0b993189554ea 100644 (file)
@@ -78,6 +78,7 @@ properties:
       - items:
           - enum:
               - mediatek,mt2712-tphy
+              - mediatek,mt6893-tphy
               - mediatek,mt7629-tphy
               - mediatek,mt7986-tphy
               - mediatek,mt8183-tphy
index a9e3139fd421de4bf6c159fee05dc0db6a7f8d07..0bed847bb4ad774760c1f4d3597c5a6184aad31f 100644 (file)
@@ -49,6 +49,7 @@ properties:
       - enum:
           - mediatek,mt3611-xsphy
           - mediatek,mt3612-xsphy
+          - mediatek,mt7988-xsphy
       - const: mediatek,xsphy
 
   reg:
@@ -150,6 +151,21 @@ patternProperties:
         minimum: 1
         maximum: 31
 
+      mediatek,syscon-type:
+        $ref: /schemas/types.yaml#/definitions/phandle-array
+        description:
+          A phandle to syscon used to access the register of type switch,
+          the field should always be 3 cells long.
+        items:
+          - items:
+              - description:
+                  Phandle to phy type configuration system controller
+              - description:
+                  Phy type configuration register offset
+              - description:
+                  Index of config segment
+                enum: [0, 1, 2, 3]
+
     required:
       - reg
       - clocks
index 15dc8efe6ffe74f0fdb258db54481cc4d75d5091..9af39b33646ac0a3449e7b23de9299bb02cafe28 100644 (file)
@@ -99,8 +99,7 @@ patternProperties:
           Specifies the type of PHY for which the group of PHY lanes is used.
           Refer include/dt-bindings/phy/phy.h. Constants from the header should be used.
         $ref: /schemas/types.yaml#/definitions/uint32
-        minimum: 1
-        maximum: 9
+        enum: [1, 2, 3, 4, 5, 6, 7, 8, 9, 12]
 
       cdns,num-lanes:
         description:
index 888e6b2aac5a18dbef9c3ab4e6d64e889b4edcd9..3e101c3c5ea998474621e5cd6a483102a2d4fefc 100644 (file)
@@ -42,6 +42,9 @@ properties:
       - const: phy
       - const: apb
 
+  phy-supply:
+    description: Single PHY regulator
+
   rockchip,enable-ssc:
     type: boolean
     description:
diff --git a/Bindings/phy/phy-rockchip-typec.txt b/Bindings/phy/phy-rockchip-typec.txt
deleted file mode 100644 (file)
index 960da7f..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-* ROCKCHIP type-c PHY
----------------------
-
-Required properties:
- - compatible : must be "rockchip,rk3399-typec-phy"
- - reg: Address and length of the usb phy control register set
- - rockchip,grf : phandle to the syscon managing the "general
-   register files"
- - clocks : phandle + clock specifier for the phy clocks
- - clock-names : string, clock name, must be "tcpdcore", "tcpdphy-ref";
- - assigned-clocks: main clock, should be <&cru SCLK_UPHY0_TCPDCORE> or
-                   <&cru SCLK_UPHY1_TCPDCORE>;
- - assigned-clock-rates : the phy core clk frequency, shall be: 50000000
- - resets : a list of phandle + reset specifier pairs
- - reset-names : string reset name, must be:
-                "uphy", "uphy-pipe", "uphy-tcphy"
-
-Optional properties:
- - extcon : extcon specifier for the Power Delivery
-
-Required nodes : a sub-node is required for each port the phy provides.
-                The sub-node name is used to identify dp or usb3 port,
-                and shall be the following entries:
-       * "dp-port" : the name of DP port.
-       * "usb3-port" : the name of USB3 port.
-
-Required properties (port (child) node):
-- #phy-cells : must be 0, See ./phy-bindings.txt for details.
-
-Deprecated properties, do not use in new device tree sources, these
-properties are determined by the compatible value:
- - rockchip,typec-conn-dir
- - rockchip,usb3tousb2-en
- - rockchip,external-psm
- - rockchip,pipe-status
-
-Example:
-       tcphy0: phy@ff7c0000 {
-               compatible = "rockchip,rk3399-typec-phy";
-               reg = <0x0 0xff7c0000 0x0 0x40000>;
-               rockchip,grf = <&grf>;
-               extcon = <&fusb0>;
-               clocks = <&cru SCLK_UPHY0_TCPDCORE>,
-                        <&cru SCLK_UPHY0_TCPDPHY_REF>;
-               clock-names = "tcpdcore", "tcpdphy-ref";
-               assigned-clocks = <&cru SCLK_UPHY0_TCPDCORE>;
-               assigned-clock-rates = <50000000>;
-               resets = <&cru SRST_UPHY0>,
-                        <&cru SRST_UPHY0_PIPE_L00>,
-                        <&cru SRST_P_UPHY0_TCPHY>;
-               reset-names = "uphy", "uphy-pipe", "uphy-tcphy";
-
-               tcphy0_dp: dp-port {
-                       #phy-cells = <0>;
-               };
-
-               tcphy0_usb3: usb3-port {
-                       #phy-cells = <0>;
-               };
-       };
-
-       tcphy1: phy@ff800000 {
-               compatible = "rockchip,rk3399-typec-phy";
-               reg = <0x0 0xff800000 0x0 0x40000>;
-               rockchip,grf = <&grf>;
-               extcon = <&fusb1>;
-               clocks = <&cru SCLK_UPHY1_TCPDCORE>,
-                        <&cru SCLK_UPHY1_TCPDPHY_REF>;
-               clock-names = "tcpdcore", "tcpdphy-ref";
-               assigned-clocks = <&cru SCLK_UPHY1_TCPDCORE>;
-               assigned-clock-rates = <50000000>;
-               resets = <&cru SRST_UPHY1>,
-                        <&cru SRST_UPHY1_PIPE_L00>,
-                        <&cru SRST_P_UPHY1_TCPHY>;
-               reset-names = "uphy", "uphy-pipe", "uphy-tcphy";
-
-               tcphy1_dp: dp-port {
-                       #phy-cells = <0>;
-               };
-
-               tcphy1_usb3: usb3-port {
-                       #phy-cells = <0>;
-               };
-       };
index b42f1272903d8000e4d4eeb582ed6f173b73f391..8b7059d5b1826fdec5170cf78d6e27f2bd6766bb 100644 (file)
@@ -47,6 +47,9 @@ properties:
       - const: pcs_apb
       - const: pma_apb
 
+  phy-supply:
+    description: Single PHY regulator
+
   rockchip,dp-lane-mux:
     $ref: /schemas/types.yaml#/definitions/uint32-array
     minItems: 2
index e39168d55d23c6d361b6f89f00a897e121479714..6e9df81441e94d82d78761aa4a25ea4ece65d36a 100644 (file)
@@ -11,26 +11,24 @@ maintainers:
   - Varadarajan Narayanan <quic_varada@quicinc.com>
 
 description:
-  PCIe and USB combo PHY found in Qualcomm IPQ5332 SoC
+  PCIe and USB combo PHY found in Qualcomm IPQ5018 & IPQ5332 SoCs
 
 properties:
   compatible:
     enum:
+      - qcom,ipq5018-uniphy-pcie-phy
       - qcom,ipq5332-uniphy-pcie-phy
 
   reg:
     maxItems: 1
 
   clocks:
-    items:
-      - description: pcie pipe clock
-      - description: pcie ahb clock
+    minItems: 1
+    maxItems: 2
 
   resets:
-    items:
-      - description: phy reset
-      - description: ahb reset
-      - description: cfg reset
+    minItems: 2
+    maxItems: 3
 
   "#phy-cells":
     const: 0
@@ -53,6 +51,41 @@ required:
 
 additionalProperties: false
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq5018-uniphy-pcie-phy
+    then:
+      properties:
+        clocks:
+          items:
+            - description: pcie pipe clock
+        resets:
+          items:
+            - description: phy reset
+            - description: cfg reset
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq5332-uniphy-pcie-phy
+    then:
+      properties:
+        clocks:
+          items:
+            - description: pcie pipe clock
+            - description: pcie ahb clock
+        resets:
+          items:
+            - description: phy reset
+            - description: ahb reset
+            - description: cfg reset
+
 examples:
   - |
     #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
index af275cea3456bede41fe968da5bbca17b93dbe68..2822dce8d9f405b199ace979cae0e438152cdd46 100644 (file)
@@ -16,6 +16,7 @@ properties:
           - enum:
               - renesas,usb2-phy-r8a77470  # RZ/G1C
               - renesas,usb2-phy-r9a08g045 # RZ/G3S
+              - renesas,usb2-phy-r9a09g057 # RZ/V2H(P)
 
       - items:
           - enum:
@@ -105,8 +106,13 @@ allOf:
       properties:
         compatible:
           contains:
-            const: renesas,rzg2l-usb2-phy
+            enum:
+              - renesas,usb2-phy-r9a09g057
+              - renesas,rzg2l-usb2-phy
     then:
+      properties:
+        clocks:
+          minItems: 2
       required:
         - resets
 
index 6a7ef556414cebad63c10de754778f84fd4486ee..58e735b5dd05a8b853225c1f3fcab8d79e777aed 100644 (file)
@@ -13,12 +13,14 @@ properties:
   compatible:
     enum:
       - rockchip,px30-usb2phy
+      - rockchip,rk3036-usb2phy
       - rockchip,rk3128-usb2phy
       - rockchip,rk3228-usb2phy
       - rockchip,rk3308-usb2phy
       - rockchip,rk3328-usb2phy
       - rockchip,rk3366-usb2phy
       - rockchip,rk3399-usb2phy
+      - rockchip,rk3562-usb2phy
       - rockchip,rk3568-usb2phy
       - rockchip,rk3576-usb2phy
       - rockchip,rk3588-usb2phy
@@ -184,12 +186,14 @@ allOf:
           contains:
             enum:
               - rockchip,px30-usb2phy
+              - rockchip,rk3036-usb2phy
               - rockchip,rk3128-usb2phy
               - rockchip,rk3228-usb2phy
               - rockchip,rk3308-usb2phy
               - rockchip,rk3328-usb2phy
               - rockchip,rk3366-usb2phy
               - rockchip,rk3399-usb2phy
+              - rockchip,rk3562-usb2phy
               - rockchip,rk3568-usb2phy
               - rockchip,rk3588-usb2phy
               - rockchip,rv1108-usb2phy
index ba67dca5a446fee9fb34ba8f9380ba02e59e27ce..d7de8b527c5c43593472768ceee2c7efcc15505d 100644 (file)
@@ -46,6 +46,9 @@ properties:
   reset-names:
     const: phy
 
+  phy-supply:
+    description: Single PHY regulator
+
   rockchip,phy-grf:
     $ref: /schemas/types.yaml#/definitions/phandle
     description: phandle to the syscon managing the phy "general register files"
diff --git a/Bindings/phy/rockchip,rk3399-pcie-phy.yaml b/Bindings/phy/rockchip,rk3399-pcie-phy.yaml
new file mode 100644 (file)
index 0000000..f46f065
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/rockchip,rk3399-pcie-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip RK3399 PCIE PHY
+
+maintainers:
+  - Heiko Stuebner <heiko@sntech.de>
+
+properties:
+  compatible:
+    const: rockchip,rk3399-pcie-phy
+
+  '#phy-cells':
+    oneOf:
+      - const: 0
+        deprecated: true
+      - const: 1
+        description: One lane per phy mode
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: refclk
+
+  resets:
+    maxItems: 1
+
+  reset-names:
+    const: phy
+
+required:
+  - compatible
+  - '#phy-cells'
+  - clocks
+  - clock-names
+  - resets
+  - reset-names
+
+additionalProperties: false
+
+...
diff --git a/Bindings/phy/rockchip,rk3399-typec-phy.yaml b/Bindings/phy/rockchip,rk3399-typec-phy.yaml
new file mode 100644 (file)
index 0000000..91c011f
--- /dev/null
@@ -0,0 +1,116 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/rockchip,rk3399-typec-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip Type-C PHY
+
+maintainers:
+  - Heiko Stuebner <heiko@sntech.de>
+
+properties:
+  compatible:
+    const: rockchip,rk3399-typec-phy
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: tcpdcore
+      - const: tcpdphy-ref
+
+  extcon: true
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 3
+
+  reset-names:
+    items:
+      - const: uphy
+      - const: uphy-pipe
+      - const: uphy-tcphy
+
+  rockchip,grf:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to the syscon managing the "general register files" (GRF).
+
+  dp-port:
+    type: object
+    additionalProperties: false
+
+    properties:
+      '#phy-cells':
+        const: 0
+
+      port:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Connection to USB Type-C connector
+
+    required:
+      - '#phy-cells'
+
+  usb3-port:
+    type: object
+    additionalProperties: false
+
+    properties:
+      '#phy-cells':
+        const: 0
+
+      orientation-switch: true
+
+      port:
+        $ref: /schemas/graph.yaml#/properties/port
+        description: Connection to USB Type-C connector SS port
+
+    required:
+      - '#phy-cells'
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - resets
+  - reset-names
+  - dp-port
+  - usb3-port
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/rk3399-cru.h>
+
+    phy@ff7c0000 {
+        compatible = "rockchip,rk3399-typec-phy";
+        reg = <0xff7c0000 0x40000>;
+        rockchip,grf = <&grf>;
+        extcon = <&fusb0>;
+        clocks = <&cru SCLK_UPHY0_TCPDCORE>,
+           <&cru SCLK_UPHY0_TCPDPHY_REF>;
+        clock-names = "tcpdcore", "tcpdphy-ref";
+        resets = <&cru SRST_UPHY0>,
+                 <&cru SRST_UPHY0_PIPE_L00>,
+                 <&cru SRST_P_UPHY0_TCPHY>;
+        reset-names = "uphy", "uphy-pipe", "uphy-tcphy";
+
+        dp-port {
+            #phy-cells = <0>;
+        };
+
+        usb3-port {
+            #phy-cells = <0>;
+        };
+    };
+
+...
diff --git a/Bindings/phy/rockchip-pcie-phy.txt b/Bindings/phy/rockchip-pcie-phy.txt
deleted file mode 100644 (file)
index b496042..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Rockchip PCIE PHY
------------------------
-
-Required properties:
- - compatible: rockchip,rk3399-pcie-phy
- - clocks: Must contain an entry in clock-names.
-       See ../clocks/clock-bindings.txt for details.
- - clock-names: Must be "refclk"
- - resets: Must contain an entry in reset-names.
-       See ../reset/reset.txt for details.
- - reset-names: Must be "phy"
-
-Required properties for legacy PHY mode (deprecated):
- - #phy-cells: must be 0
-
-Required properties for per-lane PHY mode (preferred):
- - #phy-cells: must be 1
-
-Example:
-
-grf: syscon@ff770000 {
-       compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       ...
-
-       pcie_phy: pcie-phy {
-               compatible = "rockchip,rk3399-pcie-phy";
-               #phy-cells = <0>;
-               clocks = <&cru SCLK_PCIEPHY_REF>;
-               clock-names = "refclk";
-               resets = <&cru SRST_PCIEPHY>;
-               reset-names = "phy";
-       };
-};
diff --git a/Bindings/phy/samsung,exynos2200-eusb2-phy.yaml b/Bindings/phy/samsung,exynos2200-eusb2-phy.yaml
new file mode 100644 (file)
index 0000000..5e7e1bc
--- /dev/null
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/samsung,exynos2200-eusb2-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Samsung Exynos2200 eUSB2 phy controller
+
+maintainers:
+  - Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
+
+description:
+  Samsung Exynos2200 eUSB2 phy, based on Synopsys eUSB2 IP block, supports
+  LS/FS/HS usb connectivity.
+
+properties:
+  compatible:
+    enum:
+      - samsung,exynos2200-eusb2-phy
+
+  reg:
+    maxItems: 1
+
+  "#phy-cells":
+    const: 0
+
+  clocks:
+    items:
+      - description: Reference clock
+      - description: Bus (APB) clock
+      - description: Control clock
+
+  clock-names:
+    items:
+      - const: ref
+      - const: bus
+      - const: ctrl
+
+  resets:
+    maxItems: 1
+
+  phys:
+    maxItems: 1
+    description:
+      Phandle to eUSB2 to USB 2.0 repeater
+
+  vdd-supply:
+    description:
+      Phandle to 0.88V regulator supply to PHY digital circuit.
+
+  vdda12-supply:
+    description:
+      Phandle to 1.2V regulator supply to PHY refclk pll block.
+
+required:
+  - compatible
+  - reg
+  - "#phy-cells"
+  - clocks
+  - clock-names
+  - vdd-supply
+  - vdda12-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    usb_hsphy: phy@10ab0000 {
+        compatible = "samsung,exynos2200-eusb2-phy";
+        reg = <0x10ab0000 0x10000>;
+        #phy-cells = <0>;
+
+        clocks = <&cmu_hsi0 7>,
+                 <&cmu_hsi0 5>,
+                 <&cmu_hsi0 8>;
+        clock-names = "ref", "bus", "ctrl";
+
+        vdd-supply = <&vreg_0p88>;
+        vdda12-supply = <&vreg_1p2>;
+    };
index 27295acbba7674f6cdc402f18ff4c505bd8760f6..cc60d2f6f70e32ea745d523c8a74022e4fb747d2 100644 (file)
@@ -26,31 +26,41 @@ properties:
   compatible:
     enum:
       - google,gs101-usb31drd-phy
+      - samsung,exynos2200-usb32drd-phy
       - samsung,exynos5250-usbdrd-phy
       - samsung,exynos5420-usbdrd-phy
       - samsung,exynos5433-usbdrd-phy
       - samsung,exynos7-usbdrd-phy
+      - samsung,exynos7870-usbdrd-phy
       - samsung,exynos850-usbdrd-phy
 
   clocks:
-    minItems: 2
+    minItems: 1
     maxItems: 5
 
   clock-names:
-    minItems: 2
+    minItems: 1
     maxItems: 5
     description: |
-      At least two clocks::
+      Typically two clocks:
         - Main PHY clock (same as USB DRD controller i.e. DWC3 IP clock), used
           for register access.
         - PHY reference clock (usually crystal clock), used for PHY operations,
           associated by phy name. It is used to determine bit values for clock
           settings register.  For Exynos5420 this is given as 'sclk_usbphy30'
-          in the CMU.
+          in the CMU. It's not needed for Exynos2200.
 
   "#phy-cells":
     const: 1
 
+  phys:
+    maxItems: 1
+    description:
+      USBDRD-underlying high-speed PHY
+
+  phy-names:
+    const: hs
+
   port:
     $ref: /schemas/graph.yaml#/properties/port
     description:
@@ -150,6 +160,27 @@ allOf:
         - vdda-usbdp-supply
         - vddh-usbdp-supply
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - samsung,exynos2200-usb32drd-phy
+    then:
+      properties:
+        clocks:
+          maxItems: 1
+        clock-names:
+          items:
+            - const: phy
+        reg:
+          maxItems: 1
+        reg-names:
+          maxItems: 1
+      required:
+        - phys
+        - phy-names
+
   - if:
       properties:
         compatible:
@@ -184,6 +215,7 @@ allOf:
             enum:
               - samsung,exynos5250-usbdrd-phy
               - samsung,exynos5420-usbdrd-phy
+              - samsung,exynos7870-usbdrd-phy
               - samsung,exynos850-usbdrd-phy
     then:
       properties:
index 8eb50cad61d584c34e4307103ba76924d2f114e3..a6ef4797e5c5936a42f9d64ce1b6442801f1f7cd 100644 (file)
@@ -14,7 +14,12 @@ allOf:
 
 properties:
   compatible:
-    const: amlogic,pinctrl-a4
+    oneOf:
+      - const: amlogic,pinctrl-a4
+      - items:
+          - enum:
+              - amlogic,pinctrl-a5
+          - const: amlogic,pinctrl-a4
 
   "#address-cells":
     const: 2
@@ -65,6 +70,7 @@ patternProperties:
     patternProperties:
       "^group-[0-9a-z-]+$":
         type: object
+        unevaluatedProperties: false
         allOf:
           - $ref: /schemas/pinctrl/pincfg-node.yaml
           - $ref: /schemas/pinctrl/pinmux-node.yaml
diff --git a/Bindings/pinctrl/fsl,imx7ulp-iomuxc1.yaml b/Bindings/pinctrl/fsl,imx7ulp-iomuxc1.yaml
new file mode 100644 (file)
index 0000000..957918b
--- /dev/null
@@ -0,0 +1,99 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/fsl,imx7ulp-iomuxc1.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale i.MX7ULP IOMUX Controller
+
+description: |
+  i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports, IOMUXC1 for A7
+  ports and IOMUXC DDR for DDR interface.
+
+  Note: This binding doc is only for the IOMUXC1 support in A7 Domain and it
+  only supports generic pin config.
+
+  Please refer to fsl,imx-pinctrl.txt in this directory for common binding
+  part and usage.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,imx7ulp-iomuxc1
+
+  reg:
+    maxItems: 1
+
+patternProperties:
+  'grp$':
+    type: object
+    description:
+      Pinctrl node's client devices use subnodes for desired pin configuration.
+      Client device subnodes use below standard properties.
+
+    properties:
+      fsl,pins:
+        description:
+          Each entry consists of 5 integers which represents the mux
+          and config setting for one pin. The first 4 integers
+          <mux_conf_reg input_reg mux_mode input_val> are specified
+          using a PIN_FUNC_ID macro, which can be found in
+          imx7ulp-pinfunc.h in the device tree source folder.
+          The last integer CONFIG is the pad setting value like
+          pull-up on this pin.
+
+          Please refer to i.MX7ULP Reference Manual for detailed
+          CONFIG settings.
+        $ref: /schemas/types.yaml#/definitions/uint32-matrix
+        items:
+          items:
+            - description: |
+                "mux_conf_reg" indicates the offset of mux register.
+            - description: |
+                "input_reg" indicates the offset of select input register.
+            - description: |
+                "mux_mode" indicates the mux value to be applied.
+            - description: |
+                "input_val" indicates the select input value to be applied.
+            - description: |
+                CONFIG bits definition:
+                  PAD_CTL_OBE           (1 << 17)
+                  PAD_CTL_IBE           (1 << 16)
+                  PAD_CTL_LK            (1 << 16)
+                  PAD_CTL_DSE_HI        (1 << 6)
+                  PAD_CTL_DSE_STD       (0 << 6)
+                  PAD_CTL_ODE           (1 << 5)
+                  PAD_CTL_PUSH_PULL     (0 << 5)
+                  PAD_CTL_SRE_SLOW      (1 << 2)
+                  PAD_CTL_SRE_STD       (0 << 2)
+                  PAD_CTL_PE            (1 << 0)
+
+    required:
+      - fsl,pins
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - $ref: pinctrl.yaml#
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    pinctrl@40ac0000 {
+        compatible = "fsl,imx7ulp-iomuxc1";
+        reg = <0x40ac0000 0x1000>;
+
+        lpuart4grp {
+            fsl,pins = <
+                0x000c 0x0248 0x4 0x1 0x1
+                0x0008 0x024c 0x4 0x1 0x1
+            >;
+        };
+    };
diff --git a/Bindings/pinctrl/fsl,imx7ulp-pinctrl.txt b/Bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
deleted file mode 100644 (file)
index bfa3703..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-* Freescale i.MX7ULP IOMUX Controller
-
-i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports, IOMUXC1 for A7
-ports and IOMUXC DDR for DDR interface.
-
-Note:
-This binding doc is only for the IOMUXC1 support in A7 Domain and it only
-supports generic pin config.
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding
-part and usage.
-
-Required properties:
-- compatible:  "fsl,imx7ulp-iomuxc1".
-- fsl,pins:    Each entry consists of 5 integers which represents the mux
-               and config setting for one pin. The first 4 integers
-               <mux_conf_reg input_reg mux_mode input_val> are specified
-               using a PIN_FUNC_ID macro, which can be found in
-               imx7ulp-pinfunc.h in the device tree source folder.
-               The last integer CONFIG is the pad setting value like
-               pull-up on this pin.
-
-               Please refer to i.MX7ULP Reference Manual for detailed
-               CONFIG settings.
-
-CONFIG bits definition:
-PAD_CTL_OBE            (1 << 17)
-PAD_CTL_IBE            (1 << 16)
-PAD_CTL_LK             (1 << 16)
-PAD_CTL_DSE_HI         (1 << 6)
-PAD_CTL_DSE_STD                (0 << 6)
-PAD_CTL_ODE            (1 << 5)
-PAD_CTL_PUSH_PULL      (0 << 5)
-PAD_CTL_SRE_SLOW       (1 << 2)
-PAD_CTL_SRE_STD                (0 << 2)
-PAD_CTL_PE             (1 << 0)
-
-Examples:
-#include "imx7ulp-pinfunc.h"
-
-/* Pin Controller Node */
-iomuxc1: pinctrl@40ac0000 {
-       compatible = "fsl,imx7ulp-iomuxc1";
-       reg = <0x40ac0000 0x1000>;
-
-       /* Pin Configuration Node */
-       pinctrl_lpuart4: lpuart4grp {
-               fsl,pins = <
-                       IMX7ULP_PAD_PTC3__LPUART4_RX    0x1
-                       IMX7ULP_PAD_PTC2__LPUART4_TX    0x1
-               >;
-       };
-};
diff --git a/Bindings/pinctrl/fsl,vf610-iomuxc.yaml b/Bindings/pinctrl/fsl,vf610-iomuxc.yaml
new file mode 100644 (file)
index 0000000..3e13587
--- /dev/null
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/fsl,vf610-iomuxc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Vybrid VF610 IOMUX Controller
+
+description:
+  Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
+  and usage.
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+properties:
+  compatible:
+    const: fsl,vf610-iomuxc
+
+  reg:
+    maxItems: 1
+
+patternProperties:
+  'grp$':
+    type: object
+    description:
+      Pinctrl node's client devices use subnodes for desired pin configuration.
+      Client device subnodes use below standard properties.
+
+    properties:
+      fsl,pins:
+        description:
+          two integers array, represents a group of pins mux and config setting.
+          The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a pin
+          working on a specific function, CONFIG is the pad setting value such
+          as pull-up, speed, ode for this pin. Please refer to Vybrid VF610
+          datasheet for the valid pad config settings.
+        $ref: /schemas/types.yaml#/definitions/uint32-matrix
+        items:
+          items:
+            - description:
+                PIN_FUN_ID refer to vf610-pinfunc.h in device tree source folder
+                for all available PIN_FUNC_ID for Vybrid VF610.
+            - description: |
+                CONFIG bits definition is
+                PAD_CTL_SPEED_LOW               (1 << 12)
+                PAD_CTL_SPEED_MED               (2 << 12)
+                PAD_CTL_SPEED_HIGH              (3 << 12)
+                PAD_CTL_SRE_FAST                (1 << 11)
+                PAD_CTL_SRE_SLOW                (0 << 11)
+                PAD_CTL_ODE                     (1 << 10)
+                PAD_CTL_HYS                     (1 << 9)
+                PAD_CTL_DSE_DISABLE             (0 << 6)
+                PAD_CTL_DSE_150ohm              (1 << 6)
+                PAD_CTL_DSE_75ohm               (2 << 6)
+                PAD_CTL_DSE_50ohm               (3 << 6)
+                PAD_CTL_DSE_37ohm               (4 << 6)
+                PAD_CTL_DSE_30ohm               (5 << 6)
+                PAD_CTL_DSE_25ohm               (6 << 6)
+                PAD_CTL_DSE_20ohm               (7 << 6)
+                PAD_CTL_PUS_100K_DOWN           (0 << 4)
+                PAD_CTL_PUS_47K_UP              (1 << 4)
+                PAD_CTL_PUS_100K_UP             (2 << 4)
+                PAD_CTL_PUS_22K_UP              (3 << 4)
+                PAD_CTL_PKE                     (1 << 3)
+                PAD_CTL_PUE                     (1 << 2)
+                PAD_CTL_OBE_ENABLE              (1 << 1)
+                PAD_CTL_IBE_ENABLE              (1 << 0)
+                PAD_CTL_OBE_IBE_ENABLE          (3 << 0)
+
+    required:
+      - fsl,pins
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+
+allOf:
+  - $ref: pinctrl.yaml#
+
+unevaluatedProperties: false
diff --git a/Bindings/pinctrl/fsl,vf610-pinctrl.txt b/Bindings/pinctrl/fsl,vf610-pinctrl.txt
deleted file mode 100644 (file)
index ddcdeb6..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-Freescale Vybrid VF610 IOMUX Controller
-
-Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
-and usage.
-
-Required properties:
-- compatible: "fsl,vf610-iomuxc"
-- fsl,pins: two integers array, represents a group of pins mux and config
-  setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is
-  a pin working on a specific function, CONFIG is the pad setting value
-  such as pull-up, speed, ode for this pin. Please refer to Vybrid VF610
-  datasheet for the valid pad config settings.
-
-CONFIG bits definition:
-PAD_CTL_SPEED_LOW              (1 << 12)
-PAD_CTL_SPEED_MED              (2 << 12)
-PAD_CTL_SPEED_HIGH             (3 << 12)
-PAD_CTL_SRE_FAST               (1 << 11)
-PAD_CTL_SRE_SLOW               (0 << 11)
-PAD_CTL_ODE                    (1 << 10)
-PAD_CTL_HYS                    (1 << 9)
-PAD_CTL_DSE_DISABLE            (0 << 6)
-PAD_CTL_DSE_150ohm             (1 << 6)
-PAD_CTL_DSE_75ohm              (2 << 6)
-PAD_CTL_DSE_50ohm              (3 << 6)
-PAD_CTL_DSE_37ohm              (4 << 6)
-PAD_CTL_DSE_30ohm              (5 << 6)
-PAD_CTL_DSE_25ohm              (6 << 6)
-PAD_CTL_DSE_20ohm              (7 << 6)
-PAD_CTL_PUS_100K_DOWN          (0 << 4)
-PAD_CTL_PUS_47K_UP             (1 << 4)
-PAD_CTL_PUS_100K_UP            (2 << 4)
-PAD_CTL_PUS_22K_UP             (3 << 4)
-PAD_CTL_PKE                    (1 << 3)
-PAD_CTL_PUE                    (1 << 2)
-PAD_CTL_OBE_ENABLE             (1 << 1)
-PAD_CTL_IBE_ENABLE             (1 << 0)
-PAD_CTL_OBE_IBE_ENABLE         (3 << 0)
-
-Please refer to vf610-pinfunc.h in device tree source folder
-for all available PIN_FUNC_ID for Vybrid VF610.
index bccff08a5ba3f53fe91dfb1106a1e507d3eb1def..b9680b896f12f8a2d61493b31eeeb0a270fcafad 100644 (file)
@@ -136,75 +136,44 @@ examples:
         #address-cells = <2>;
         #size-cells = <2>;
 
-        syscfg_pctl_a: syscfg-pctl-a@10005000 {
-          compatible = "mediatek,mt8135-pctl-a-syscfg", "syscon";
-          reg = <0 0x10005000 0 0x1000>;
-        };
-
-        syscfg_pctl_b: syscfg-pctl-b@1020c020 {
-          compatible = "mediatek,mt8135-pctl-b-syscfg", "syscon";
-          reg = <0 0x1020C020 0 0x1000>;
-        };
-
         pinctrl@1c20800 {
-          compatible = "mediatek,mt8135-pinctrl";
-          reg = <0 0x1000B000 0 0x1000>;
-          mediatek,pctl-regmap = <&syscfg_pctl_a>, <&syscfg_pctl_b>;
-          gpio-controller;
-          #gpio-cells = <2>;
-          interrupt-controller;
-          #interrupt-cells = <2>;
-          interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
-              <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
-              <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
-
-          i2c0_pins_a: i2c0-pins {
-            pins1 {
-              pinmux = <MT8135_PIN_100_SDA0__FUNC_SDA0>,
-                <MT8135_PIN_101_SCL0__FUNC_SCL0>;
-              bias-disable;
-            };
-          };
-
-          i2c1_pins_a: i2c1-pins {
-            pins {
-              pinmux = <MT8135_PIN_195_SDA1__FUNC_SDA1>,
-                <MT8135_PIN_196_SCL1__FUNC_SCL1>;
-              bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+            compatible = "mediatek,mt8135-pinctrl";
+            reg = <0 0x1000B000 0 0x1000>;
+            mediatek,pctl-regmap = <&syscfg_pctl_a>, <&syscfg_pctl_b>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            interrupt-controller;
+            #interrupt-cells = <2>;
+            interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+
+            i2c0_pins_a: i2c0-pins {
+                pins1 {
+                    pinmux = <MT8135_PIN_100_SDA0__FUNC_SDA0>,
+                             <MT8135_PIN_101_SCL0__FUNC_SCL0>;
+                    bias-disable;
+                };
             };
-          };
 
-          i2c2_pins_a: i2c2-pins {
-            pins1 {
-              pinmux = <MT8135_PIN_193_SDA2__FUNC_SDA2>;
-              bias-pull-down;
+            i2c1_pins_a: i2c1-pins {
+                pins {
+                    pinmux = <MT8135_PIN_195_SDA1__FUNC_SDA1>,
+                             <MT8135_PIN_196_SCL1__FUNC_SCL1>;
+                    bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
+                };
             };
 
-            pins2 {
-              pinmux = <MT8135_PIN_49_WATCHDOG__FUNC_GPIO49>;
-              bias-pull-up;
-            };
-          };
-
-          i2c3_pins_a: i2c3-pins {
-            pins1 {
-              pinmux = <MT8135_PIN_40_DAC_CLK__FUNC_GPIO40>,
-                <MT8135_PIN_41_DAC_WS__FUNC_GPIO41>;
-              bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-            };
-
-            pins2 {
-              pinmux = <MT8135_PIN_35_SCL3__FUNC_SCL3>,
-                <MT8135_PIN_36_SDA3__FUNC_SDA3>;
-              output-low;
-              bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
-            };
+            i2c2_pins_a: i2c2-pins {
+                pins1 {
+                    pinmux = <MT8135_PIN_193_SDA2__FUNC_SDA2>;
+                    bias-pull-down;
+                };
 
-            pins3 {
-              pinmux = <MT8135_PIN_57_JTCK__FUNC_GPIO57>,
-                <MT8135_PIN_60_JTDI__FUNC_JTDI>;
-              drive-strength = <32>;
+                pins2 {
+                    pinmux = <MT8135_PIN_49_WATCHDOG__FUNC_GPIO49>;
+                    bias-pull-up;
+                };
             };
-          };
         };
     };
index 3bbc00df5548d4d5031b0bf82c7d7256b0e0ce2d..f4bab7a132d3cd209ec1000ac00ac4f7759ff4aa 100644 (file)
@@ -245,9 +245,4 @@ examples:
                 };
             };
         };
-
-        mmc0 {
-           pinctrl-0 = <&mmc0_pins_default>;
-           pinctrl-names = "default";
-        };
     };
diff --git a/Bindings/pinctrl/mediatek,mt6893-pinctrl.yaml b/Bindings/pinctrl/mediatek,mt6893-pinctrl.yaml
new file mode 100644 (file)
index 0000000..fa189fe
--- /dev/null
@@ -0,0 +1,193 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/mediatek,mt6893-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MediaTek MT6893 Pin Controller
+
+maintainers:
+  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+
+description:
+  The MediaTek's MT6893 Pin controller is used to control SoC pins.
+
+properties:
+  compatible:
+    const: mediatek,mt6893-pinctrl
+
+  reg:
+    items:
+      - description: pin controller base
+      - description: rm group IO
+      - description: bm group IO
+      - description: lm group IO
+      - description: lb group IO
+      - description: rt group IO
+      - description: lt group IO
+      - description: tm group IO
+      - description: External Interrupt (EINT) controller base
+
+  reg-names:
+    items:
+      - const: base
+      - const: rm
+      - const: bm
+      - const: lm
+      - const: lb
+      - const: rt
+      - const: lt
+      - const: tm
+      - const: eint
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    description:
+      Number of cells in GPIO specifier. Since the generic GPIO binding is used,
+      the amount of cells must be specified as 2. See the below mentioned gpio
+      binding representation for description of particular cells.
+    const: 2
+
+  gpio-ranges:
+    maxItems: 1
+
+  gpio-line-names: true
+
+  interrupts:
+    description: The interrupt outputs to sysirq
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+# PIN CONFIGURATION NODES
+patternProperties:
+  '-pins$':
+    type: object
+    additionalProperties: false
+
+    patternProperties:
+      '^pins':
+        type: object
+        allOf:
+          - $ref: /schemas/pinctrl/pincfg-node.yaml
+          - $ref: /schemas/pinctrl/pinmux-node.yaml
+        description:
+          A pinctrl node should contain at least one subnodes representing the
+          pinctrl groups available on the machine. Each subnode will list the
+          pins it needs, and how they should be configured, with regard to muxer
+          configuration, pullups, drive strength, input enable/disable and input
+          schmitt.
+
+        properties:
+          pinmux:
+            description:
+              Integer array, represents gpio pin number and mux setting.
+              Supported pin number and mux are defined as macros in
+              arch/arm64/boot/dts/mediatek/mt8196-pinfunc.h for this SoC.
+
+          drive-strength:
+            enum: [2, 4, 6, 8, 10, 12, 14, 16]
+
+          drive-strength-microamp:
+            enum: [125, 250, 500, 1000]
+
+          bias-pull-down:
+            oneOf:
+              - type: boolean
+              - enum: [75000, 5000]
+                description: Pull down RSEL type resistance values (in ohms)
+            description:
+              For normal pull down type there is no need to specify a resistance
+              value, hence this can be specified as a boolean property.
+              For RSEL pull down type a resistance value (in ohms) can be added.
+
+          bias-pull-up:
+            oneOf:
+              - type: boolean
+              - enum: [10000, 5000, 4000, 3000]
+                description: Pull up RSEL type resistance values (in ohms)
+            description:
+              For normal pull up type there is no need to specify a resistance
+              value, hence this can be specified as a boolean property.
+              For RSEL pull up type a resistance value (in ohms) can be added.
+
+          bias-disable: true
+
+          output-high: true
+
+          output-low: true
+
+          input-enable: true
+
+          input-disable: true
+
+          input-schmitt-enable: true
+
+          input-schmitt-disable: true
+
+        required:
+          - pinmux
+
+        additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - '#interrupt-cells'
+  - gpio-controller
+  - '#gpio-cells'
+  - gpio-ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/pinctrl/mt65xx.h>
+    #define PINMUX_GPIO0__FUNC_GPIO0 (MTK_PIN_NO(0) | 0)
+    #define PINMUX_GPIO99__FUNC_SCL0 (MTK_PIN_NO(99) | 1)
+    #define PINMUX_GPIO100__FUNC_SDA0 (MTK_PIN_NO(100) | 1)
+
+    pio: pinctrl@10005000 {
+        compatible = "mediatek,mt6893-pinctrl";
+        reg = <0x10005000 0x1000>,
+              <0x11c20000 0x0200>,
+              <0x11d10000 0x0200>,
+              <0x11e20000 0x0200>,
+              <0x11e70000 0x0200>,
+              <0x11ea0000 0x0200>,
+              <0x11f20000 0x0200>,
+              <0x11f30000 0x0200>,
+              <0x1100b000 0x1000>;
+        reg-names = "base", "rm", "bm", "lm", "lb", "rt",
+                    "lt", "tm", "eint";
+        gpio-controller;
+        #gpio-cells = <2>;
+        gpio-ranges = <&pio 0 0 220>;
+        interrupt-controller;
+        interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH 0>;
+        #interrupt-cells = <2>;
+
+        gpio-pins {
+            pins {
+                pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
+                bias-pull-up = <4000>;
+                drive-strength = <6>;
+            };
+        };
+
+        i2c0-pins {
+            pins-bus {
+                pinmux = <PINMUX_GPIO99__FUNC_SCL0>,
+                         <PINMUX_GPIO100__FUNC_SDA0>;
+                bias-pull-down = <75000>;
+                drive-strength-microamp = <1000>;
+            };
+        };
+    };
index d74cae9d4d6508d6469108fe0010df6a8e0a11fa..9acca85184fa2cf7e143100a65dce9e3b644e51e 100644 (file)
@@ -366,34 +366,34 @@ examples:
         #size-cells = <2>;
 
         pio: pinctrl@10211000 {
-          compatible = "mediatek,mt7622-pinctrl";
-          reg = <0 0x10211000 0 0x1000>;
-          gpio-controller;
-          #gpio-cells = <2>;
-
-          pinctrl_eth_default: eth-pins {
-            mux-mdio {
-              groups = "mdc_mdio";
-              function = "eth";
-              drive-strength = <12>;
+            compatible = "mediatek,mt7622-pinctrl";
+            reg = <0 0x10211000 0 0x1000>;
+            gpio-controller;
+            #gpio-cells = <2>;
+
+            pinctrl_eth_default: eth-pins {
+                mux-mdio {
+                    groups = "mdc_mdio";
+                    function = "eth";
+                    drive-strength = <12>;
+                };
+
+                mux-gmac2 {
+                    groups = "rgmii_via_gmac2";
+                    function = "eth";
+                    drive-strength = <12>;
+                };
+
+                mux-esw {
+                    groups = "esw";
+                    function = "eth";
+                    drive-strength = <8>;
+                };
+
+                conf-mdio {
+                    pins = "MDC";
+                    bias-pull-up;
+                };
             };
-
-            mux-gmac2 {
-              groups = "rgmii_via_gmac2";
-              function = "eth";
-              drive-strength = <12>;
-            };
-
-            mux-esw {
-              groups = "esw";
-              function = "eth";
-              drive-strength = <8>;
-            };
-
-            conf-mdio {
-              pins = "MDC";
-              bias-pull-up;
-            };
-          };
         };
     };
index 8507bd15f2431d57bfd554124022adc7e6d0f227..464879274cae4c5389f1210ba65c316ce6c433f7 100644 (file)
@@ -195,43 +195,43 @@ examples:
         #size-cells = <2>;
 
         pio: pinctrl@10005000 {
-          compatible = "mediatek,mt8183-pinctrl";
-          reg = <0 0x10005000 0 0x1000>,
-                <0 0x11f20000 0 0x1000>,
-                <0 0x11e80000 0 0x1000>,
-                <0 0x11e70000 0 0x1000>,
-                <0 0x11e90000 0 0x1000>,
-                <0 0x11d30000 0 0x1000>,
-                <0 0x11d20000 0 0x1000>,
-                <0 0x11c50000 0 0x1000>,
-                <0 0x11f30000 0 0x1000>,
-                <0 0x1000b000 0 0x1000>;
-          reg-names = "iocfg0", "iocfg1", "iocfg2",
-                "iocfg3", "iocfg4", "iocfg5",
-                "iocfg6", "iocfg7", "iocfg8",
-                "eint";
-          gpio-controller;
-          #gpio-cells = <2>;
-          gpio-ranges = <&pio 0 0 192>;
-          interrupt-controller;
-          interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
-          #interrupt-cells = <2>;
-
-          i2c0_pins_a: i2c0-pins {
-            pins1 {
-              pinmux = <PINMUX_GPIO48__FUNC_SCL5>,
-                <PINMUX_GPIO49__FUNC_SDA5>;
-              mediatek,pull-up-adv = <3>;
-              drive-strength-microamp = <1000>;
+            compatible = "mediatek,mt8183-pinctrl";
+            reg = <0 0x10005000 0 0x1000>,
+                  <0 0x11f20000 0 0x1000>,
+                  <0 0x11e80000 0 0x1000>,
+                  <0 0x11e70000 0 0x1000>,
+                  <0 0x11e90000 0 0x1000>,
+                  <0 0x11d30000 0 0x1000>,
+                  <0 0x11d20000 0 0x1000>,
+                  <0 0x11c50000 0 0x1000>,
+                  <0 0x11f30000 0 0x1000>,
+                  <0 0x1000b000 0 0x1000>;
+            reg-names = "iocfg0", "iocfg1", "iocfg2",
+                  "iocfg3", "iocfg4", "iocfg5",
+                  "iocfg6", "iocfg7", "iocfg8",
+                  "eint";
+            gpio-controller;
+            #gpio-cells = <2>;
+            gpio-ranges = <&pio 0 0 192>;
+            interrupt-controller;
+            interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
+            #interrupt-cells = <2>;
+
+            i2c0_pins_a: i2c0-pins {
+                pins1 {
+                  pinmux = <PINMUX_GPIO48__FUNC_SCL5>,
+                           <PINMUX_GPIO49__FUNC_SDA5>;
+                    mediatek,pull-up-adv = <3>;
+                    drive-strength-microamp = <1000>;
+                };
             };
-          };
 
-          i2c1_pins_a: i2c1-pins {
-            pins {
-              pinmux = <PINMUX_GPIO50__FUNC_SCL3>,
-                <PINMUX_GPIO51__FUNC_SDA3>;
-              mediatek,pull-down-adv = <2>;
+            i2c1_pins_a: i2c1-pins {
+                pins {
+                    pinmux = <PINMUX_GPIO50__FUNC_SCL3>,
+                             <PINMUX_GPIO51__FUNC_SDA3>;
+                    mediatek,pull-down-adv = <2>;
+                };
             };
-          };
         };
     };
index 1686427eb8547f4432ff8bf60835af526163d8d3..949dcd6fd847d3c70d8e3bd47f38d9001566b941 100644 (file)
@@ -142,43 +142,43 @@ additionalProperties: false
 
 examples:
   - |
-            #include <dt-bindings/pinctrl/mt8192-pinfunc.h>
-            #include <dt-bindings/interrupt-controller/arm-gic.h>
-            pio: pinctrl@10005000 {
-                    compatible = "mediatek,mt8192-pinctrl";
-                    reg = <0x10005000 0x1000>,
-                          <0x11c20000 0x1000>,
-                          <0x11d10000 0x1000>,
-                          <0x11d30000 0x1000>,
-                          <0x11d40000 0x1000>,
-                          <0x11e20000 0x1000>,
-                          <0x11e70000 0x1000>,
-                          <0x11ea0000 0x1000>,
-                          <0x11f20000 0x1000>,
-                          <0x11f30000 0x1000>,
-                          <0x1000b000 0x1000>;
-                    reg-names = "iocfg0", "iocfg_rm", "iocfg_bm",
-                          "iocfg_bl", "iocfg_br", "iocfg_lm",
-                          "iocfg_lb", "iocfg_rt", "iocfg_lt",
-                          "iocfg_tl", "eint";
-                    gpio-controller;
-                    #gpio-cells = <2>;
-                    gpio-ranges = <&pio 0 0 220>;
-                    interrupt-controller;
-                    interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH 0>;
-                    #interrupt-cells = <2>;
-
-                    spi1-default-pins {
-                            pins-cs-mosi-clk {
-                                    pinmux = <PINMUX_GPIO157__FUNC_SPI1_A_CSB>,
-                                             <PINMUX_GPIO159__FUNC_SPI1_A_MO>,
-                                             <PINMUX_GPIO156__FUNC_SPI1_A_CLK>;
-                                    bias-disable;
-                            };
-
-                            pins-miso {
-                                    pinmux = <PINMUX_GPIO158__FUNC_SPI1_A_MI>;
-                                    bias-pull-down;
-                            };
-                    };
+    #include <dt-bindings/pinctrl/mt8192-pinfunc.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    pio: pinctrl@10005000 {
+        compatible = "mediatek,mt8192-pinctrl";
+        reg = <0x10005000 0x1000>,
+              <0x11c20000 0x1000>,
+              <0x11d10000 0x1000>,
+              <0x11d30000 0x1000>,
+              <0x11d40000 0x1000>,
+              <0x11e20000 0x1000>,
+              <0x11e70000 0x1000>,
+              <0x11ea0000 0x1000>,
+              <0x11f20000 0x1000>,
+              <0x11f30000 0x1000>,
+              <0x1000b000 0x1000>;
+        reg-names = "iocfg0", "iocfg_rm", "iocfg_bm",
+              "iocfg_bl", "iocfg_br", "iocfg_lm",
+              "iocfg_lb", "iocfg_rt", "iocfg_lt",
+              "iocfg_tl", "eint";
+        gpio-controller;
+        #gpio-cells = <2>;
+        gpio-ranges = <&pio 0 0 220>;
+        interrupt-controller;
+        interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH 0>;
+        #interrupt-cells = <2>;
+
+        spi1-default-pins {
+            pins-cs-mosi-clk {
+                pinmux = <PINMUX_GPIO157__FUNC_SPI1_A_CSB>,
+                         <PINMUX_GPIO159__FUNC_SPI1_A_MO>,
+                         <PINMUX_GPIO156__FUNC_SPI1_A_CLK>;
+                bias-disable;
             };
+
+            pins-miso {
+                pinmux = <PINMUX_GPIO158__FUNC_SPI1_A_MI>;
+                bias-pull-down;
+            };
+        };
+    };
diff --git a/Bindings/pinctrl/mediatek,mt8196-pinctrl.yaml b/Bindings/pinctrl/mediatek,mt8196-pinctrl.yaml
new file mode 100644 (file)
index 0000000..9082bd6
--- /dev/null
@@ -0,0 +1,236 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8196-pinctrl.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: MediaTek MT8196 Pin Controller
+
+maintainers:
+  - Lei Xue <lei.xue@mediatek.com>
+  - Cathy Xu <ot_cathy.xu@mediatek.com>
+
+description:
+  The MediaTek's MT8196 Pin controller is used to control SoC pins.
+
+properties:
+  compatible:
+    const: mediatek,mt8196-pinctrl
+
+  reg:
+    items:
+      - description: gpio base
+      - description: rt group IO
+      - description: rm1 group IO
+      - description: rm2 group IO
+      - description: rb group IO
+      - description: bm1 group IO
+      - description: bm2 group IO
+      - description: bm3 group IO
+      - description: lt group IO
+      - description: lm1 group IO
+      - description: lm2 group IO
+      - description: lb1 group IO
+      - description: lb2 group IO
+      - description: tm1 group IO
+      - description: tm2 group IO
+      - description: tm3 group IO
+      - description: eint0 group IO
+      - description: eint1 group IO
+      - description: eint2 group IO
+      - description: eint3 group IO
+      - description: eint4 group IO
+
+  reg-names:
+    items:
+      - const: base
+      - const: rt
+      - const: rm1
+      - const: rm2
+      - const: rb
+      - const: bm1
+      - const: bm2
+      - const: bm3
+      - const: lt
+      - const: lm1
+      - const: lm2
+      - const: lb1
+      - const: lb2
+      - const: tm1
+      - const: tm2
+      - const: tm3
+      - const: eint0
+      - const: eint1
+      - const: eint2
+      - const: eint3
+      - const: eint4
+
+  interrupts:
+    description: The interrupt outputs to sysirq.
+    maxItems: 1
+
+  interrupt-controller: true
+
+  '#interrupt-cells':
+    const: 2
+
+  gpio-controller: true
+
+  '#gpio-cells':
+    description:
+      Number of cells in GPIO specifier, should be two. The first cell is the
+      pin number, the second cell is used to specify optional parameters which
+      are defined in <dt-bindings/gpio/gpio.h>.
+    const: 2
+
+  gpio-ranges:
+    maxItems: 1
+
+  gpio-line-names: true
+
+# PIN CONFIGURATION NODES
+patternProperties:
+  '-pins$':
+    type: object
+    additionalProperties: false
+
+    patternProperties:
+      '^pins':
+        type: object
+        $ref: /schemas/pinctrl/pincfg-node.yaml
+        additionalProperties: false
+        description:
+          A pinctrl node should contain at least one subnode representing the
+          pinctrl groups available on the machine. Each subnode will list the
+          pins it needs, and how they should be configured, with regard to muxer
+          configuration, pullups, drive strength, input enable/disable and input
+          schmitt.
+
+        properties:
+          pinmux:
+            description:
+              Integer array, represents gpio pin number and mux setting.
+              Supported pin number and mux varies for different SoCs, and are
+              defined as macros in arch/arm64/boot/dts/mediatek/mt8196-pinfunc.h
+              directly, for this SoC.
+
+          drive-strength:
+            enum: [2, 4, 6, 8, 10, 12, 14, 16]
+
+          bias-pull-down:
+            oneOf:
+              - type: boolean
+              - enum: [100, 101, 102, 103]
+                description: mt8196 pull down PUPD/R0/R1 type define value.
+              - enum: [75000, 5000]
+                description: mt8196 pull down RSEL type si unit value(ohm).
+            description: |
+              For pull down type is normal, it doesn't need add R1R0 define
+              and resistance value.
+              For pull down type is PUPD/R0/R1 type, it can add R1R0 define to
+              set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
+              "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &
+              "MTK_PUPD_SET_R1R0_11" define in mt8196.
+              For pull down type is PD/RSEL, it can add resistance value(ohm)
+              to set different resistance by identifying property
+              "mediatek,rsel-resistance-in-si-unit". It can support resistance
+              value(ohm) "75000" & "5000" in mt8196.
+
+          bias-pull-up:
+            oneOf:
+              - type: boolean
+              - enum: [100, 101, 102, 103]
+                description: mt8196 pull up PUPD/R0/R1 type define value.
+              - enum: [1000, 1500, 2000, 3000, 4000, 5000, 75000]
+                description: mt8196 pull up RSEL type si unit value(ohm).
+            description: |
+              For pull up type is normal, it don't need add R1R0 define
+              and resistance value.
+              For pull up type is PUPD/R0/R1 type, it can add R1R0 define to
+              set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
+              "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &
+              "MTK_PUPD_SET_R1R0_11" define in mt8196.
+              For pull up type is PU/RSEL, it can add resistance value(ohm)
+              to set different resistance by identifying property
+              "mediatek,rsel-resistance-in-si-unit". It can support resistance
+              value(ohm) "1000" & "1500" & "2000" & "3000" & "4000" & "5000" &
+              "75000" in mt8196.
+
+          bias-disable: true
+
+          output-high: true
+
+          output-low: true
+
+          input-enable: true
+
+          input-disable: true
+
+          input-schmitt-enable: true
+
+          input-schmitt-disable: true
+
+        required:
+          - pinmux
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-controller
+  - '#interrupt-cells'
+  - gpio-controller
+  - '#gpio-cells'
+  - gpio-ranges
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/pinctrl/mt65xx.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #define PINMUX_GPIO99__FUNC_SCL0 (MTK_PIN_NO(99) | 1)
+    #define PINMUX_GPIO100__FUNC_SDA0 (MTK_PIN_NO(100) | 1)
+
+    pio: pinctrl@1002d000 {
+        compatible = "mediatek,mt8196-pinctrl";
+        reg = <0x1002d000 0x1000>,
+              <0x12000000 0x1000>,
+              <0x12020000 0x1000>,
+              <0x12040000 0x1000>,
+              <0x12060000 0x1000>,
+              <0x12820000 0x1000>,
+              <0x12840000 0x1000>,
+              <0x12860000 0x1000>,
+              <0x13000000 0x1000>,
+              <0x13020000 0x1000>,
+              <0x13040000 0x1000>,
+              <0x130f0000 0x1000>,
+              <0x13110000 0x1000>,
+              <0x13800000 0x1000>,
+              <0x13820000 0x1000>,
+              <0x13860000 0x1000>,
+              <0x12080000 0x1000>,
+              <0x12880000 0x1000>,
+              <0x13080000 0x1000>,
+              <0x13880000 0x1000>,
+              <0x1c54a000 0x1000>;
+        reg-names = "base", "rt", "rm1", "rm2", "rb" , "bm1",
+                    "bm2", "bm3", "lt", "lm1", "lm2", "lb1",
+                    "lb2", "tm1", "tm2", "tm3", "eint0", "eint1",
+                    "eint2", "eint3", "eint4";
+        gpio-controller;
+        #gpio-cells = <2>;
+        gpio-ranges = <&pio 0 0 271>;
+        interrupt-controller;
+        interrupts = <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH 0>;
+        #interrupt-cells = <2>;
+
+        i2c0-pins {
+            pins {
+                pinmux = <PINMUX_GPIO99__FUNC_SCL0>,
+                         <PINMUX_GPIO100__FUNC_SDA0>;
+                bias-disable;
+            };
+        };
+    };
index 1ce4b5df584abecefd9424271ab029472d04aded..2791e578c1ded3fc1b839c59fa1d8c90df4d837e 100644 (file)
@@ -110,7 +110,7 @@ examples:
               <0x03c00000 0x300000>;
         reg-names = "east", "west", "south";
         interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
-        gpio-ranges = <&tlmm 0 0 123>;
+        gpio-ranges = <&tlmm 0 0 124>;
         gpio-controller;
         #gpio-cells = <2>;
         interrupt-controller;
index bb0d7132886a1ad1a7a52a446adc211ab859275a..489b41dcc17932ded89d8e0fad0e284e516a6042 100644 (file)
@@ -106,7 +106,7 @@ examples:
         interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
         gpio-controller;
         #gpio-cells = <2>;
-        gpio-ranges = <&tlmm 0 0 133>;
+        gpio-ranges = <&tlmm 0 0 134>;
         interrupt-controller;
         #interrupt-cells = <2>;
 
index 768bb3c2b45613881ab85c24f649f14a559c709e..5156d54b240b1eaba5b7a73b8f7fa5e19dd5a9f9 100644 (file)
@@ -27,6 +27,7 @@ properties:
               - renesas,r9a07g044-pinctrl # RZ/G2{L,LC}
               - renesas,r9a08g045-pinctrl # RZ/G3S
               - renesas,r9a09g047-pinctrl # RZ/G3E
+              - renesas,r9a09g056-pinctrl # RZ/V2N
               - renesas,r9a09g057-pinctrl # RZ/V2H(P)
 
       - items:
@@ -145,6 +146,7 @@ allOf:
           contains:
             enum:
               - renesas,r9a09g047-pinctrl
+              - renesas,r9a09g056-pinctrl
               - renesas,r9a09g057-pinctrl
     then:
       properties:
index 816688580e334e0935790ad53bdeee296a78b570..aa882b5bfe97f20ad68b77dc66baa18f869528d8 100644 (file)
@@ -13,9 +13,7 @@ maintainers:
 properties:
   compatible:
     items:
-      - enum:
-          - renesas,r9a06g032-pinctrl # RZ/N1D
-          - renesas,r9a06g033-pinctrl # RZ/N1S
+      - const: renesas,r9a06g032-pinctrl # RZ/N1D
       - const: renesas,rzn1-pinctrl   # Generic RZ/N1
 
   reg:
index b01ecd83b71b5e9f47256adde23bc8b183bef05e..d80e88aa07b45f4a3d90e8217caf93d32655927d 100644 (file)
@@ -17,6 +17,19 @@ properties:
     items:
       - description: pinctrl io memory base
 
+  clocks:
+    items:
+      - description: Functional Clock
+      - description: Bus Clock
+
+  clock-names:
+    items:
+      - const: func
+      - const: bus
+
+  resets:
+    maxItems: 1
+
 patternProperties:
   '-cfg$':
     type: object
@@ -94,6 +107,8 @@ patternProperties:
 required:
   - compatible
   - reg
+  - clocks
+  - clock-names
 
 additionalProperties: false
 
@@ -108,6 +123,9 @@ examples:
         pinctrl@d401e000 {
             compatible = "spacemit,k1-pinctrl";
             reg = <0x0 0xd401e000 0x0 0x400>;
+            clocks = <&syscon_apbc 42>,
+                     <&syscon_apbc 94>;
+            clock-names = "func", "bus";
 
             uart0_2_cfg: uart0-2-cfg {
                 uart0-2-pins {
index b470901f5f562215e06aeee9bf99e74cd2b32056..4dbef86bd9581135e8ef75539c29bd999eb06cd2 100644 (file)
@@ -15,7 +15,7 @@ description: |
   Some peripherals such as PWM have their I/O go through the 4 "GPIOs".
 
 maintainers:
-  - Jianlong Huang <jianlong.huang@starfivetech.com>
+  - Hal Feng <hal.feng@starfivetech.com>
 
 properties:
   compatible:
index 222b9e240f8af9adb507834cde2dabd33029435f..e2a25a20f6a6e6cb86c4069bdedc6f6fe395f6f0 100644 (file)
@@ -18,7 +18,7 @@ description: |
   any GPIO can be set up to be controlled by any of the peripherals.
 
 maintainers:
-  - Jianlong Huang <jianlong.huang@starfivetech.com>
+  - Hal Feng <hal.feng@starfivetech.com>
 
 properties:
   compatible:
diff --git a/Bindings/pmem/pmem-region.txt b/Bindings/pmem/pmem-region.txt
deleted file mode 100644 (file)
index cd79975..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-Device-tree bindings for persistent memory regions
------------------------------------------------------
-
-Persistent memory refers to a class of memory devices that are:
-
-       a) Usable as main system memory (i.e. cacheable), and
-       b) Retain their contents across power failure.
-
-Given b) it is best to think of persistent memory as a kind of memory mapped
-storage device. To ensure data integrity the operating system needs to manage
-persistent regions separately to the normal memory pool. To aid with that this
-binding provides a standardised interface for discovering where persistent
-memory regions exist inside the physical address space.
-
-Bindings for the region nodes:
------------------------------
-
-Required properties:
-       - compatible = "pmem-region"
-
-       - reg = <base, size>;
-               The reg property should specify an address range that is
-               translatable to a system physical address range. This address
-               range should be mappable as normal system memory would be
-               (i.e cacheable).
-
-               If the reg property contains multiple address ranges
-               each address range will be treated as though it was specified
-               in a separate device node. Having multiple address ranges in a
-               node implies no special relationship between the two ranges.
-
-Optional properties:
-       - Any relevant NUMA associativity properties for the target platform.
-
-       - volatile; This property indicates that this region is actually
-         backed by non-persistent memory. This lets the OS know that it
-         may skip the cache flushes required to ensure data is made
-         persistent after a write.
-
-         If this property is absent then the OS must assume that the region
-         is backed by non-volatile memory.
-
-Examples:
---------------------
-
-       /*
-        * This node specifies one 4KB region spanning from
-        * 0x5000 to 0x5fff that is backed by non-volatile memory.
-        */
-       pmem@5000 {
-               compatible = "pmem-region";
-               reg = <0x00005000 0x00001000>;
-       };
-
-       /*
-        * This node specifies two 4KB regions that are backed by
-        * volatile (normal) memory.
-        */
-       pmem@6000 {
-               compatible = "pmem-region";
-               reg = < 0x00006000 0x00001000
-                       0x00008000 0x00001000 >;
-               volatile;
-       };
-
diff --git a/Bindings/pmem/pmem-region.yaml b/Bindings/pmem/pmem-region.yaml
new file mode 100644 (file)
index 0000000..bd0f0c7
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pmem-region.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+maintainers:
+  - Oliver O'Halloran <oohall@gmail.com>
+
+title: Persistent Memory Regions
+
+description: |
+  Persistent memory refers to a class of memory devices that are:
+
+    a) Usable as main system memory (i.e. cacheable), and
+    b) Retain their contents across power failure.
+
+  Given b) it is best to think of persistent memory as a kind of memory mapped
+  storage device. To ensure data integrity the operating system needs to manage
+  persistent regions separately to the normal memory pool. To aid with that this
+  binding provides a standardised interface for discovering where persistent
+  memory regions exist inside the physical address space.
+
+properties:
+  compatible:
+    const: pmem-region
+
+  reg:
+    maxItems: 1
+
+  volatile:
+    description:
+      Indicates the region is volatile (non-persistent) and the OS can skip
+      cache flushes for writes
+    type: boolean
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    pmem@5000 {
+        compatible = "pmem-region";
+        reg = <0x00005000 0x00001000>;
+    };
diff --git a/Bindings/power/allwinner,sun50i-h6-prcm-ppu.yaml b/Bindings/power/allwinner,sun50i-h6-prcm-ppu.yaml
new file mode 100644 (file)
index 0000000..73a9b4d
--- /dev/null
@@ -0,0 +1,42 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/power/allwinner,sun50i-h6-prcm-ppu.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner SoCs PRCM power domain controller
+
+maintainers:
+  - Andre Przywara <andre.przywara@arm.com>
+
+description:
+  The Allwinner Power Reset Clock Management (PRCM) unit contains bits to
+  control a few power domains.
+
+properties:
+  compatible:
+    enum:
+      - allwinner,sun50i-h6-prcm-ppu
+      - allwinner,sun50i-h616-prcm-ppu
+      - allwinner,sun55i-a523-prcm-ppu
+
+  reg:
+    maxItems: 1
+
+  '#power-domain-cells':
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - '#power-domain-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    prcm_ppu: power-controller@7010210 {
+        compatible = "allwinner,sun50i-h616-prcm-ppu";
+        reg = <0x7010210 0x10>;
+        #power-domain-cells = <1>;
+    };
index 591a080ca3ff0fb808ef7714283ad3298dd87d24..9c7cc632abee2567ce3bb00fb24fe02abf985c6d 100644 (file)
@@ -25,6 +25,7 @@ properties:
     enum:
       - mediatek,mt6735-power-controller
       - mediatek,mt6795-power-controller
+      - mediatek,mt6893-power-controller
       - mediatek,mt8167-power-controller
       - mediatek,mt8173-power-controller
       - mediatek,mt8183-power-controller
@@ -88,6 +89,7 @@ $defs:
         description: |
           Power domain index. Valid values are defined in:
               "include/dt-bindings/power/mt6795-power.h" - for MT8167 type power domain.
+              "include/dt-bindings/power/mediatek,mt6893-power.h" - for MT6893 type power domain.
               "include/dt-bindings/power/mt8167-power.h" - for MT8167 type power domain.
               "include/dt-bindings/power/mt8173-power.h" - for MT8173 type power domain.
               "include/dt-bindings/power/mt8183-power.h" - for MT8183 type power domain.
index 655687369a238a096673a3482082533390283508..1bf65f2a583ab70ac313309f917aaabb75dc3f85 100644 (file)
@@ -50,6 +50,7 @@ properties:
           - qcom,sdx55-rpmhpd
           - qcom,sdx65-rpmhpd
           - qcom,sdx75-rpmhpd
+          - qcom,sm4450-rpmhpd
           - qcom,sm6115-rpmpd
           - qcom,sm6125-rpmpd
           - qcom,sm6350-rpmhpd
index 19d3093e6cd2f7e39d94c56636dc202a4427ffc3..ccd5558700943ef56f5e1c866400bcc21c0115f0 100644 (file)
@@ -21,7 +21,9 @@ description: |+
 
 properties:
   compatible:
-    const: syscon-reboot
+    enum:
+      - syscon-reboot
+      - google,gs101-reboot
 
   mask:
     $ref: /schemas/types.yaml#/definitions/uint32
@@ -49,12 +51,6 @@ properties:
   priority:
     default: 192
 
-oneOf:
-  - required:
-      - offset
-  - required:
-      - reg
-
 required:
   - compatible
 
@@ -63,12 +59,29 @@ additionalProperties: false
 allOf:
   - $ref: restart-handler.yaml#
   - if:
-      not:
-        required:
-          - mask
+      properties:
+        compatible:
+          contains:
+            const: google,gs101-reboot
     then:
-      required:
-        - value
+      properties:
+        mask: false
+        offset: false
+        reg: false
+        value: false
+
+    else:
+      if:
+        not:
+          required:
+            - mask
+      then:
+        required:
+          - value
+
+      oneOf:
+        - required: [offset]
+        - required: [reg]
 
 examples:
   - |
@@ -78,3 +91,8 @@ examples:
         offset = <0x0>;
         mask = <0x1>;
     };
+
+  - |
+    reboot {
+        compatible = "google,gs101-reboot";
+    };
diff --git a/Bindings/power/reset/toradex,smarc-ec.yaml b/Bindings/power/reset/toradex,smarc-ec.yaml
new file mode 100644 (file)
index 0000000..ffcd5f2
--- /dev/null
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/power/reset/toradex,smarc-ec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Toradex Embedded Controller
+
+maintainers:
+  - Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
+  - Francesco Dolcini <francesco.dolcini@toradex.com>
+
+description: |
+  The Toradex Embedded Controller (EC) is used on Toradex SMARC modules,
+  primarily to manage power and reset functionalities.
+
+  The EC provides the following functions:
+    - Reads the SMARC POWER_BTN# and RESET_IN# signals and controls the PMIC accordingly.
+    - Controls the SoC boot mode signals based on the SMARC BOOT_SEL# and FORCE_RECOV# inputs.
+    - Manages the CARRIER_STDBY# signal in response to relevant SoC signals.
+
+  The EC runs a small firmware, factory programmed into its internal flash, and communicates over I2C.
+  It allows software to control power-off and reset functionalities of the module.
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - toradex,smarc-imx95-ec
+          - toradex,smarc-imx8mp-ec
+      - const: toradex,smarc-ec
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        reset-controller@28 {
+            compatible = "toradex,smarc-imx95-ec", "toradex,smarc-ec";
+            reg = <0x28>;
+        };
+    };
index ebab98987e492d64fff9977848fd8942ed96c4b9..f494b7710c099bd44bc49abfb90fb35f00ee508b 100644 (file)
@@ -40,6 +40,7 @@ properties:
       - rockchip,rk3366-power-controller
       - rockchip,rk3368-power-controller
       - rockchip,rk3399-power-controller
+      - rockchip,rk3562-power-controller
       - rockchip,rk3568-power-controller
       - rockchip,rk3576-power-controller
       - rockchip,rk3588-power-controller
index 07adf88997b4e3eaa4bd7c6245efdc31fddc9058..307c99c077217ab4b5fac30694a4a316dd51f8e4 100644 (file)
@@ -19,6 +19,7 @@ properties:
       - ti,bq24190
       - ti,bq24192
       - ti,bq24192i
+      - ti,bq24193
       - ti,bq24196
       - ti,bq24296
       - ti,bq24297
index b70ce8d7f86c22e06920ebb4a55e6fbdf65b636a..256adbef55ebf83f00181d07696c2182787195c1 100644 (file)
@@ -87,28 +87,28 @@ unevaluatedProperties: false
 examples:
   - |
     bat: battery {
-      compatible = "simple-battery";
-      constant-charge-current-max-microamp = <4000000>;
-      constant-charge-voltage-max-microvolt = <8400000>;
-      precharge-current-microamp = <160000>;
-      charge-term-current-microamp = <160000>;
+        compatible = "simple-battery";
+        constant-charge-current-max-microamp = <4000000>;
+        constant-charge-voltage-max-microvolt = <8400000>;
+        precharge-current-microamp = <160000>;
+        charge-term-current-microamp = <160000>;
     };
     #include <dt-bindings/gpio/gpio.h>
     #include <dt-bindings/interrupt-controller/irq.h>
     i2c {
-      #address-cells = <1>;
-      #size-cells = <0>;
-
-      bq25980: charger@65 {
-          compatible = "ti,bq25980";
-          reg = <0x65>;
-          interrupt-parent = <&gpio1>;
-          interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
-          ti,watchdog-timeout-ms = <0>;
-          ti,sc-ocp-limit-microamp = <2000000>;
-          ti,sc-ovp-limit-microvolt = <17800000>;
-          monitored-battery = <&bat>;
-      };
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        bq25980: charger@65 {
+            compatible = "ti,bq25980";
+            reg = <0x65>;
+            interrupt-parent = <&gpio1>;
+            interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
+            ti,watchdog-timeout-ms = <0>;
+            ti,sc-ocp-limit-microamp = <2000000>;
+            ti,sc-ovp-limit-microvolt = <17800000>;
+            monitored-battery = <&bat>;
+        };
     };
 
 ...
index 741022b4449daf87472784ae4ad051d4952484a1..cb04fb25d8ac0429a16b6b6de7e09fd13c175c43 100644 (file)
@@ -48,14 +48,14 @@ examples:
     #include <dt-bindings/iio/adc/ingenic,adc.h>
 
     simple_battery: battery {
-            compatible = "simple-battery";
-            voltage-min-design-microvolt = <3600000>;
-            voltage-max-design-microvolt = <4200000>;
+        compatible = "simple-battery";
+        voltage-min-design-microvolt = <3600000>;
+        voltage-max-design-microvolt = <4200000>;
     };
 
     ingenic-battery {
-            compatible = "ingenic,jz4740-battery";
-            io-channels = <&adc INGENIC_ADC_BATTERY>;
-            io-channel-names = "battery";
-            monitored-battery = <&simple_battery>;
+        compatible = "ingenic,jz4740-battery";
+        io-channels = <&adc INGENIC_ADC_BATTERY>;
+        io-channel-names = "battery";
+        monitored-battery = <&simple_battery>;
     };
index 06595a9536592d4f56d20a5920847b5eda1a3eae..bc7ed7b22085727f3ad3a7c6798f6cf2a993fe68 100644 (file)
@@ -61,13 +61,13 @@ additionalProperties: false
 examples:
   - |
     i2c {
-      #address-cells = <1>;
-      #size-cells = <0>;
-      charger: battery-charger@68 {
-              compatible = "lltc,ltc4162-l";
-              reg = <0x68>;
-              lltc,rsnsb-micro-ohms = <10000>;
-              lltc,rsnsi-micro-ohms = <16000>;
-              lltc,cell-count = <2>;
-      };
+        #address-cells = <1>;
+        #size-cells = <0>;
+        charger: battery-charger@68 {
+            compatible = "lltc,ltc4162-l";
+            reg = <0x68>;
+            lltc,rsnsb-micro-ohms = <10000>;
+            lltc,rsnsi-micro-ohms = <16000>;
+            lltc,cell-count = <2>;
+        };
     };
index bce7fabbd9d3c0f422d3f77f88f15458a1c021bd..e3b84068993bae92d89d5974a4a9d42224aa69ef 100644 (file)
@@ -37,8 +37,8 @@ examples:
     #include <dt-bindings/interrupt-controller/irq.h>
 
     i2c {
-      #address-cells = <1>;
-      #size-cells = <0>;
+        #address-cells = <1>;
+        #size-cells = <0>;
 
         charger@69 {
             compatible = "maxim,max77705-charger";
diff --git a/Bindings/power/supply/maxim,max8971.yaml b/Bindings/power/supply/maxim,max8971.yaml
new file mode 100644 (file)
index 0000000..2244cc3
--- /dev/null
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/power/supply/maxim,max8971.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Maxim MAX8971 IC charger
+
+maintainers:
+  - Svyatoslav Ryhel <clamor95@gmail.com>
+
+description:
+  The MAX8971 is a compact, high-frequency, high-efficiency switch-mode charger
+  for a one-cell lithium-ion (Li+) battery.
+
+allOf:
+  - $ref: power-supply.yaml#
+
+properties:
+  compatible:
+    const: maxim,max8971
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  monitored-battery: true
+
+  port:
+    description:
+      An optional port node to link the extcon device to detect type of plug.
+    $ref: /schemas/graph.yaml#/properties/port
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        charger@35 {
+            compatible = "maxim,max8971";
+            reg = <0x35>;
+
+            interrupt-parent = <&gpio>;
+            interrupts = <74 IRQ_TYPE_LEVEL_LOW>;
+
+            monitored-battery = <&battery>;
+
+            port {
+                charger_input: endpoint {
+                    remote-endpoint = <&extcon_output>;
+                };
+            };
+        };
+    };
+...
diff --git a/Bindings/power/supply/pegatron,chagall-ec.yaml b/Bindings/power/supply/pegatron,chagall-ec.yaml
new file mode 100644 (file)
index 0000000..defb086
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/power/supply/pegatron,chagall-ec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Pegatron Chagall EC
+
+maintainers:
+  - Svyatoslav Ryhel <clamor95@gmail.com>
+
+description:
+  Pegatron Chagall EC is based on an 8-bit programmable microcontroller from
+  Infineon/Cypress Semiconductor, it communicates over I2C and is used in the
+  Pegatron Chagall tablet for fuel gauge and battery control functions.
+
+$ref: /schemas/power/supply/power-supply.yaml
+
+properties:
+  compatible:
+    const: pegatron,chagall-ec
+
+  reg:
+    maxItems: 1
+
+  monitored-battery: true
+  power-supplies: true
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        embedded-controller@10 {
+            compatible = "pegatron,chagall-ec";
+            reg = <0x10>;
+
+            monitored-battery = <&battery>;
+            power-supplies = <&mains>;
+        };
+    };
+...
index a0f9d49ff8fb6038068231d4472e4d8f9d914b1e..90c7dc7632c58dc5cbfb3abcde8e730882bfd936 100644 (file)
@@ -7,7 +7,7 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
 title: Qualcomm PMI8998/PM660 Switch-Mode Battery Charger "2"
 
 maintainers:
-  - Caleb Connolly <caleb.connolly@linaro.org>
+  - Casey Connolly <casey.connolly@linaro.org>
 
 properties:
   compatible:
diff --git a/Bindings/powerpc/fsl/pmc.txt b/Bindings/powerpc/fsl/pmc.txt
deleted file mode 100644 (file)
index 07256b7..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-* Power Management Controller
-
-Properties:
-- compatible: "fsl,<chip>-pmc".
-
-  "fsl,mpc8349-pmc" should be listed for any chip whose PMC is
-  compatible.  "fsl,mpc8313-pmc" should also be listed for any chip
-  whose PMC is compatible, and implies deep-sleep capability.
-
-  "fsl,mpc8548-pmc" should be listed for any chip whose PMC is
-  compatible.  "fsl,mpc8536-pmc" should also be listed for any chip
-  whose PMC is compatible, and implies deep-sleep capability.
-
-  "fsl,mpc8641d-pmc" should be listed for any chip whose PMC is
-  compatible; all statements below that apply to "fsl,mpc8548-pmc" also
-  apply to "fsl,mpc8641d-pmc".
-
-  Compatibility does not include bit assignments in SCCR/PMCDR/DEVDISR; these
-  bit assignments are indicated via the sleep specifier in each device's
-  sleep property.
-
-- reg: For devices compatible with "fsl,mpc8349-pmc", the first resource
-  is the PMC block, and the second resource is the Clock Configuration
-  block.
-
-  For devices compatible with "fsl,mpc8548-pmc", the first resource
-  is a 32-byte block beginning with DEVDISR.
-
-- interrupts: For "fsl,mpc8349-pmc"-compatible devices, the first
-  resource is the PMC block interrupt.
-
-- fsl,mpc8313-wakeup-timer: For "fsl,mpc8313-pmc"-compatible devices,
-  this is a phandle to an "fsl,gtm" node on which timer 4 can be used as
-  a wakeup source from deep sleep.
-
-Sleep specifiers:
-
-  fsl,mpc8349-pmc: Sleep specifiers consist of one cell.  For each bit
-  that is set in the cell, the corresponding bit in SCCR will be saved
-  and cleared on suspend, and restored on resume.  This sleep controller
-  supports disabling and resuming devices at any time.
-
-  fsl,mpc8536-pmc: Sleep specifiers consist of three cells, the third of
-  which will be ORed into PMCDR upon suspend, and cleared from PMCDR
-  upon resume.  The first two cells are as described for fsl,mpc8578-pmc.
-  This sleep controller only supports disabling devices during system
-  sleep, or permanently.
-
-  fsl,mpc8548-pmc: Sleep specifiers consist of one or two cells, the
-  first of which will be ORed into DEVDISR (and the second into
-  DEVDISR2, if present -- this cell should be zero or absent if the
-  hardware does not have DEVDISR2) upon a request for permanent device
-  disabling.  This sleep controller does not support configuring devices
-  to disable during system sleep (unless supported by another compatible
-  match), or dynamically.
-
-Example:
-
-       power@b00 {
-               compatible = "fsl,mpc8313-pmc", "fsl,mpc8349-pmc";
-               reg = <0xb00 0x100 0xa00 0x100>;
-               interrupts = <80 8>;
-       };
diff --git a/Bindings/powerpc/fsl/pmc.yaml b/Bindings/powerpc/fsl/pmc.yaml
new file mode 100644 (file)
index 0000000..276ece7
--- /dev/null
@@ -0,0 +1,152 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/powerpc/fsl/pmc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Power Management Controller
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+description: |
+  The Power Management Controller in several MPC8xxx SoCs helps save power by
+  controlling chip-wide low-power states as well as peripheral clock gating.
+
+  Sleep of peripheral devices is configured by the `sleep` property, for
+  example `sleep = <&pmc 0x00000030>`. Any cells after the &pmc phandle are
+  called a sleep specifier.
+
+  For "fsl,mpc8349-pmc", sleep specifiers consist of one cell.  For each bit that
+  is set in the cell, the corresponding bit in SCCR will be saved and cleared
+  on suspend, and restored on resume.  This sleep controller supports disabling
+  and resuming devices at any time.
+
+  For "fsl,mpc8536-pmc", sleep specifiers consist of three cells, the third of
+  which will be ORed into PMCDR upon suspend, and cleared from PMCDR upon
+  resume.  The first two cells are as described for fsl,mpc8548-pmc.  This
+  sleep controller only supports disabling devices during system sleep, or
+  permanently.
+
+  For "fsl,mpc8548-pmc" or "fsl,mpc8641d-pmc", Sleep specifiers consist of one
+  or two cells, the first of which will be ORed into DEVDISR (and the second
+  into DEVDISR2, if present -- this cell should be zero or absent if the
+  hardware does not have DEVDISR2) upon a request for permanent device
+  disabling.  This sleep controller does not support configuring devices to
+  disable during system sleep (unless supported by another compatible match),
+  or dynamically.
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: fsl,mpc8315-pmc
+          - const: fsl,mpc8313-pmc
+          - const: fsl,mpc8349-pmc
+
+      - items:
+          - enum:
+              - fsl,mpc8313-pmc
+              - fsl,mpc8323-pmc
+              - fsl,mpc8360-pmc
+              - fsl,mpc8377-pmc
+              - fsl,mpc8378-pmc
+              - fsl,mpc8379-pmc
+          - const: fsl,mpc8349-pmc
+
+      - items:
+          - const: fsl,p1022-pmc
+          - const: fsl,mpc8536-pmc
+          - const: fsl,mpc8548-pmc
+
+      - items:
+          - enum:
+              - fsl,mpc8536-pmc
+              - fsl,mpc8568-pmc
+              - fsl,mpc8569-pmc
+          - const: fsl,mpc8548-pmc
+
+      - enum:
+          - fsl,mpc8548-pmc
+          - fsl,mpc8641d-pmc
+
+    description: |
+      "fsl,mpc8349-pmc" should be listed for any chip whose PMC is
+      compatible.  "fsl,mpc8313-pmc" should also be listed for any chip
+      whose PMC is compatible, and implies deep-sleep capability.
+
+      "fsl,mpc8548-pmc" should be listed for any chip whose PMC is
+      compatible.  "fsl,mpc8536-pmc" should also be listed for any chip
+      whose PMC is compatible, and implies deep-sleep capability.
+
+      "fsl,mpc8641d-pmc" should be listed for any chip whose PMC is
+      compatible; all statements below that apply to "fsl,mpc8548-pmc" also
+      apply to "fsl,mpc8641d-pmc".
+
+      Compatibility does not include bit assignments in SCCR/PMCDR/DEVDISR; these
+      bit assignments are indicated via the sleep specifier in each device's
+      sleep property.
+
+  reg:
+    minItems: 1
+    maxItems: 2
+
+  interrupts:
+    maxItems: 1
+
+  fsl,mpc8313-wakeup-timer:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      For "fsl,mpc8313-pmc"-compatible devices, this is a phandle to an
+      "fsl,gtm" node on which timer 4 can be used as a wakeup source from deep
+      sleep.
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: fsl,mpc8349-pmc
+    then:
+      properties:
+        reg:
+          items:
+            - description: PMC block
+            - description: Clock Configuration block
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,mpc8548-pmc
+              - fsl,mpc8641d-pmc
+    then:
+      properties:
+        reg:
+          items:
+            - description: 32-byte block beginning with DEVDISR
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    pmc: power@b00 {
+        compatible = "fsl,mpc8377-pmc", "fsl,mpc8349-pmc";
+        reg = <0xb00 0x100>, <0xa00 0x100>;
+        interrupts = <80 IRQ_TYPE_LEVEL_LOW>;
+    };
+
+  - |
+    power@e0070 {
+        compatible = "fsl,mpc8548-pmc";
+        reg = <0xe0070 0x20>;
+    };
+
+...
index 45e112d0efb4663bc7fbb3a25a12d66aa8b7492d..5575c58357d6e78a3c02bada54b7bdc3316fd81b 100644 (file)
@@ -30,11 +30,19 @@ properties:
     const: 3
 
   clocks:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: axi
+      - const: ext
 
 required:
   - reg
   - clocks
+  - clock-names
 
 unevaluatedProperties: false
 
@@ -43,6 +51,7 @@ examples:
     pwm@44b00000 {
         compatible = "adi,axi-pwmgen-2.00.a";
         reg = <0x44b00000 0x1000>;
-        clocks = <&spi_clk>;
+        clocks = <&fpga_clk>, <&spi_clk>;
+        clock-names = "axi", "ext";
         #pwm-cells = <3>;
     };
diff --git a/Bindings/pwm/loongson,ls7a-pwm.yaml b/Bindings/pwm/loongson,ls7a-pwm.yaml
new file mode 100644 (file)
index 0000000..5d64fb4
--- /dev/null
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/loongson,ls7a-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Loongson PWM Controller
+
+maintainers:
+  - Binbin Zhou <zhoubinbin@loongson.cn>
+
+description:
+  The Loongson PWM has one pulse width output signal and one pulse input
+  signal to be measured.
+  It can be found on Loongson-2K series cpus and Loongson LS7A bridge chips.
+
+allOf:
+  - $ref: pwm.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - const: loongson,ls7a-pwm
+      - items:
+          - enum:
+              - loongson,ls2k0500-pwm
+              - loongson,ls2k1000-pwm
+              - loongson,ls2k2000-pwm
+          - const: loongson,ls7a-pwm
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  '#pwm-cells':
+    description:
+      The first cell must have a value of 0, which specifies the PWM output signal;
+      The second cell is the period in nanoseconds;
+      The third cell flag supported by this binding is PWM_POLARITY_INVERTED.
+    const: 3
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/loongson,ls2k-clk.h>
+
+    pwm@1fe22000 {
+        compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+        reg = <0x1fe22000 0x10>;
+        interrupt-parent = <&liointc0>;
+        interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clk LOONGSON2_APB_CLK>;
+        #pwm-cells = <3>;
+    };
index 195e4371196beb2bc1a331c35eb24aba32a5d598..68ef30414325a587cb466cb6b19f0cabfe2162f6 100644 (file)
@@ -27,6 +27,7 @@ properties:
           - const: mediatek,mt8173-disp-pwm
       - items:
           - enum:
+              - mediatek,mt6893-disp-pwm
               - mediatek,mt8186-disp-pwm
               - mediatek,mt8188-disp-pwm
               - mediatek,mt8192-disp-pwm
diff --git a/Bindings/pwm/nxp,mc33xs2410.yaml b/Bindings/pwm/nxp,mc33xs2410.yaml
new file mode 100644 (file)
index 0000000..1729fe5
--- /dev/null
@@ -0,0 +1,118 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/nxp,mc33xs2410.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: High-side switch MC33XS2410
+
+maintainers:
+  - Dimitri Fedrau <dima.fedrau@gmail.com>
+
+allOf:
+  - $ref: pwm.yaml#
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+properties:
+  compatible:
+    const: nxp,mc33xs2410
+
+  reg:
+    maxItems: 1
+
+  spi-max-frequency:
+    maximum: 10000000
+
+  spi-cpha: true
+
+  spi-cs-setup-delay-ns:
+    minimum: 100
+    default: 100
+
+  spi-cs-hold-delay-ns:
+    minimum: 10
+    default: 10
+
+  spi-cs-inactive-delay-ns:
+    minimum: 300
+    default: 300
+
+  reset-gpios:
+    description:
+      GPIO connected to the active low reset pin.
+    maxItems: 1
+
+  "#pwm-cells":
+    const: 3
+
+  pwm-names:
+    items:
+      - const: di0
+      - const: di1
+      - const: di2
+      - const: di3
+
+  pwms:
+    description:
+      Direct inputs(di0-3) are used to directly turn-on or turn-off the
+      outputs.
+    maxItems: 4
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    description:
+      The external clock can be used if the internal clock doesn't meet
+      timing requirements over temperature and voltage operating range.
+    maxItems: 1
+
+  vdd-supply:
+    description:
+      Logic supply voltage
+
+  vspi-supply:
+    description:
+      Supply voltage for SPI
+
+  vpwr-supply:
+    description:
+      Power switch supply
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    spi {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+       pwm@0 {
+           compatible = "nxp,mc33xs2410";
+           reg = <0x0>;
+           spi-max-frequency = <4000000>;
+           spi-cpha;
+           spi-cs-setup-delay-ns = <100>;
+           spi-cs-hold-delay-ns = <10>;
+           spi-cs-inactive-delay-ns = <300>;
+           reset-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
+           #pwm-cells = <3>;
+           pwm-names = "di0", "di1", "di2", "di3";
+           pwms = <&pwm0 0 1000000>,
+                  <&pwm1 0 1000000>,
+                  <&pwm2 0 1000000>,
+                  <&pwm3 0 1000000>;
+           interrupt-parent = <&gpio0>;
+           interrupts = <31 IRQ_TYPE_LEVEL_LOW>;
+           clocks = <&clk_ext_fixed>;
+           vdd-supply = <&reg_3v3>;
+           vspi-supply = <&reg_3v3>;
+           vpwr-supply = <&reg_24v0>;
+       };
+    };
diff --git a/Bindings/pwm/renesas,rzg2l-gpt.yaml b/Bindings/pwm/renesas,rzg2l-gpt.yaml
new file mode 100644 (file)
index 0000000..13b8077
--- /dev/null
@@ -0,0 +1,378 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/renesas,rzg2l-gpt.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas RZ/G2L General PWM Timer (GPT)
+
+maintainers:
+  - Biju Das <biju.das.jz@bp.renesas.com>
+
+description: |
+  RZ/G2L General PWM Timer (GPT) composed of 8 channels with 32-bit timer
+  (GPT32E). It supports the following functions
+  * 32 bits x 8 channels.
+  * Up-counting or down-counting (saw waves) or up/down-counting
+    (triangle waves) for each counter.
+  * Clock sources independently selectable for each channel.
+  * Two I/O pins per channel.
+  * Two output compare/input capture registers per channel.
+  * For the two output compare/input capture registers of each channel,
+    four registers are provided as buffer registers and are capable of
+    operating as comparison registers when buffering is not in use.
+  * In output compare operation, buffer switching can be at crests or
+    troughs, enabling the generation of laterally asymmetric PWM waveforms.
+  * Registers for setting up frame cycles in each channel (with capability
+    for generating interrupts at overflow or underflow)
+  * Generation of dead times in PWM operation.
+  * Synchronous starting, stopping and clearing counters for arbitrary
+    channels.
+  * Starting, stopping, clearing and up/down counters in response to input
+    level comparison.
+  * Starting, clearing, stopping and up/down counters in response to a
+    maximum of four external triggers.
+  * Output pin disable function by dead time error and detected
+    short-circuits between output pins.
+  * A/D converter start triggers can be generated (GPT32E0 to GPT32E3)
+  * Enables the noise filter for input capture and external trigger
+    operation.
+
+  The below pwm channels are supported.
+    pwm0  - GPT32E0.GTIOC0A channel
+    pwm1  - GPT32E0.GTIOC0B channel
+    pwm2  - GPT32E1.GTIOC1A channel
+    pwm3  - GPT32E1.GTIOC1B channel
+    pwm4  - GPT32E2.GTIOC2A channel
+    pwm5  - GPT32E2.GTIOC2B channel
+    pwm6  - GPT32E3.GTIOC3A channel
+    pwm7  - GPT32E3.GTIOC3B channel
+    pwm8  - GPT32E4.GTIOC4A channel
+    pwm9  - GPT32E4.GTIOC4B channel
+    pwm10 - GPT32E5.GTIOC5A channel
+    pwm11 - GPT32E5.GTIOC5B channel
+    pwm12 - GPT32E6.GTIOC6A channel
+    pwm13 - GPT32E6.GTIOC6B channel
+    pwm14 - GPT32E7.GTIOC7A channel
+    pwm15 - GPT32E7.GTIOC7B channel
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - renesas,r9a07g044-gpt  # RZ/G2{L,LC}
+          - renesas,r9a07g054-gpt  # RZ/V2L
+      - const: renesas,rzg2l-gpt
+
+  reg:
+    maxItems: 1
+
+  '#pwm-cells':
+    const: 3
+
+  interrupts:
+    items:
+      - description: GPT32E0.GTCCRA input capture/compare match
+      - description: GPT32E0.GTCCRB input capture/compare
+      - description: GPT32E0.GTCCRC compare match
+      - description: GPT32E0.GTCCRD compare match
+      - description: GPT32E0.GTCCRE compare match
+      - description: GPT32E0.GTCCRF compare match
+      - description: GPT32E0.GTADTRA compare match
+      - description: GPT32E0.GTADTRB compare match
+      - description: GPT32E0.GTCNT overflow/GTPR compare match
+      - description: GPT32E0.GTCNT underflow
+      - description: GPT32E1.GTCCRA input capture/compare match
+      - description: GPT32E1.GTCCRB input capture/compare
+      - description: GPT32E1.GTCCRC compare match
+      - description: GPT32E1.GTCCRD compare match
+      - description: GPT32E1.GTCCRE compare match
+      - description: GPT32E1.GTCCRF compare match
+      - description: GPT32E1.GTADTRA compare match
+      - description: GPT32E1.GTADTRB compare match
+      - description: GPT32E1.GTCNT overflow/GTPR compare match
+      - description: GPT32E1.GTCNT underflow
+      - description: GPT32E2.GTCCRA input capture/compare match
+      - description: GPT32E2.GTCCRB input capture/compare
+      - description: GPT32E2.GTCCRC compare match
+      - description: GPT32E2.GTCCRD compare match
+      - description: GPT32E2.GTCCRE compare match
+      - description: GPT32E2.GTCCRF compare match
+      - description: GPT32E2.GTADTRA compare match
+      - description: GPT32E2.GTADTRB compare match
+      - description: GPT32E2.GTCNT overflow/GTPR compare match
+      - description: GPT32E2.GTCNT underflow
+      - description: GPT32E3.GTCCRA input capture/compare match
+      - description: GPT32E3.GTCCRB input capture/compare
+      - description: GPT32E3.GTCCRC compare match
+      - description: GPT32E3.GTCCRD compare match
+      - description: GPT32E3.GTCCRE compare match
+      - description: GPT32E3.GTCCRF compare match
+      - description: GPT32E3.GTADTRA compare match
+      - description: GPT32E3.GTADTRB compare match
+      - description: GPT32E3.GTCNT overflow/GTPR compare match
+      - description: GPT32E3.GTCNT underflow
+      - description: GPT32E4.GTCCRA input capture/compare match
+      - description: GPT32E4.GTCCRB input capture/compare
+      - description: GPT32E4.GTCCRC compare match
+      - description: GPT32E4.GTCCRD compare match
+      - description: GPT32E4.GTCCRE compare match
+      - description: GPT32E4.GTCCRF compare match
+      - description: GPT32E4.GTADTRA compare match
+      - description: GPT32E4.GTADTRB compare match
+      - description: GPT32E4.GTCNT overflow/GTPR compare match
+      - description: GPT32E4.GTCNT underflow
+      - description: GPT32E5.GTCCRA input capture/compare match
+      - description: GPT32E5.GTCCRB input capture/compare
+      - description: GPT32E5.GTCCRC compare match
+      - description: GPT32E5.GTCCRD compare match
+      - description: GPT32E5.GTCCRE compare match
+      - description: GPT32E5.GTCCRF compare match
+      - description: GPT32E5.GTADTRA compare match
+      - description: GPT32E5.GTADTRB compare match
+      - description: GPT32E5.GTCNT overflow/GTPR compare match
+      - description: GPT32E5.GTCNT underflow
+      - description: GPT32E6.GTCCRA input capture/compare match
+      - description: GPT32E6.GTCCRB input capture/compare
+      - description: GPT32E6.GTCCRC compare match
+      - description: GPT32E6.GTCCRD compare match
+      - description: GPT32E6.GTCCRE compare match
+      - description: GPT32E6.GTCCRF compare match
+      - description: GPT32E6.GTADTRA compare match
+      - description: GPT32E6.GTADTRB compare match
+      - description: GPT32E6.GTCNT overflow/GTPR compare match
+      - description: GPT32E6.GTCNT underflow
+      - description: GPT32E7.GTCCRA input capture/compare match
+      - description: GPT32E7.GTCCRB input capture/compare
+      - description: GPT32E7.GTCCRC compare match
+      - description: GPT32E7.GTCCRD compare match
+      - description: GPT32E7.GTCCRE compare match
+      - description: GPT32E7.GTCCRF compare match
+      - description: GPT32E7.GTADTRA compare match
+      - description: GPT32E7.GTADTRB compare match
+      - description: GPT32E7.GTCNT overflow/GTPR compare match
+      - description: GPT32E7.GTCNT underflow
+
+  interrupt-names:
+    items:
+      - const: ccmpa0
+      - const: ccmpb0
+      - const: cmpc0
+      - const: cmpd0
+      - const: cmpe0
+      - const: cmpf0
+      - const: adtrga0
+      - const: adtrgb0
+      - const: ovf0
+      - const: unf0
+      - const: ccmpa1
+      - const: ccmpb1
+      - const: cmpc1
+      - const: cmpd1
+      - const: cmpe1
+      - const: cmpf1
+      - const: adtrga1
+      - const: adtrgb1
+      - const: ovf1
+      - const: unf1
+      - const: ccmpa2
+      - const: ccmpb2
+      - const: cmpc2
+      - const: cmpd2
+      - const: cmpe2
+      - const: cmpf2
+      - const: adtrga2
+      - const: adtrgb2
+      - const: ovf2
+      - const: unf2
+      - const: ccmpa3
+      - const: ccmpb3
+      - const: cmpc3
+      - const: cmpd3
+      - const: cmpe3
+      - const: cmpf3
+      - const: adtrga3
+      - const: adtrgb3
+      - const: ovf3
+      - const: unf3
+      - const: ccmpa4
+      - const: ccmpb4
+      - const: cmpc4
+      - const: cmpd4
+      - const: cmpe4
+      - const: cmpf4
+      - const: adtrga4
+      - const: adtrgb4
+      - const: ovf4
+      - const: unf4
+      - const: ccmpa5
+      - const: ccmpb5
+      - const: cmpc5
+      - const: cmpd5
+      - const: cmpe5
+      - const: cmpf5
+      - const: adtrga5
+      - const: adtrgb5
+      - const: ovf5
+      - const: unf5
+      - const: ccmpa6
+      - const: ccmpb6
+      - const: cmpc6
+      - const: cmpd6
+      - const: cmpe6
+      - const: cmpf6
+      - const: adtrga6
+      - const: adtrgb6
+      - const: ovf6
+      - const: unf6
+      - const: ccmpa7
+      - const: ccmpb7
+      - const: cmpc7
+      - const: cmpd7
+      - const: cmpe7
+      - const: cmpf7
+      - const: adtrga7
+      - const: adtrgb7
+      - const: ovf7
+      - const: unf7
+
+  clocks:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - clocks
+  - power-domains
+  - resets
+
+allOf:
+  - $ref: pwm.yaml#
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r9a07g044-cpg.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    gpt: pwm@10048000 {
+        compatible = "renesas,r9a07g044-gpt", "renesas,rzg2l-gpt";
+        reg = <0x10048000 0x800>;
+        interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 219 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 220 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 221 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 222 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 223 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 224 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 225 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 226 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 227 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 231 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 232 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 233 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 234 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 235 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 236 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 237 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 238 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 239 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 240 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 244 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 245 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 246 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 247 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 248 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 249 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 250 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 251 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 252 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 253 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 257 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 258 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 259 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 260 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 261 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 262 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 263 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 265 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 266 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 270 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 272 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 273 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 274 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 275 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 276 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 277 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 278 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 279 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 283 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 284 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 285 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 286 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 287 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 288 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 289 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 290 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 291 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 292 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 300 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 301 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 302 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 303 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 304 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 305 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 310 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 312 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 313 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 315 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 316 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 317 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
+        interrupt-names = "ccmpa0", "ccmpb0", "cmpc0", "cmpd0",
+                          "cmpe0", "cmpf0", "adtrga0", "adtrgb0",
+                          "ovf0", "unf0",
+                          "ccmpa1", "ccmpb1", "cmpc1", "cmpd1",
+                          "cmpe1", "cmpf1", "adtrga1", "adtrgb1",
+                          "ovf1", "unf1",
+                          "ccmpa2", "ccmpb2", "cmpc2", "cmpd2",
+                          "cmpe2", "cmpf2", "adtrga2", "adtrgb2",
+                          "ovf2", "unf2",
+                          "ccmpa3", "ccmpb3", "cmpc3", "cmpd3",
+                          "cmpe3", "cmpf3", "adtrga3", "adtrgb3",
+                          "ovf3", "unf3",
+                          "ccmpa4", "ccmpb4", "cmpc4", "cmpd4",
+                          "cmpe4", "cmpf4", "adtrga4", "adtrgb4",
+                          "ovf4", "unf4",
+                          "ccmpa5", "ccmpb5", "cmpc5", "cmpd5",
+                          "cmpe5", "cmpf5", "adtrga5", "adtrgb5",
+                          "ovf5", "unf5",
+                          "ccmpa6", "ccmpb6", "cmpc6", "cmpd6",
+                          "cmpe6", "cmpf6", "adtrga6", "adtrgb6",
+                          "ovf6", "unf6",
+                          "ccmpa7", "ccmpb7", "cmpc7", "cmpd7",
+                          "cmpe7", "cmpf7", "adtrga7", "adtrgb7",
+                          "ovf7", "unf7";
+        clocks = <&cpg CPG_MOD R9A07G044_GPT_PCLK>;
+        power-domains = <&cpg>;
+        resets = <&cpg R9A07G044_GPT_RST_C>;
+        #pwm-cells = <3>;
+    };
diff --git a/Bindings/pwm/via,vt8500-pwm.yaml b/Bindings/pwm/via,vt8500-pwm.yaml
new file mode 100644 (file)
index 0000000..d9146ad
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/via,vt8500-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: VIA/Wondermedia VT8500/WM8xxx series SoC PWM controller
+
+maintainers:
+  - Alexey Charkov <alchark@gmail.com>
+
+allOf:
+  - $ref: pwm.yaml#
+
+properties:
+  compatible:
+    items:
+      - const: via,vt8500-pwm
+
+  reg:
+    maxItems: 1
+
+  '#pwm-cells':
+    const: 3
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    pwm1: pwm@d8220000 {
+        compatible = "via,vt8500-pwm";
+        reg = <0xd8220000 0x1000>;
+        #pwm-cells = <3>;
+        clocks = <&clkpwm>;
+    };
diff --git a/Bindings/pwm/vt8500-pwm.txt b/Bindings/pwm/vt8500-pwm.txt
deleted file mode 100644 (file)
index 4fba93c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-VIA/Wondermedia VT8500/WM8xxx series SoC PWM controller
-
-Required properties:
-- compatible: should be "via,vt8500-pwm"
-- reg: physical base address and length of the controller's registers
-- #pwm-cells: should be 3. See pwm.yaml in this directory for a description of
-  the cells format. The only third cell flag supported by this binding is
-  PWM_POLARITY_INVERTED.
-- clocks: phandle to the PWM source clock
-
-Example:
-
-pwm1: pwm@d8220000 {
-       #pwm-cells = <3>;
-       compatible = "via,vt8500-pwm";
-       reg = <0xd8220000 0x1000>;
-       clocks = <&clkpwm>;
-};
diff --git a/Bindings/regulator/adi,adp5055-regulator.yaml b/Bindings/regulator/adi,adp5055-regulator.yaml
new file mode 100644 (file)
index 0000000..9c4ead4
--- /dev/null
@@ -0,0 +1,157 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/adi,adp5055-regulator.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Analog Devices ADP5055 Triple Buck Regulator
+
+maintainers:
+  - Alexis Czezar Torreno <alexisczezar.torreno@analog.com>
+
+description: |
+  The ADP5055 combines three high performance buck regulator. The device enables
+  direct connection to high input voltages up to 18 V with no preregulators.
+  https://www.analog.com/media/en/technical-documentation/data-sheets/adp5055.pdf
+
+properties:
+  compatible:
+    enum:
+      - adi,adp5055
+
+  reg:
+    enum:
+      - 0x70
+      - 0x71
+
+  adi,tset-us:
+    description:
+      Setting time used by the device. This is changed via soldering specific
+      resistor values on the CFG2 pin.
+    enum: [2600, 20800]
+    default: 2600
+
+  adi,ocp-blanking:
+    description:
+      If present, overcurrent protection (OCP) blanking for all regulator is on.
+    type: boolean
+
+  adi,delay-power-good:
+    description:
+      Configures delay timer of the power good (PWRGD) pin. Delay is based on
+      Tset which can be 2.6 ms or 20.8 ms.
+    type: boolean
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+patternProperties:
+  '^buck[0-2]$':
+    type: object
+    $ref: regulator.yaml#
+    unevaluatedProperties: false
+
+    properties:
+      enable-gpios:
+        maxItems: 1
+        description:
+          GPIO specifier to enable the GPIO control for each regulator. The
+          driver supports two modes of enable, hardware only (GPIOs) or software
+          only (Registers). Pure hardware enabling requires each regulator to
+          contain this property. If at least one regulator does not have this,
+          the driver automatically switches to software only mode.
+
+      adi,dvs-limit-upper-microvolt:
+        description:
+          Configure the allowable upper side limit of the voltage output of each
+          regulator in microvolt. Relative to the default Vref trimming value.
+          Vref = 600 mV. Voltages are in 12 mV steps, value is autoadjusted.
+          Vout_high = Vref_trim + dvs-limit-upper.
+        minimum: 12000
+        maximum: 192000
+        default: 192000
+
+      adi,dvs-limit-lower-microvolt:
+        description:
+          Configure the allowable lower side limit of the voltage output of each
+          regulator in microvolt. Relative to the default Vref trimming value.
+          Vref = 600 mV. Voltages are in 12 mV steps, value is autoadjusted.
+          Vout_low = Vref_trim + dvs-limit-lower.
+        minimum: -190500
+        maximum: -10500
+        default: -190500
+
+      adi,fast-transient:
+        description:
+          Configures the fast transient sensitivity for each regulator.
+          "none"    - No fast transient.
+          "3G_1.5%" - 1.5% window with 3*350uA/V
+          "5G_1.5%" - 1.5% window with 5*350uA/V
+          "5G_2.5%" - 2.5% window with 5*350uA/V
+        enum: [none, 3G_1.5%, 5G_1.5%, 5G_2.5%]
+        default: 5G_2.5%
+
+      adi,mask-power-good:
+        description:
+          If present, masks individual regulators PWRGD signal to the external
+          PWRGD hardware pin.
+        type: boolean
+
+    required:
+      - regulator-name
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        regulator@70 {
+            compatible = "adi,adp5055";
+            reg = <0x70>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            adi,tset-us = <2600>;
+            adi,ocp-blanking;
+            adi,delay-power-good;
+
+            buck0 {
+                regulator-name = "buck0";
+                enable-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
+                adi,dvs-limit-upper-microvolt = <192000>;
+                adi,dvs-limit-lower-microvolt = <(-190500)>;
+                adi,fast-transient = "5G_2.5%";
+                adi,mask-power-good;
+            };
+
+            buck1 {
+                regulator-name = "buck1";
+                enable-gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
+                adi,dvs-limit-upper-microvolt = <192000>;
+                adi,dvs-limit-lower-microvolt = <(-190500)>;
+                adi,fast-transient = "5G_2.5%";
+                adi,mask-power-good;
+            };
+
+            buck2 {
+                regulator-name = "buck2";
+                enable-gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
+                adi,dvs-limit-upper-microvolt = <192000>;
+                adi,dvs-limit-lower-microvolt = <(-190500)>;
+                adi,fast-transient = "5G_2.5%";
+                adi,mask-power-good;
+            };
+        };
+    };
diff --git a/Bindings/regulator/brcm,bcm59054.yaml b/Bindings/regulator/brcm,bcm59054.yaml
new file mode 100644 (file)
index 0000000..5b46d7f
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/brcm,bcm59054.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM59054 Power Management Unit regulators
+
+description: |
+  This is a part of device tree bindings for the BCM59054 power
+  management unit.
+
+  See Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml for
+  additional information and example.
+
+maintainers:
+  - Artur Weber <aweber.kernel@gmail.com>
+
+patternProperties:
+  "^(cam|sim|mmc)ldo[1-2]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(rf|sd|sdx|aud|mic|usb|vib|tcx)ldo$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(c|mm|v)sr$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(io|sd)sr[1-2]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^gpldo[1-3]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^lvldo[1-2]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+properties:
+  vbus:
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+additionalProperties: false
diff --git a/Bindings/regulator/brcm,bcm59056.yaml b/Bindings/regulator/brcm,bcm59056.yaml
new file mode 100644 (file)
index 0000000..7a5e363
--- /dev/null
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/brcm,bcm59056.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM59056 Power Management Unit regulators
+
+description: |
+  This is a part of device tree bindings for the BCM59056 power
+  management unit.
+
+  See Documentation/devicetree/bindings/mfd/brcm,bcm59056.yaml for
+  additional information and example.
+
+maintainers:
+  - Artur Weber <aweber.kernel@gmail.com>
+
+patternProperties:
+  "^(cam|sim|mmc)ldo[1-2]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(rf|sd|sdx|aud|mic|usb|vib)ldo$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(c|m|v)sr$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^(io|sd)sr[1-2]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+  "^gpldo[1-6]$":
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+properties:
+  vbus:
+    type: object
+    $ref: /schemas/regulator/regulator.yaml#
+    unevaluatedProperties: false
+
+additionalProperties: false
index 6327bb2f6ee080a178ff3e982768c5eb0595e771..698266c09e25359a516d969a0487cc94444b842d 100644 (file)
@@ -33,7 +33,7 @@ patternProperties:
 
   "^ldo-v(camio18|aud28|aux18|io18|io28|rf12|rf18|cn18|cn28|fe28)$":
     type: object
-    $ref: fixed-regulator.yaml#
+    $ref: regulator.yaml#
     unevaluatedProperties: false
     description:
       Properties for single fixed LDO regulator.
@@ -112,7 +112,6 @@ examples:
           regulator-enable-ramp-delay = <220>;
         };
         mt6357_vfe28_reg: ldo-vfe28 {
-          compatible = "regulator-fixed";
           regulator-name = "vfe28";
           regulator-min-microvolt = <2800000>;
           regulator-max-microvolt = <2800000>;
@@ -125,14 +124,12 @@ examples:
           regulator-enable-ramp-delay = <110>;
         };
         mt6357_vrf18_reg: ldo-vrf18 {
-          compatible = "regulator-fixed";
           regulator-name = "vrf18";
           regulator-min-microvolt = <1800000>;
           regulator-max-microvolt = <1800000>;
           regulator-enable-ramp-delay = <110>;
         };
         mt6357_vrf12_reg: ldo-vrf12 {
-          compatible = "regulator-fixed";
           regulator-name = "vrf12";
           regulator-min-microvolt = <1200000>;
           regulator-max-microvolt = <1200000>;
@@ -157,14 +154,12 @@ examples:
           regulator-enable-ramp-delay = <264>;
         };
         mt6357_vcn28_reg: ldo-vcn28 {
-          compatible = "regulator-fixed";
           regulator-name = "vcn28";
           regulator-min-microvolt = <2800000>;
           regulator-max-microvolt = <2800000>;
           regulator-enable-ramp-delay = <264>;
         };
         mt6357_vcn18_reg: ldo-vcn18 {
-          compatible = "regulator-fixed";
           regulator-name = "vcn18";
           regulator-min-microvolt = <1800000>;
           regulator-max-microvolt = <1800000>;
@@ -183,7 +178,6 @@ examples:
           regulator-enable-ramp-delay = <264>;
         };
         mt6357_vcamio_reg: ldo-vcamio18 {
-          compatible = "regulator-fixed";
           regulator-name = "vcamio";
           regulator-min-microvolt = <1800000>;
           regulator-max-microvolt = <1800000>;
@@ -212,28 +206,24 @@ examples:
           regulator-always-on;
         };
         mt6357_vaux18_reg: ldo-vaux18 {
-          compatible = "regulator-fixed";
           regulator-name = "vaux18";
           regulator-min-microvolt = <1800000>;
           regulator-max-microvolt = <1800000>;
           regulator-enable-ramp-delay = <264>;
         };
         mt6357_vaud28_reg: ldo-vaud28 {
-          compatible = "regulator-fixed";
           regulator-name = "vaud28";
           regulator-min-microvolt = <2800000>;
           regulator-max-microvolt = <2800000>;
           regulator-enable-ramp-delay = <264>;
         };
         mt6357_vio28_reg: ldo-vio28 {
-          compatible = "regulator-fixed";
           regulator-name = "vio28";
           regulator-min-microvolt = <2800000>;
           regulator-max-microvolt = <2800000>;
           regulator-enable-ramp-delay = <264>;
         };
         mt6357_vio18_reg: ldo-vio18 {
-          compatible = "regulator-fixed";
           regulator-name = "vio18";
           regulator-min-microvolt = <1800000>;
           regulator-max-microvolt = <1800000>;
diff --git a/Bindings/regulator/rohm,bd96802-regulator.yaml b/Bindings/regulator/rohm,bd96802-regulator.yaml
new file mode 100644 (file)
index 0000000..671eaf1
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/regulator/rohm,bd96802-regulator.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ROHM BD96802 Power Management Integrated Circuit regulators
+
+maintainers:
+  - Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
+
+description:
+  This module is part of the ROHM BD96802 MFD device. For more details
+  see Documentation/devicetree/bindings/mfd/rohm,bd96802-pmic.yaml.
+
+  The regulator controller is represented as a sub-node of the PMIC node
+  on the device tree.
+
+  Regulator nodes should be named to buck1 and buck2.
+
+patternProperties:
+  "^buck[1-2]$":
+    type: object
+    description:
+      Properties for single BUCK regulator.
+    $ref: regulator.yaml#
+
+    properties:
+      rohm,initial-voltage-microvolt:
+        description:
+          Initial voltage for regulator. Voltage can be tuned +/-150 mV from
+          this value. NOTE, This can be modified via I2C only when PMIC is in
+          STBY state.
+        minimum: 500000
+        maximum: 3300000
+
+      rohm,keep-on-stby:
+        description:
+          Keep the regulator powered when PMIC transitions to STBY state.
+        type: boolean
+
+    unevaluatedProperties: false
+
+additionalProperties: false
index 56ff6386534ddfa76cd42d84569ddfcf847e9178..5dcc2a32c080049ac6c486614a5bd4d71fd3ed62 100644 (file)
@@ -16,6 +16,9 @@ description:
 properties:
   compatible:
     enum:
+      - qcom,sc8180x-adsp-pas
+      - qcom,sc8180x-cdsp-pas
+      - qcom,sc8180x-slpi-pas
       - qcom,sm8150-adsp-pas
       - qcom,sm8150-cdsp-pas
       - qcom,sm8150-mpss-pas
index fd3423e6051bc8bb0e783479360a7b38e5fa1358..6d09823153fc8331f04d4657d9acba718533cce6 100644 (file)
@@ -15,16 +15,20 @@ description:
 
 properties:
   compatible:
-    enum:
-      - qcom,sar2130p-adsp-pas
-      - qcom,sm8350-adsp-pas
-      - qcom,sm8350-cdsp-pas
-      - qcom,sm8350-slpi-pas
-      - qcom,sm8350-mpss-pas
-      - qcom,sm8450-adsp-pas
-      - qcom,sm8450-cdsp-pas
-      - qcom,sm8450-mpss-pas
-      - qcom,sm8450-slpi-pas
+    oneOf:
+      - enum:
+          - qcom,sar2130p-adsp-pas
+          - qcom,sm8350-adsp-pas
+          - qcom,sm8350-cdsp-pas
+          - qcom,sm8350-slpi-pas
+          - qcom,sm8350-mpss-pas
+          - qcom,sm8450-adsp-pas
+          - qcom,sm8450-cdsp-pas
+          - qcom,sm8450-mpss-pas
+          - qcom,sm8450-slpi-pas
+      - items:
+          - const: qcom,sc8280xp-slpi-pas
+          - const: qcom,sm8350-slpi-pas
 
   reg:
     maxItems: 1
@@ -61,14 +65,15 @@ allOf:
   - if:
       properties:
         compatible:
-          enum:
-            - qcom,sar2130p-adsp-pas
-            - qcom,sm8350-adsp-pas
-            - qcom,sm8350-cdsp-pas
-            - qcom,sm8350-slpi-pas
-            - qcom,sm8450-adsp-pas
-            - qcom,sm8450-cdsp-pas
-            - qcom,sm8450-slpi-pas
+          contains:
+            enum:
+              - qcom,sar2130p-adsp-pas
+              - qcom,sm8350-adsp-pas
+              - qcom,sm8350-cdsp-pas
+              - qcom,sm8350-slpi-pas
+              - qcom,sm8450-adsp-pas
+              - qcom,sm8450-cdsp-pas
+              - qcom,sm8450-slpi-pas
     then:
       properties:
         interrupts:
@@ -102,12 +107,13 @@ allOf:
   - if:
       properties:
         compatible:
-          enum:
-            - qcom,sar2130p-adsp-pas
-            - qcom,sm8350-adsp-pas
-            - qcom,sm8350-slpi-pas
-            - qcom,sm8450-adsp-pas
-            - qcom,sm8450-slpi-pas
+          contains:
+            enum:
+              - qcom,sar2130p-adsp-pas
+              - qcom,sm8350-adsp-pas
+              - qcom,sm8350-slpi-pas
+              - qcom,sm8450-adsp-pas
+              - qcom,sm8450-slpi-pas
     then:
       properties:
         power-domains:
index 370af61d8f28033bfa25b690c786380ad8bfad97..843679c557e7d1a26f0ff7f11e32c72853a1ab8d 100644 (file)
@@ -139,6 +139,10 @@ properties:
       If defined, when remoteproc is probed, it loads the default firmware and
       starts the remote processor.
 
+  firmware-name:
+    maxItems: 1
+    description: Default name of the remote processor firmware.
+
 required:
   - compatible
   - reg
index 695ef38a7bb346c92b4cf428e7615d45682c940a..150e95c0d9bed74c7045942610a311114a257889 100644 (file)
@@ -12,14 +12,20 @@ maintainers:
 
 properties:
   compatible:
-    enum:
-      - amlogic,meson8b-reset # Reset Controller on Meson8b and compatible SoCs
-      - amlogic,meson-gxbb-reset # Reset Controller on GXBB and compatible SoCs
-      - amlogic,meson-axg-reset # Reset Controller on AXG and compatible SoCs
-      - amlogic,meson-a1-reset # Reset Controller on A1 and compatible SoCs
-      - amlogic,meson-s4-reset # Reset Controller on S4 and compatible SoCs
-      - amlogic,c3-reset # Reset Controller on C3 and compatible SoCs
-      - amlogic,t7-reset
+    oneOf:
+      - enum:
+          - amlogic,meson8b-reset # Reset Controller on Meson8b and compatible SoCs
+          - amlogic,meson-gxbb-reset # Reset Controller on GXBB and compatible SoCs
+          - amlogic,meson-axg-reset # Reset Controller on AXG and compatible SoCs
+          - amlogic,meson-a1-reset # Reset Controller on A1 and compatible SoCs
+          - amlogic,meson-s4-reset # Reset Controller on S4 and compatible SoCs
+          - amlogic,c3-reset # Reset Controller on C3 and compatible SoCs
+          - amlogic,t7-reset
+      - items:
+          - enum:
+              - amlogic,a4-reset
+              - amlogic,a5-reset
+          - const: amlogic,meson-s4-reset
 
   reg:
     maxItems: 1
index c3b33bbc731964ec5b7e4d4f5296258a45c27720..84c4801df8d9a97ef6ac9e4296780092b262629a 100644 (file)
@@ -23,6 +23,9 @@ properties:
               - atmel,sama5d3-rstc
               - microchip,sam9x60-rstc
               - microchip,sama7g5-rstc
+      - items:
+          - const: microchip,sama7d65-rstc
+          - const: microchip,sama7g5-rstc
       - items:
           - const: atmel,sama5d3-rstc
           - const: atmel,at91sam9g45-rstc
diff --git a/Bindings/reset/renesas,rzv2h-usb2phy-reset.yaml b/Bindings/reset/renesas,rzv2h-usb2phy-reset.yaml
new file mode 100644 (file)
index 0000000..c79f61c
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reset/renesas,rzv2h-usb2phy-reset.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas RZ/V2H(P) USB2PHY Port reset Control
+
+maintainers:
+  - Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
+
+description:
+  The RZ/V2H(P) USB2PHY Control mainly controls Port reset and power down of the
+  USB2.0 PHY.
+
+properties:
+  compatible:
+    const: renesas,r9a09g057-usb2phy-reset     # RZ/V2H(P)
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  '#reset-cells':
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - resets
+  - power-domains
+  - '#reset-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/renesas,r9a09g057-cpg.h>
+
+    reset-controller@15830000 {
+        compatible = "renesas,r9a09g057-usb2phy-reset";
+        reg = <0x15830000 0x10000>;
+        clocks = <&cpg CPG_MOD 0xb6>;
+        resets = <&cpg 0xaf>;
+        power-domains = <&cpg>;
+        #reset-cells = <0>;
+    };
index 76e1931f090829712cf60215f31f328e7fe878b0..1d1b84575960c3337d8c97818361f3e3eea90ee0 100644 (file)
@@ -11,7 +11,12 @@ maintainers:
 
 properties:
   compatible:
-    const: sophgo,sg2042-reset
+    oneOf:
+      - items:
+          - enum:
+              - sophgo,sg2044-reset
+          - const: sophgo,sg2042-reset
+      - const: sophgo,sg2042-reset
 
   reg:
     maxItems: 1
diff --git a/Bindings/reset/thead,th1520-reset.yaml b/Bindings/reset/thead,th1520-reset.yaml
new file mode 100644 (file)
index 0000000..f2e91d0
--- /dev/null
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/reset/thead,th1520-reset.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: T-HEAD TH1520 SoC Reset Controller
+
+description:
+  The T-HEAD TH1520 reset controller is a hardware block that asserts/deasserts
+  resets for SoC subsystems.
+
+maintainers:
+  - Michal Wilczynski <m.wilczynski@samsung.com>
+
+properties:
+  compatible:
+    enum:
+      - thead,th1520-reset
+
+  reg:
+    maxItems: 1
+
+  "#reset-cells":
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - "#reset-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    soc {
+      #address-cells = <2>;
+      #size-cells = <2>;
+      rst: reset-controller@ffef528000 {
+        compatible = "thead,th1520-reset";
+        reg = <0xff 0xef528000 0x0 0x1000>;
+        #reset-cells = <1>;
+      };
+    };
index bcab59e0cc2e1d90e1bbc939422fbe1d8f3643e8..ede6a58ccf5347d92785dc085a011052c1aade14 100644 (file)
@@ -662,6 +662,31 @@ properties:
             Registers in the AX45MP datasheet.
             https://www.andestech.com/wp-content/uploads/AX45MP-1C-Rev.-5.0.0-Datasheet.pdf
 
+        # SiFive
+        - const: xsfvqmaccdod
+          description:
+            SiFive Int8 Matrix Multiplication Extensions Specification.
+            See more details in
+            https://www.sifive.com/document-file/sifive-int8-matrix-multiplication-extensions-specification
+
+        - const: xsfvqmaccqoq
+          description:
+            SiFive Int8 Matrix Multiplication Extensions Specification.
+            See more details in
+            https://www.sifive.com/document-file/sifive-int8-matrix-multiplication-extensions-specification
+
+        - const: xsfvfnrclipxfqf
+          description:
+            SiFive FP32-to-int8 Ranged Clip Instructions Extensions Specification.
+            See more details in
+            https://www.sifive.com/document-file/fp32-to-int8-ranged-clip-instructions
+
+        - const: xsfvfwmaccqqq
+          description:
+            SiFive Matrix Multiply Accumulate Instruction Extensions Specification.
+            See more details in
+            https://www.sifive.com/document-file/matrix-multiply-accumulate-instruction
+
         # T-HEAD
         - const: xtheadvector
           description:
index a14cb10ff3f0745acad72e904bbbc660210095c7..b4c4d7a7d7addd5011ac033119c333d5dcab6f5e 100644 (file)
@@ -35,6 +35,10 @@ properties:
           - enum:
               - milkv,pioneer
           - const: sophgo,sg2042
+      - items:
+          - enum:
+              - sophgo,srd3-10
+          - const: sophgo,sg2044
 
 additionalProperties: true
 
index ca71b400bcaee4ad9d9c96102fd5940233c2c70f..fcc5be80142dfae1952652907a5fafe8504e36c0 100644 (file)
@@ -4,9 +4,9 @@
 $id: http://devicetree.org/schemas/rng/rockchip,rk3588-rng.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Rockchip RK3588 TRNG
+title: Rockchip RK3576/RK3588 TRNG
 
-description: True Random Number Generator on Rockchip RK3588 SoC
+description: True Random Number Generator on Rockchip RK3576/RK3588 SoCs
 
 maintainers:
   - Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
@@ -14,6 +14,7 @@ maintainers:
 properties:
   compatible:
     enum:
+      - rockchip,rk3576-rng
       - rockchip,rk3588-rng
 
   reg:
index c8bb2eef442dd6a77f8ac8a167ec8cd08a1bfa64..7c5b13caa40b4e9e58589489e8b94936bdb60be0 100644 (file)
@@ -23,7 +23,9 @@ properties:
           - microchip,sam9x60-rtc
           - microchip,sama7g5-rtc
       - items:
-          - const: microchip,sam9x7-rtc
+          - enum:
+              - microchip,sam9x7-rtc
+              - microchip,sama7d65-rtc
           - const: microchip,sam9x60-rtc
 
   reg:
index a7f6c1d1a08ab910c4295385de68dfcb010e160d..9c9b981fe38badb005b14a59dd931689ee079198 100644 (file)
@@ -22,6 +22,7 @@ properties:
           - enum:
               - microchip,sam9x60-rtt
               - microchip,sam9x7-rtt
+              - microchip,sama7d65-rtt
           - const: atmel,at91sam9260-rtt
       - items:
           - const: microchip,sama7g5-rtt
diff --git a/Bindings/rtc/nxp,s32g-rtc.yaml b/Bindings/rtc/nxp,s32g-rtc.yaml
new file mode 100644 (file)
index 0000000..40fd2fa
--- /dev/null
@@ -0,0 +1,72 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/rtc/nxp,s32g-rtc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP S32G2/S32G3 Real Time Clock (RTC)
+
+maintainers:
+  - Bogdan Hamciuc <bogdan.hamciuc@nxp.com>
+  - Ciprian Marian Costea <ciprianmarian.costea@nxp.com>
+
+description:
+  RTC hardware module present on S32G2/S32G3 SoCs is used as a wakeup source.
+  It is not kept alive during system reset and it is not battery-powered.
+
+allOf:
+  - $ref: rtc.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - enum:
+          - nxp,s32g2-rtc
+      - items:
+          - const: nxp,s32g3-rtc
+          - const: nxp,s32g2-rtc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: ipg clock drives the access to the RTC iomapped registers
+      - description: Clock source for the RTC module. Can be selected between
+          4 different clock sources using an integrated hardware mux.
+          On S32G2/S32G3 SoCs, 'source0' is the SIRC clock (~32KHz) and it is
+          available during standby and runtime. 'source1' is reserved and cannot
+          be used. 'source2' is the FIRC clock and it is only available during
+          runtime providing a better resolution (~48MHz). 'source3' is an external
+          RTC clock source which can be additionally added in hardware.
+
+  clock-names:
+    items:
+      - const: ipg
+      - enum: [ source0, source1, source2, source3 ]
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    rtc@40060000 {
+        compatible = "nxp,s32g3-rtc",
+                     "nxp,s32g2-rtc";
+        reg = <0x40060000 0x1000>;
+        interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clks 54>, <&clks 55>;
+        clock-names = "ipg", "source0";
+    };
index 68ef3208c8869c08a5f26306bc9cab6fa111c242..7497dc3ac5b20fe2fc44b851ee11eb1646de2663 100644 (file)
@@ -55,6 +55,12 @@ properties:
     description:
       RTC alarm is not owned by the OS
 
+  qcom,uefi-rtc-info:
+    type: boolean
+    description:
+      RTC offset is stored as a four-byte GPS time offset in a 12-byte UEFI
+      variable 882f8c2b-9646-435f-8de5-f208ff80c1bd-RTCInfo
+
   wakeup-source: true
 
 required:
index f6e0c613af678955589f133068fbbff778519b46..f6fdcc7090b6348415a6a443036e36a976bd9733 100644 (file)
@@ -33,10 +33,14 @@ properties:
       - const: pps
 
   clocks:
-    maxItems: 1
+    minItems: 1
+    maxItems: 2
 
   clock-names:
-    const: hclk
+    minItems: 1
+    items:
+      - const: hclk
+      - const: xtal
 
   power-domains:
     maxItems: 1
index dc0d52920575ff851a24e56b808e50ee3a14743b..c6bc27709bf726cc21c9c834dcc1124be34654dd 100644 (file)
@@ -45,7 +45,7 @@ allOf:
                   - ns16550
                   - ns16550a
     then:
-      anyOf:
+      oneOf:
         - required: [ clock-frequency ]
         - required: [ clocks ]
 
@@ -135,7 +135,16 @@ properties:
   clock-frequency: true
 
   clocks:
-    maxItems: 1
+    minItems: 1
+    items:
+      - description: The core function clock
+      - description: An optional bus clock
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: core
+      - const: bus
 
   resets:
     maxItems: 1
@@ -224,6 +233,25 @@ required:
   - reg
   - interrupts
 
+if:
+  properties:
+    compatible:
+      contains:
+        const: spacemit,k1-uart
+then:
+  required: [clock-names]
+  properties:
+    clocks:
+      minItems: 2
+    clock-names:
+      minItems: 2
+else:
+  properties:
+    clocks:
+      maxItems: 1
+    clock-names:
+      maxItems: 1
+
 unevaluatedProperties: false
 
 examples:
index 4b78de6b46a2079faeeb158d16a0ec3b2362bcaa..1859f71297ff297141e5cd455574fa9ccd9dd11c 100644 (file)
@@ -64,14 +64,7 @@ properties:
   clock-names:
     const: fclk
 
-  rts-gpios: true
-  cts-gpios: true
-  dtr-gpios: true
-  dsr-gpios: true
-  rng-gpios: true
-  dcd-gpios: true
   rs485-rts-active-high: true
-  rts-gpio: true
   power-domains: true
   clock-frequency: true
   current-speed: true
diff --git a/Bindings/serial/altera_jtaguart.txt b/Bindings/serial/altera_jtaguart.txt
deleted file mode 100644 (file)
index 55a9010..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-Altera JTAG UART
-
-Required properties:
-- compatible : should be "ALTR,juart-1.0" <DEPRECATED>
-- compatible : should be "altr,juart-1.0"
diff --git a/Bindings/serial/altera_uart.txt b/Bindings/serial/altera_uart.txt
deleted file mode 100644 (file)
index 81bf7ff..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Altera UART
-
-Required properties:
-- compatible : should be "ALTR,uart-1.0" <DEPRECATED>
-- compatible : should be "altr,uart-1.0"
-
-Optional properties:
-- clock-frequency : frequency of the clock input to the UART
diff --git a/Bindings/serial/altr,juart-1.0.yaml b/Bindings/serial/altr,juart-1.0.yaml
new file mode 100644 (file)
index 0000000..02e20fa
--- /dev/null
@@ -0,0 +1,19 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/altr,juart-1.0.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Altera JTAG UART
+
+maintainers:
+  - Dinh Nguyen <dinguyen@kernel.org>
+
+properties:
+  compatible:
+    const: altr,juart-1.0
+
+required:
+  - compatible
+
+additionalProperties: false
diff --git a/Bindings/serial/altr,uart-1.0.yaml b/Bindings/serial/altr,uart-1.0.yaml
new file mode 100644 (file)
index 0000000..72d4972
--- /dev/null
@@ -0,0 +1,25 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/altr,uart-1.0.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Altera UART
+
+maintainers:
+  - Dinh Nguyen <dinguyen@kernel.org>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: altr,uart-1.0
+
+  clock-frequency:
+    description: Frequency of the clock input to the UART.
+
+required:
+  - compatible
+
+unevaluatedProperties: false
index 0565fb7649c5b3f150c5066061f816b36ee023df..d8ad1bb6172da200b280c3db7b11eeada2b5e8c2 100644 (file)
@@ -56,6 +56,9 @@ properties:
         items:
           - enum:
               - amlogic,a4-uart
+              - amlogic,s6-uart
+              - amlogic,s7-uart
+              - amlogic,s7d-uart
               - amlogic,t7-uart
           - const: amlogic,meson-s4-uart
 
diff --git a/Bindings/serial/arc-uart.txt b/Bindings/serial/arc-uart.txt
deleted file mode 100644 (file)
index 256cc15..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-* Synopsys ARC UART : Non standard UART used in some of the ARC FPGA boards
-
-Required properties:
-- compatible           : "snps,arc-uart"
-- reg                  : offset and length of the register set for the device.
-- interrupts           : device interrupt
-- clock-frequency      : the input clock frequency for the UART
-- current-speed                : baud rate for UART
-
-e.g.
-
-arcuart0: serial@c0fc1000 {
-       compatible = "snps,arc-uart";
-       reg = <0xc0fc1000 0x100>;
-       interrupts = <5>;
-       clock-frequency = <80000000>;
-       current-speed = <115200>;
-};
-
-Note: Each port should have an alias correctly numbered in "aliases" node.
-
-e.g.
-aliases {
-       serial0 = &arcuart0;
-};
diff --git a/Bindings/serial/arm,mps2-uart.txt b/Bindings/serial/arm,mps2-uart.txt
deleted file mode 100644 (file)
index 128cc6a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-ARM MPS2 UART
-
-Required properties:
-- compatible   : Should be "arm,mps2-uart"
-- reg          : Address and length of the register set
-- interrupts   : Reference to the UART RX, TX and overrun interrupts
-
-Required clocking property:
-- clocks         : The input clock of the UART
-
-
-Examples:
-
-uart0: serial@40004000 {
-       compatible = "arm,mps2-uart";
-       reg = <0x40004000 0x1000>;
-       interrupts = <0 1 12>;
-       clocks = <&sysclk>;
-};
diff --git a/Bindings/serial/arm,mps2-uart.yaml b/Bindings/serial/arm,mps2-uart.yaml
new file mode 100644 (file)
index 0000000..4a8df07
--- /dev/null
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/arm,mps2-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Arm MPS2 UART
+
+maintainers:
+  - Vladimir Murzin <vladimir.murzin@arm.com>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: arm,mps2-uart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: RX interrupt
+      - description: TX interrupt
+      - description: Overrun interrupt
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    serial@40004000 {
+        compatible = "arm,mps2-uart";
+        reg = <0x40004000 0x1000>;
+        interrupts = <0>, <1>, <12>;
+        clocks = <&sysclk>;
+    };
diff --git a/Bindings/serial/arm,sbsa-uart.yaml b/Bindings/serial/arm,sbsa-uart.yaml
new file mode 100644 (file)
index 0000000..68e3fd6
--- /dev/null
@@ -0,0 +1,38 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+---
+$id: http://devicetree.org/schemas/serial/arm,sbsa-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM SBSA UART
+
+maintainers:
+  - Andre Przywara <andre.przywara@arm.com>
+
+description:
+  This UART uses a subset of the PL011 registers and consequently lives in the
+  PL011 driver. It's baudrate and other communication parameters cannot be
+  adjusted at runtime, so it lacks a clock specifier here.
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: arm,sbsa-uart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  current-speed:
+    description: fixed baud rate set by the firmware
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - current-speed
+
+unevaluatedProperties: false
diff --git a/Bindings/serial/arm_sbsa_uart.txt b/Bindings/serial/arm_sbsa_uart.txt
deleted file mode 100644 (file)
index 4163e7e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-* ARM SBSA defined generic UART
-This UART uses a subset of the PL011 registers and consequently lives
-in the PL011 driver. It's baudrate and other communication parameters
-cannot be adjusted at runtime, so it lacks a clock specifier here.
-
-Required properties:
-- compatible: must be "arm,sbsa-uart"
-- reg: exactly one register range
-- interrupts: exactly one interrupt specifier
-- current-speed: the (fixed) baud rate set by the firmware
index f466c38518c4178367ed324de4056374da9e8723..087a8926f8b4ed366238f7bcde2d6a6222efd628 100644 (file)
@@ -26,6 +26,7 @@ properties:
           - enum:
               - microchip,sam9x60-usart
               - microchip,sam9x7-usart
+              - microchip,sama7d65-usart
           - const: atmel,at91sam9260-usart
       - items:
           - const: microchip,sam9x60-dbgu
diff --git a/Bindings/serial/cirrus,clps711x-uart.txt b/Bindings/serial/cirrus,clps711x-uart.txt
deleted file mode 100644 (file)
index 07013fa..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-* Cirrus Logic CLPS711X Universal Asynchronous Receiver/Transmitter (UART)
-
-Required properties:
-- compatible: Should be "cirrus,ep7209-uart".
-- reg: Address and length of the register set for the device.
-- interrupts: Should contain UART TX and RX interrupt.
-- clocks: Should contain UART core clock number.
-- syscon: Phandle to SYSCON node, which contain UART control bits.
-
-Optional properties:
-- {rts,cts,dtr,dsr,rng,dcd}-gpios: specify a GPIO for RTS/CTS/DTR/DSR/RI/DCD
-  line respectively.
-
-Note: Each UART port should have an alias correctly numbered
-in "aliases" node.
-
-Example:
-       aliases {
-               serial0 = &uart1;
-       };
-
-       uart1: uart@80000480 {
-               compatible = "cirrus,ep7312-uart","cirrus,ep7209-uart";
-               reg = <0x80000480 0x80>;
-               interrupts = <12 13>;
-               clocks = <&clks 11>;
-               syscon = <&syscon1>;
-               cts-gpios = <&sysgpio 0 GPIO_ACTIVE_LOW>;
-               dsr-gpios = <&sysgpio 1 GPIO_ACTIVE_LOW>;
-               dcd-gpios = <&sysgpio 2 GPIO_ACTIVE_LOW>;
-       };
diff --git a/Bindings/serial/cirrus,ep7209-uart.yaml b/Bindings/serial/cirrus,ep7209-uart.yaml
new file mode 100644 (file)
index 0000000..c9976e8
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/cirrus,ep7209-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cirrus Logic CLPS711X Universal Asynchronous Receiver/Transmitter (UART)
+
+maintainers:
+  - Alexander Shiyan <shc_work@mail.ru>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: cirrus,ep7209-uart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: UART TX interrupt
+      - description: UART RX interrupt
+
+  clocks:
+    maxItems: 1
+
+  syscon:
+    description: Phandle to SYSCON node, which contains UART control bits.
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - syscon
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    serial@80000480 {
+        compatible = "cirrus,ep7209-uart";
+        reg = <0x80000480 0x80>;
+        interrupts = <12>, <13>;
+        clocks = <&clks 11>;
+        syscon = <&syscon1>;
+        cts-gpios = <&sysgpio 0 GPIO_ACTIVE_LOW>;
+        dsr-gpios = <&sysgpio 1 GPIO_ACTIVE_LOW>;
+        dcd-gpios = <&sysgpio 2 GPIO_ACTIVE_LOW>;
+    };
diff --git a/Bindings/serial/cnxt,cx92755-usart.yaml b/Bindings/serial/cnxt,cx92755-usart.yaml
new file mode 100644 (file)
index 0000000..7202294
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/cnxt,cx92755-usart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Conexant Digicolor USART
+
+maintainers:
+  - Baruch Siach <baruch@tkos.co.il>
+
+description: >
+  Note: this binding is only applicable for using the USART peripheral as UART.
+  USART also support synchronous serial protocols like SPI and I2S.
+  Use the binding that matches the wiring of your system.
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: cnxt,cx92755-usart
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    serial@f0000740 {
+        compatible = "cnxt,cx92755-usart";
+        reg = <0xf0000740 0x20>;
+        clocks = <&main_clk>;
+        interrupts = <44>;
+    };
diff --git a/Bindings/serial/digicolor-usart.txt b/Bindings/serial/digicolor-usart.txt
deleted file mode 100644 (file)
index 2d3ede6..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Binding for Conexant Digicolor USART
-
-Note: this binding is only applicable for using the USART peripheral as
-UART. USART also support synchronous serial protocols like SPI and I2S. Use
-the binding that matches the wiring of your system.
-
-Required properties:
-- compatible : should be "cnxt,cx92755-usart".
-- reg: Should contain USART controller registers location and length.
-- interrupts: Should contain a single USART controller interrupt.
-- clocks: Must contain phandles to the USART clock
-  See ../clocks/clock-bindings.txt for details.
-
-Note: Each UART port should have an alias correctly numbered
-in "aliases" node.
-
-Example:
-       aliases {
-               serial0 = &uart0;
-       };
-
-       uart0: uart@f0000740 {
-               compatible = "cnxt,cx92755-usart";
-               reg = <0xf0000740 0x20>;
-               clocks = <&main_clk>;
-               interrupts = <44>;
-       };
diff --git a/Bindings/serial/lantiq,asc.yaml b/Bindings/serial/lantiq,asc.yaml
new file mode 100644 (file)
index 0000000..96e8c79
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/lantiq,asc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Lantiq SoC ASC serial controller
+
+maintainers:
+  - John Crispin <john@phrozen.org>
+  - Songjun Wu <songjun.wu@linux.intel.com>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: lantiq,asc
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: TX interrupt
+      - description: RX interrupt
+      - description: Error interrupt
+
+  clocks:
+    items:
+      - description: Frequency clock
+      - description: Gate clock
+
+  clock-names:
+    items:
+      - const: freq
+      - const: asc
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/mips-gic.h>
+
+    serial@16600000 {
+        compatible = "lantiq,asc";
+        reg = <0x16600000 0x100000>;
+        interrupts = <GIC_SHARED 103 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SHARED 105 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SHARED 106 IRQ_TYPE_LEVEL_HIGH>;
+    };
diff --git a/Bindings/serial/lantiq_asc.txt b/Bindings/serial/lantiq_asc.txt
deleted file mode 100644 (file)
index 40e81a5..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-Lantiq SoC ASC serial controller
-
-Required properties:
-- compatible : Should be "lantiq,asc"
-- reg : Address and length of the register set for the device
-- interrupts: the 3 (tx rx err) interrupt numbers. The interrupt specifier
-  depends on the interrupt-parent interrupt controller.
-
-Optional properties:
-- clocks: Should contain frequency clock and gate clock
-- clock-names: Should be "freq" and "asc"
-
-Example:
-
-asc0: serial@16600000 {
-       compatible = "lantiq,asc";
-       reg = <0x16600000 0x100000>;
-       interrupt-parent = <&gic>;
-       interrupts = <GIC_SHARED 103 IRQ_TYPE_LEVEL_HIGH>,
-               <GIC_SHARED 105 IRQ_TYPE_LEVEL_HIGH>,
-               <GIC_SHARED 106 IRQ_TYPE_LEVEL_HIGH>;
-       clocks = <&cgu CLK_SSX4>, <&cgu GCLK_UART>;
-       clock-names = "freq", "asc";
-};
-
-asc1: serial@e100c00 {
-       compatible = "lantiq,asc";
-       reg = <0xE100C00 0x400>;
-       interrupt-parent = <&icu0>;
-       interrupts = <112 113 114>;
-};
diff --git a/Bindings/serial/marvell,armada-3700-uart.yaml b/Bindings/serial/marvell,armada-3700-uart.yaml
new file mode 100644 (file)
index 0000000..6c7fa3d
--- /dev/null
@@ -0,0 +1,102 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/marvell,armada-3700-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada-3700 UART
+
+maintainers:
+  - Pali Rohár <pali@kernel.org>
+
+description:
+  Marvell UART is a non standard UART used in some of Marvell EBU SoCs (e.g.
+  Armada-3700).
+
+properties:
+  compatible:
+    enum:
+      - marvell,armada-3700-uart
+      - marvell,armada-3700-uart-ext
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+    description:
+      UART reference clock used to derive the baud rate. If absent, only fixed
+      baud rate from the bootloader is supported.
+
+  interrupts:
+    minItems: 2
+    items:
+      - description: UART sum interrupt
+      - description: UART TX interrupt
+      - description: UART RX interrupt
+
+  interrupt-names:
+    minItems: 2
+    maxItems: 3
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+
+unevaluatedProperties: false
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+  - if:
+      properties:
+        compatible:
+          const: marvell,armada-3700-uart-ext
+    then:
+      properties:
+        interrupts:
+          maxItems: 2
+
+        interrupt-names:
+          items:
+            - const: uart-tx
+            - const: uart-rx
+    else:
+      properties:
+        interrupts:
+          minItems: 3
+
+        interrupt-names:
+          items:
+            - const: uart-sum
+            - const: uart-tx
+            - const: uart-rx
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    serial@12000 {
+        compatible = "marvell,armada-3700-uart";
+        reg = <0x12000 0x18>;
+        clocks = <&uartclk 0>;
+        interrupts =
+            <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
+            <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
+            <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "uart-sum", "uart-tx", "uart-rx";
+    };
+
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    serial@12200 {
+        compatible = "marvell,armada-3700-uart-ext";
+        reg = <0x12200 0x30>;
+        clocks = <&uartclk 1>;
+        interrupts =
+            <GIC_SPI 30 IRQ_TYPE_EDGE_RISING>,
+            <GIC_SPI 31 IRQ_TYPE_EDGE_RISING>;
+        interrupt-names = "uart-tx", "uart-rx";
+    };
index 1b02f0b197ff46e3530372d1d9303210cca9c2d5..c55d9a0efa190ef3be23be40a941904a221f2c2d 100644 (file)
@@ -33,6 +33,7 @@ properties:
               - mediatek,mt6779-uart
               - mediatek,mt6795-uart
               - mediatek,mt6797-uart
+              - mediatek,mt6893-uart
               - mediatek,mt7622-uart
               - mediatek,mt7623-uart
               - mediatek,mt7629-uart
diff --git a/Bindings/serial/microchip,pic32-uart.txt b/Bindings/serial/microchip,pic32-uart.txt
deleted file mode 100644 (file)
index c8dd440..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-* Microchip Universal Asynchronous Receiver Transmitter (UART)
-
-Required properties:
-- compatible: Should be "microchip,pic32mzda-uart"
-- reg: Should contain registers location and length
-- interrupts: Should contain interrupt
-- clocks: Phandle to the clock.
-          See: Documentation/devicetree/bindings/clock/clock-bindings.txt
-- pinctrl-names: A pinctrl state names "default" must be defined.
-- pinctrl-0: Phandle referencing pin configuration of the UART peripheral.
-             See: Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
-
-Optional properties:
-- cts-gpios: CTS pin for UART
-
-Example:
-       uart1: serial@1f822000 {
-               compatible = "microchip,pic32mzda-uart";
-               reg = <0x1f822000 0x50>;
-               interrupts = <112 IRQ_TYPE_LEVEL_HIGH>,
-                       <113 IRQ_TYPE_LEVEL_HIGH>,
-                       <114 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&rootclk PB2CLK>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_uart1
-                               &pinctrl_uart1_cts
-                               &pinctrl_uart1_rts>;
-               cts-gpios = <&gpio1 15 0>;
-       };
diff --git a/Bindings/serial/microchip,pic32mzda-uart.yaml b/Bindings/serial/microchip,pic32mzda-uart.yaml
new file mode 100644 (file)
index 0000000..b176fd5
--- /dev/null
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/microchip,pic32mzda-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Microchip PIC32 UART
+
+maintainers:
+  - Andrei Pistirica <andrei.pistirica@microchip.com>
+  - Purna Chandra Mandal <purna.mandal@microchip.com>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: microchip,pic32mzda-uart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Fault
+      - description: RX
+      - description: TX
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/clock/microchip,pic32-clock.h>
+
+    serial@1f822000 {
+        compatible = "microchip,pic32mzda-uart";
+        reg = <0x1f822000 0x50>;
+        interrupts = <112 IRQ_TYPE_LEVEL_HIGH>,
+                    <113 IRQ_TYPE_LEVEL_HIGH>,
+                    <114 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&rootclk PB2CLK>;
+        cts-gpios = <&gpio1 15 0>;
+    };
diff --git a/Bindings/serial/milbeaut-uart.txt b/Bindings/serial/milbeaut-uart.txt
deleted file mode 100644 (file)
index 3d2fb1a..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Socionext Milbeaut UART controller
-
-Required properties:
-- compatible: should be "socionext,milbeaut-usio-uart".
-- reg: offset and length of the register set for the device.
-- interrupts: two interrupts specifier.
-- interrupt-names: should be "rx", "tx".
-- clocks: phandle to the input clock.
-
-Optional properties:
-- auto-flow-control: flow control enable.
-
-Example:
-       usio1: usio_uart@1e700010 {
-               compatible = "socionext,milbeaut-usio-uart";
-               reg = <0x1e700010 0x10>;
-               interrupts = <0 141 0x4>, <0 149 0x4>;
-               interrupt-names = "rx", "tx";
-               clocks = <&clk 2>;
-               auto-flow-control;
-       };
diff --git a/Bindings/serial/mvebu-uart.txt b/Bindings/serial/mvebu-uart.txt
deleted file mode 100644 (file)
index a062bbc..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-* Marvell UART : Non standard UART used in some of Marvell EBU SoCs
-                 e.g., Armada-3700.
-
-Required properties:
-- compatible:
-    - "marvell,armada-3700-uart" for the standard variant of the UART
-      (32 bytes FIFO, no DMA, level interrupts, 8-bit access to the
-      FIFO), called also UART1.
-    - "marvell,armada-3700-uart-ext" for the extended variant of the
-      UART (128 bytes FIFO, DMA, front interrupts, 8-bit or 32-bit
-      accesses to the FIFO), called also UART2.
-- reg: offset and length of the register set for the device.
-- clocks: UART reference clock used to derive the baudrate. If no clock
-      is provided (possible only with the "marvell,armada-3700-uart"
-      compatible string for backward compatibility), it will only work
-      if the baudrate was initialized by the bootloader and no baudrate
-      change will then be possible. When provided it should be UART1-clk
-      for standard variant of UART and UART2-clk for extended variant
-      of UART. TBG clock (with UART TBG divisors d1=d2=1) or xtal clock
-      should not be used and are supported only for backward compatibility.
-- interrupts:
-    - Must contain three elements for the standard variant of the IP
-      (marvell,armada-3700-uart): "uart-sum", "uart-tx" and "uart-rx",
-      respectively the UART sum interrupt, the UART TX interrupt and
-      UART RX interrupt. A corresponding interrupt-names property must
-      be defined.
-    - Must contain two elements for the extended variant of the IP
-      (marvell,armada-3700-uart-ext): "uart-tx" and "uart-rx",
-      respectively the UART TX interrupt and the UART RX interrupt. A
-      corresponding interrupt-names property must be defined.
-    - For backward compatibility reasons, a single element interrupts
-      property is also supported for the standard variant of the IP,
-      containing only the UART sum interrupt. This form is deprecated
-      and should no longer be used.
-
-Example:
-       uart0: serial@12000 {
-               compatible = "marvell,armada-3700-uart";
-               reg = <0x12000 0x18>;
-               clocks = <&uartclk 0>;
-               interrupts =
-               <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
-               <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
-               <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
-               interrupt-names = "uart-sum", "uart-tx", "uart-rx";
-       };
-
-       uart1: serial@12200 {
-               compatible = "marvell,armada-3700-uart-ext";
-               reg = <0x12200 0x30>;
-               clocks = <&uartclk 1>;
-               interrupts =
-               <GIC_SPI 30 IRQ_TYPE_EDGE_RISING>,
-               <GIC_SPI 31 IRQ_TYPE_EDGE_RISING>;
-               interrupt-names = "uart-tx", "uart-rx";
-       };
diff --git a/Bindings/serial/nxp,lpc3220-hsuart.yaml b/Bindings/serial/nxp,lpc3220-hsuart.yaml
new file mode 100644 (file)
index 0000000..ffa2ea5
--- /dev/null
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/nxp,lpc3220-hsuart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP LPC32xx SoC High Speed UART
+
+maintainers:
+  - Vladimir Zapolskiy <vz@mleia.com>
+  - Piotr Wojtaszczyk <piotr.wojtaszczyk@timesys.com>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: nxp,lpc3220-hsuart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    serial@40014000 {
+        compatible = "nxp,lpc3220-hsuart";
+        reg = <0x40014000 0x1000>;
+        interrupts = <26 0>;
+    };
diff --git a/Bindings/serial/nxp-lpc32xx-hsuart.txt b/Bindings/serial/nxp-lpc32xx-hsuart.txt
deleted file mode 100644 (file)
index 0d439df..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-* NXP LPC32xx SoC High Speed UART
-
-Required properties:
-- compatible: Should be "nxp,lpc3220-hsuart"
-- reg: Should contain registers location and length
-- interrupts: Should contain interrupt
-
-Example:
-
-       uart1: serial@40014000 {
-               compatible = "nxp,lpc3220-hsuart";
-               reg = <0x40014000 0x1000>;
-               interrupts = <26 0>;
-       };
diff --git a/Bindings/serial/renesas,rsci.yaml b/Bindings/serial/renesas,rsci.yaml
new file mode 100644 (file)
index 0000000..ea879db
--- /dev/null
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/renesas,rsci.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas RSCI Serial Communication Interface
+
+maintainers:
+  - Geert Uytterhoeven <geert+renesas@glider.be>
+  - Thierry Bultel <thierry.bultel.yh@bp.renesas.com>
+
+allOf:
+  - $ref: serial.yaml#
+
+properties:
+  compatible:
+    const: renesas,r9a09g077-rsci      # RZ/T2H
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Error interrupt
+      - description: Receive buffer full interrupt
+      - description: Transmit buffer empty interrupt
+      - description: Transmit end interrupt
+
+  interrupt-names:
+    items:
+      - const: eri
+      - const: rxi
+      - const: txi
+      - const: tei
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    const: fck # UART functional clock
+
+  power-domains:
+    maxItems: 1
+
+  uart-has-rtscts: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - power-domains
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/clock/renesas-cpg-mssr.h>
+
+    aliases {
+        serial0 = &sci0;
+    };
+
+    sci0: serial@80005000 {
+        compatible = "renesas,r9a09g077-rsci";
+        reg = <0x80005000 0x400>;
+        interrupts = <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SPI 591 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 592 IRQ_TYPE_EDGE_RISING>,
+                     <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "eri", "rxi", "txi", "tei";
+        clocks = <&cpg CPG_MOD 108>;
+        clock-names = "fck";
+        power-domains = <&cpg>;
+    };
diff --git a/Bindings/serial/snps,arc-uart.yaml b/Bindings/serial/snps,arc-uart.yaml
new file mode 100644 (file)
index 0000000..dd3096f
--- /dev/null
@@ -0,0 +1,51 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/snps,arc-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys ARC UART
+
+maintainers:
+  - Vineet Gupta <vgupta@kernel.org>
+
+description:
+  Synopsys ARC UART is a non-standard UART used in some of the ARC FPGA boards.
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: snps,arc-uart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clock-frequency:
+    description: the input clock frequency for the UART
+
+  current-speed:
+    description: baud rate for UART
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clock-frequency
+  - current-speed
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    serial@c0fc1000 {
+        compatible = "snps,arc-uart";
+        reg = <0xc0fc1000 0x100>;
+        interrupts = <5>;
+        clock-frequency = <80000000>;
+        current-speed = <115200>;
+    };
index 1aa3480d8d818e998681af7524a1c93576164796..8f1b7f704c5bc7cb9552b7d4825d96199cbc6c4f 100644 (file)
@@ -17,9 +17,7 @@ allOf:
       properties:
         compatible:
           items:
-            - enum:
-                - renesas,r9a06g032-uart
-                - renesas,r9a06g033-uart
+            - {}
             - const: renesas,rzn1-uart
             - const: snps,dw-apb-uart
     then:
@@ -45,15 +43,11 @@ properties:
   compatible:
     oneOf:
       - items:
-          - enum:
-              - renesas,r9a06g032-uart
-              - renesas,r9a06g033-uart
+          - const: renesas,r9a06g032-uart
           - const: renesas,rzn1-uart
           - const: snps,dw-apb-uart
       - items:
-          - enum:
-              - renesas,r9a06g032-uart
-              - renesas,r9a06g033-uart
+          - const: renesas,r9a06g032-uart
           - const: renesas,rzn1-uart
       - items:
           - enum:
diff --git a/Bindings/serial/socionext,milbeaut-usio-uart.yaml b/Bindings/serial/socionext,milbeaut-usio-uart.yaml
new file mode 100644 (file)
index 0000000..34a997c
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/serial/socionext,milbeaut-usio-uart.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Socionext Milbeaut UART controller
+
+maintainers:
+  - Sugaya Taichi <sugaya.taichi@socionext.com>
+
+allOf:
+  - $ref: /schemas/serial/serial.yaml#
+
+properties:
+  compatible:
+    const: socionext,milbeaut-usio-uart
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: RX interrupt specifier
+      - description: TX interrupt specifier
+
+  interrupt-names:
+    items:
+      - const: rx
+      - const: tx
+
+  clocks:
+    maxItems: 1
+
+  auto-flow-control:
+    description: Enable automatic flow control.
+    type: boolean
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    serial@1e700010 {
+        compatible = "socionext,milbeaut-usio-uart";
+        reg = <0x1e700010 0x10>;
+        interrupts = <0 141 0x4>, <0 149 0x4>;
+        interrupt-names = "rx", "tx";
+        clocks = <&clk 2>;
+        auto-flow-control;
+    };
index 77c2811530103b7714584c6936a4e0f137ea0670..39d4637c2d08876b7f70ee349178c1c370c15fd1 100644 (file)
@@ -22,6 +22,8 @@ properties:
       - amlogic,meson-axg-clk-measure
       - amlogic,meson-g12a-clk-measure
       - amlogic,meson-sm1-clk-measure
+      - amlogic,c3-clk-measure
+      - amlogic,s4-clk-measure
 
   reg:
     maxItems: 1
index 234089b5954ddb97df5801959420b6e0363daec1..b43df10c5ef4a7809813f783dc9237fce4796776 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 %YAML 1.2
 ---
-$id: http://devicetree.org/schemas//soc/fsl/fsl,ls1028a-reset.yaml#
+$id: http://devicetree.org/schemas/soc/fsl/fsl,ls1028a-reset.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Freescale Layerscape Reset Registers Module
index de0b4ae740ff237e9ef6e4a4be063761ea8bcef9..a975bce599750e2bb5e72c213f482f5c2a8e347f 100644 (file)
@@ -50,7 +50,7 @@ required:
   - compatible
 
 allOf:
-  - $ref: reserved-memory.yaml
+  - $ref: /schemas/reserved-memory/reserved-memory.yaml
 
 unevaluatedProperties: false
 
@@ -61,7 +61,7 @@ examples:
         #size-cells = <2>;
 
         qman-fqd {
-            compatible = "shared-dma-pool";
+            compatible = "fsl,qman-fqd";
             size = <0 0x400000>;
             alignment = <0 0x400000>;
             no-map;
diff --git a/Bindings/soc/google/google,gs101-pmu-intr-gen.yaml b/Bindings/soc/google/google,gs101-pmu-intr-gen.yaml
new file mode 100644 (file)
index 0000000..2be022c
--- /dev/null
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/google/google,gs101-pmu-intr-gen.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Google Power Management Unit (PMU) Interrupt Generation
+
+description: |
+  PMU interrupt generator for handshaking between PMU through interrupts.
+
+maintainers:
+  - Peter Griffin <peter.griffin@linaro.org>
+
+properties:
+  compatible:
+    items:
+      - const: google,gs101-pmu-intr-gen
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    pmu_intr_gen: syscon@17470000 {
+      compatible = "google,gs101-pmu-intr-gen", "syscon";
+      reg = <0x17470000 0x10000>;
+    };
index 1ad5b61b249f2ed7d9ede968d96b040e55d6dd1d..4c96d49179676bd6178d3023dcdf0466076cfcee 100644 (file)
@@ -23,6 +23,7 @@ properties:
   compatible:
     oneOf:
       - enum:
+          - mediatek,mt6893-dvfsrc
           - mediatek,mt8183-dvfsrc
           - mediatek,mt8195-dvfsrc
       - items:
index b00be9e01206d1c61802dee9f9ec777c4b946b7b..3e8d99cb4dc368ab6b31e3e60eb5f7e082cd312d 100644 (file)
@@ -36,6 +36,13 @@ properties:
       - const: err
       - const: wakeup
 
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: ram
+
   qcom,ipc:
     $ref: /schemas/types.yaml#/definitions/phandle-array
     items:
@@ -46,6 +53,14 @@ properties:
     description:
       Three entries specifying the outgoing ipc bit used for signaling the RPM.
 
+  clock-controller:
+    type: object
+    additionalProperties: true
+    properties:
+      compatible:
+        contains:
+          const: qcom,rpmcc
+
 patternProperties:
   "^regulators(-[01])?$":
     type: object
index af632d0e0355c56748ecac24f528dc2eec7d1193..036562eb5140c78c10d845fd6efe42470b41895c 100644 (file)
@@ -44,7 +44,13 @@ description: |
 
 properties:
   compatible:
-    const: qcom,rpmh-rsc
+    oneOf:
+      - items:
+          - enum:
+              - qcom,sc7180-rpmh-apps-rsc
+              - qcom,sdm845-rpmh-apps-rsc
+          - const: qcom,rpmh-rsc
+      - const: qcom,rpmh-rsc
 
   interrupts:
     minItems: 1
@@ -124,7 +130,21 @@ required:
   - qcom,tcs-offset
   - reg
   - reg-names
-  - power-domains
+
+allOf:
+  # Some platforms may lack a OSI-mode PSCI implementation, which implies the
+  # system power domain can't provide feedback about entering power collapse
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              enum:
+                - qcom,sc7180-rpmh-apps-rsc
+                - qcom,sdm845-rpmh-apps-rsc
+    then:
+      required:
+        - power-domains
 
 additionalProperties: false
 
index ca4bce81727381b0ecd1278e58b7027365ab85fb..c2f1f5946cfaa6d89f200316238d139cad8a8860 100644 (file)
@@ -73,9 +73,10 @@ examples:
         #size-cells = <0>;
 
         cpu@0 {
-            compatible = "qcom,kryo";
+            compatible = "arm,cortex-a53";
             device_type = "cpu";
             enable-method = "qcom,kpss-acc-v2";
+            qcom,acc = <&acc0>;
             qcom,saw = <&saw0>;
             reg = <0x0>;
             operating-points-v2 = <&cpu_opp_table>;
index fd6db0ca98eb7e56d7399f55c408844d5e782805..4fcae6bedfffa845ad61c776ee0b70768e9a38a5 100644 (file)
@@ -54,7 +54,7 @@ properties:
       - compatible
 
   wifi:
-    additionalProperties: false
+    unevaluatedProperties: false
     type: object
     properties:
       compatible:
@@ -88,6 +88,9 @@ properties:
       - qcom,smem-states
       - qcom,smem-state-names
 
+    allOf:
+      - $ref: /schemas/net/wireless/wireless-controller.yaml#
+
 required:
   - compatible
   - qcom,mmio
index e0f7503a9f35b0d4cf1149d62e26eac36a7e2ff2..c41dcaea568aca052ab851a6f53330d55a7c707f 100644 (file)
@@ -25,6 +25,7 @@ properties:
     items:
       - enum:
           - renesas,r9a09g047-sys # RZ/G3E
+          - renesas,r9a09g056-sys # RZ/V2N
           - renesas,r9a09g057-sys # RZ/V2H
 
   reg:
index 51a4c48eea6d70fa06e5012a01aa1aea0e24edb2..5e6e6e6208dc552e86222ecd06cf2fbf51a8d3e4 100644 (file)
@@ -375,6 +375,13 @@ properties:
               - renesas,r8a779g3 # ES3.x
           - const: renesas,r8a779g0
 
+      - description: R-Car V4H (R8A779G3)
+        items:
+          - enum:
+              - retronix,sparrow-hawk # Sparrow Hawk board
+          - const: renesas,r8a779g3 # ES3.x
+          - const: renesas,r8a779g0
+
       - description: R-Car V4M (R8A779H0)
         items:
           - enum:
@@ -551,6 +558,21 @@ properties:
               - renesas,r9a09g047e58 # Quad Cortex-A55 + Cortex-M33 + Ethos-U55 (21mm BGA)
           - const: renesas,r9a09g047
 
+      - description: RZ/V2N (R9A09G056)
+        items:
+          - enum:
+              - renesas,rzv2n-evk # RZ/V2N EVK (RTK0EF0186C03000BJ)
+          - enum:
+              - renesas,r9a09g056n41 # RZ/V2N
+              - renesas,r9a09g056n42 # RZ/V2N with Mali-G31 support
+              - renesas,r9a09g056n43 # RZ/V2N with Mali-C55 support
+              - renesas,r9a09g056n44 # RZ/V2N with Mali-G31 + Mali-C55 support
+              - renesas,r9a09g056n45 # RZ/V2N with cryptographic extension support
+              - renesas,r9a09g056n46 # RZ/V2N with Mali-G31 + cryptographic extension support
+              - renesas,r9a09g056n47 # RZ/V2N with Mali-C55 + cryptographic extension support
+              - renesas,r9a09g056n48 # RZ/V2N with Mali-G31 + Mali-C55 + cryptographic extension support
+          - const: renesas,r9a09g056
+
       - description: RZ/V2H(P) (R9A09G057)
         items:
           - enum:
@@ -570,6 +592,16 @@ properties:
           - const: renesas,r9a09g057h48
           - const: renesas,r9a09g057
 
+      - description: RZ/T2H (R9A09G077)
+        items:
+          - enum:
+              - renesas,rzt2h-evk # RZ/T2H Evaluation Board
+          - enum:
+              - renesas,r9a09g077m04 # RZ/T2H with Single Cortex-A55 + Dual Cortex-R52 - no security
+              - renesas,r9a09g077m24 # RZ/T2H with Dual Cortex-A55 + Dual Cortex-R52 - no security
+              - renesas,r9a09g077m44 # RZ/T2H with Quad Cortex-A55 + Dual Cortex-R52 - no security
+          - const: renesas,r9a09g077
+
 additionalProperties: true
 
 ...
index 2f61c1b95fea3deea87d8d848a3f0eccfd14238f..ccdcc889ba8ef2f3f4622f55819631687ce2d0e3 100644 (file)
@@ -18,6 +18,12 @@ properties:
               - rockchip,rk3528-ioc-grf
               - rockchip,rk3528-vo-grf
               - rockchip,rk3528-vpu-grf
+              - rockchip,rk3562-ioc-grf
+              - rockchip,rk3562-peri-grf
+              - rockchip,rk3562-pipephy-grf
+              - rockchip,rk3562-pmu-grf
+              - rockchip,rk3562-sys-grf
+              - rockchip,rk3562-usbphy-grf
               - rockchip,rk3566-pipe-grf
               - rockchip,rk3568-pcie3-phy-grf
               - rockchip,rk3568-pipe-grf
@@ -82,6 +88,7 @@ properties:
               - rockchip,rk3368-pmugrf
               - rockchip,rk3399-grf
               - rockchip,rk3399-pmugrf
+              - rockchip,rk3562-pmu-grf
               - rockchip,rk3568-grf
               - rockchip,rk3568-pmugrf
               - rockchip,rk3576-ioc-grf
@@ -201,8 +208,8 @@ allOf:
 
         pcie-phy:
           type: object
-          description:
-            Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
+          $ref: /schemas/phy/rockchip,rk3399-pcie-phy.yaml#
+          unevaluatedProperties: false
 
       patternProperties:
         "^phy@[0-9a-f]+$":
@@ -326,6 +333,15 @@ examples:
         #phy-cells = <0>;
       };
 
+      pcie-phy {
+        compatible = "rockchip,rk3399-pcie-phy";
+        #phy-cells = <1>;
+        clocks = <&cru SCLK_PCIEPHY_REF>;
+        clock-names = "refclk";
+        resets = <&cru SRST_PCIEPHY>;
+        reset-names = "phy";
+      };
+
       phy@f780 {
         compatible = "rockchip,rk3399-emmc-phy";
         reg = <0xf780 0x20>;
index 204da6fe458d2d4bfeee1471ebc5c38247477ae2..3109df43d5028c61cbcaa597e7bd8cb530eafb37 100644 (file)
@@ -129,6 +129,11 @@ properties:
     description:
       Node for reboot method
 
+  google,pmu-intr-gen-syscon:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      Phandle to PMU interrupt generation interface.
+
 required:
   - compatible
   - reg
@@ -189,6 +194,16 @@ allOf:
       properties:
         dp-phy: false
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - google,gs101-pmu
+    then:
+      required:
+        - google,pmu-intr-gen-syscon
+
 examples:
   - |
     #include <dt-bindings/clock/exynos5250.h>
diff --git a/Bindings/soc/sophgo/sophgo,cv1800b-rtc.yaml b/Bindings/soc/sophgo/sophgo,cv1800b-rtc.yaml
new file mode 100644 (file)
index 0000000..5cf186c
--- /dev/null
@@ -0,0 +1,86 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sophgo/sophgo,cv1800b-rtc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Real Time Clock of the Sophgo CV1800 SoC
+
+description:
+  The RTC (Real Time Clock) is an independently powered module in the chip. It
+  contains a 32KHz oscillator and a Power-On-Reset (POR) sub-module, which can
+  be used for time display and scheduled alarm produce. In addition, the
+  hardware state machine provides triggering and timing control for chip
+  power-on, power-off and reset.
+
+  Furthermore, the 8051 subsystem is located within RTCSYS and is independently
+  powered. System software can use the 8051 to manage wake conditions and wake
+  the system while the system is asleep, and communicate with external devices
+  through peripheral controllers.
+
+  Technical Reference Manual available at
+    https://github.com/sophgo/sophgo-doc/tree/main/SG200X/TRM
+
+maintainers:
+  - sophgo@lists.linux.dev
+
+allOf:
+  - $ref: /schemas/rtc/rtc.yaml#
+
+properties:
+  compatible:
+    items:
+      - const: sophgo,cv1800b-rtc
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: RTC Alarm
+      - description: RTC Longpress
+      - description: VBAT DET
+
+  interrupt-names:
+    items:
+      - const: alarm
+      - const: longpress
+      - const: vbat
+
+  clocks:
+    items:
+      - description: RTC clock source
+      - description: DW8051 MCU clock source
+
+  clock-names:
+    items:
+      - const: rtc
+      - const: mcu
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - interrupt-names
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/sophgo,cv1800.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    rtc@5025000 {
+        compatible = "sophgo,cv1800b-rtc", "syscon";
+        reg = <0x5025000 0x2000>;
+        interrupts = <17 IRQ_TYPE_LEVEL_HIGH>,
+                     <18 IRQ_TYPE_LEVEL_HIGH>,
+                     <19 IRQ_TYPE_LEVEL_HIGH>;
+        interrupt-names = "alarm", "longpress", "vbat";
+        clocks = <&clk CLK_RTC_25M>,
+                 <&clk CLK_SRC_RTC_SYS_0>;
+        clock-names = "rtc", "mcu";
+    };
diff --git a/Bindings/soc/sophgo/sophgo,sg2044-top-syscon.yaml b/Bindings/soc/sophgo/sophgo,sg2044-top-syscon.yaml
new file mode 100644 (file)
index 0000000..a82cc3c
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/sophgo/sophgo,sg2044-top-syscon.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Sophgo SG2044 SoC TOP system controller
+
+maintainers:
+  - Inochi Amaoto <inochiama@gmail.com>
+
+description:
+  The Sophgo SG2044 TOP system controller is a hardware block grouping
+  multiple small functions, such as clocks and some other internal
+  function.
+
+properties:
+  compatible:
+    items:
+      - const: sophgo,sg2044-top-syscon
+      - const: syscon
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  '#clock-cells':
+    const: 1
+    description:
+      See <dt-bindings/clock/sophgo,sg2044-pll.h> for valid clock.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - '#clock-cells'
+
+additionalProperties: false
+
+examples:
+  - |
+    syscon@50000000 {
+      compatible = "sophgo,sg2044-top-syscon", "syscon";
+      reg = <0x50000000 0x1000>;
+      #clock-cells = <1>;
+      clocks = <&osc>;
+    };
diff --git a/Bindings/soc/spacemit/spacemit,k1-syscon.yaml b/Bindings/soc/spacemit/spacemit,k1-syscon.yaml
new file mode 100644 (file)
index 0000000..30aaf49
--- /dev/null
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/soc/spacemit/spacemit,k1-syscon.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SpacemiT K1 SoC System Controller
+
+maintainers:
+  - Haylen Chu <heylenay@4d2.org>
+
+description:
+  System controllers found on SpacemiT K1 SoC, which are capable of
+  clock, reset and power-management functions.
+
+properties:
+  compatible:
+    enum:
+      - spacemit,k1-syscon-apbc
+      - spacemit,k1-syscon-apmu
+      - spacemit,k1-syscon-mpmu
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 4
+
+  clock-names:
+    items:
+      - const: osc
+      - const: vctcxo_1m
+      - const: vctcxo_3m
+      - const: vctcxo_24m
+
+  "#clock-cells":
+    const: 1
+    description:
+      See <dt-bindings/clock/spacemit,k1-syscon.h> for valid indices.
+
+  "#power-domain-cells":
+    const: 1
+
+  "#reset-cells":
+    const: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - "#clock-cells"
+  - "#reset-cells"
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: spacemit,k1-syscon-apbc
+    then:
+      properties:
+        "#power-domain-cells": false
+    else:
+      required:
+        - "#power-domain-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    system-controller@d4050000 {
+        compatible = "spacemit,k1-syscon-mpmu";
+        reg = <0xd4050000 0x209c>;
+        clocks = <&osc>, <&vctcxo_1m>, <&vctcxo_3m>, <&vctcxo_24m>;
+        clock-names = "osc", "vctcxo_1m", "vctcxo_3m", "vctcxo_24m";
+        #clock-cells = <1>;
+        #power-domain-cells = <1>;
+        #reset-cells = <1>;
+    };
index 378e9cc5fac2a1d41a28acca1d42a9361c053417..f3bd0be3b279fb58454beadf6b1449f41e4609d1 100644 (file)
@@ -26,6 +26,7 @@ properties:
   compatible:
     items:
       - enum:
+          - ti,am654-system-controller
           - ti,j7200-system-controller
           - ti,j721e-system-controller
           - ti,j721s2-system-controller
@@ -68,6 +69,23 @@ patternProperties:
     description:
       The node corresponding to SoC chip identification.
 
+  "^pcie-ctrl@[0-9a-f]+$":
+    type: object
+    description:
+      The node corresponding to PCIe control register.
+
+  "^clock@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/soc/ti/ti,am654-serdes-ctrl.yaml#
+    description:
+      This is the Serdes Control region.
+
+  "^dss-oldi-io-ctrl@[0-9a-f]+$":
+    type: object
+    $ref: /schemas/mfd/syscon.yaml#
+    description:
+      This is the DSS OLDI CTRL region.
+
 required:
   - compatible
   - reg
@@ -110,5 +128,10 @@ examples:
             compatible = "ti,am654-chipid";
             reg = <0x14 0x4>;
         };
+
+        pcie0_ctrl: pcie-ctrl@4070 {
+            compatible = "ti,j784s4-pcie-ctrl", "syscon";
+            reg = <0x4070 0x4>;
+        };
     };
 ...
index 94588353f852a72b59eb1f869b1dfb2f2b92366f..40eb1d7d6cf12b16f7a9852d20791d0efe301a31 100644 (file)
@@ -18,11 +18,7 @@ properties:
   label:
     maxItems: 1
   routing:
-    description: |
-      A list of the connections between audio components.
-      Each entry is a pair of strings, the first being the
-      connection's sink, the second being the connection's source.
-    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
+    $ref: audio-graph.yaml#/properties/routing
   aux-devs:
     description: |
       List of phandles pointing to auxiliary devices, such
@@ -39,6 +35,8 @@ properties:
     description: Codec to Codec node
   hp-det-gpios:
     $ref: audio-graph.yaml#/properties/hp-det-gpios
+  mic-det-gpios:
+    $ref: audio-graph.yaml#/properties/mic-det-gpios
   widgets:
     $ref: audio-graph.yaml#/properties/widgets
 
diff --git a/Bindings/sound/cirrus,cs48l32.yaml b/Bindings/sound/cirrus,cs48l32.yaml
new file mode 100644 (file)
index 0000000..bf087b5
--- /dev/null
@@ -0,0 +1,195 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/cirrus,cs48l32.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cirrus Logic CS48L32 audio DSP.
+
+maintainers:
+  - patches@opensource.cirrus.com
+
+description: |
+  The CS48L32 is a high-performance low-power audio DSP for smartphones and
+  other portable audio devices. The CS48L32 combines a programmable Halo Core
+  DSP with a variety of power-efficient fixed-function audio processors.
+
+  See also the binding headers:
+
+    include/dt-bindings/sound/cs48l32.yaml
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - cirrus,cs48l32
+
+  reg:
+    description: SPI chip-select number.
+    maxItems: 1
+
+  spi-max-frequency:
+    maximum: 25000000
+
+  vdd-a-supply:
+    description: Regulator supplying VDD_A
+
+  vdd-d-supply:
+    description: Regulator supplying VDD_D
+
+  vdd-io-supply:
+    description: Regulator supplying VDD_IO
+
+  vdd-cp-supply:
+    description: Regulator supplying VDD_CP
+
+  reset-gpios:
+    description:
+      One entry specifying the GPIO controlling /RESET. Although optional,
+      it is strongly recommended to use a hardware reset.
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: The clock supplied on MCLK1
+
+  clock-names:
+    const: mclk1
+
+  '#sound-dai-cells':
+    const: 1
+
+  cirrus,in-type:
+    description: |
+      A list of input type settings for each ADC input.
+      Inputs are one of these types:
+        CS48L32_IN_TYPE_DIFF : analog differential (default)
+        CS48L32_IN_TYPE_SE :   analog single-ended
+
+      The type of the left (L) and right (R) channel on each input is
+      independently configured, as are the two groups of pins muxable to
+      the input (referred to in the datasheet as "1" and "2").
+
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    items:
+      - description:
+          IN1L_1 analog input type. One of the CS48L32_IN_TYPE_xxx.
+        minimum: 0
+        maximum: 1
+        default: 0
+      - description:
+          IN1R_1 analog input type. One of the CS48L32_IN_TYPE_xxx.
+        minimum: 0
+        maximum: 1
+        default: 0
+      - description:
+          IN1L_2 analog input type. One of the CS48L32_IN_TYPE_xxx.
+        minimum: 0
+        maximum: 1
+        default: 0
+      - description:
+          IN1R_2 analog input type. One of the CS48L32_IN_TYPE_xxx.
+        minimum: 0
+        maximum: 1
+        default: 0
+
+  cirrus,pdm-sup:
+    description: |
+      Indicate which MICBIAS output supplies bias to the microphone.
+      There is one cell per input (IN1, IN2, ...).
+
+      One of the CS48L32_MICBIAS_xxx values.
+        CS48L32_PDM_SUP_VOUT_MIC : mic biased from VOUT_MIC
+        CS48L32_PDM_SUP_MICBIAS1 : mic biased from MICBIAS1
+
+      Also see the INn_PDM_SUP field in the datasheet.
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    items:
+      - description: IN1 PDM supply source
+        minimum: 0
+        maximum: 1
+        default: 0
+      - description: IN2 PDM supply source
+        minimum: 0
+        maximum: 1
+        default: 0
+
+required:
+  - compatible
+  - reg
+  - vdd-a-supply
+  - vdd-d-supply
+  - vdd-io-supply
+  - vdd-cp-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/sound/cs48l32.h>
+
+    spi@e0006000 {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        reg = <0xe0006000 0x1000>;
+
+        codec@1 {
+            compatible = "cirrus,cs48l32";
+
+            reg = <0x1>;
+            spi-max-frequency = <2500000>;
+
+            vdd-a-supply = <&regulator_1v8>;
+            vdd-d-supply = <&regulator_1v2>;
+            vdd-io-supply = <&regulator_1v8>;
+            vdd-cp-supply = <&regulator_1v8>;
+
+            reset-gpios = <&gpio 0 0>;
+
+            clocks = <&clks 0>;
+            clock-names = "mclk1";
+
+            interrupt-parent = <&gpio0>;
+            interrupts = <56 8>;
+
+            #sound-dai-cells = <1>;
+
+            cirrus,in-type = <
+                CS48L32_IN_TYPE_DIFF CS48L32_IN_TYPE_DIFF
+                CS48L32_IN_TYPE_SE   CS48L32_IN_TYPE_SE
+            >;
+
+            cirrus,pdm-sup = <
+              CS48L32_PDM_SUP_MICBIAS1 CS48L32_PDM_SUP_MICBIAS1
+            >;
+        };
+    };
+
+#
+# Minimal config
+#
+  - |
+    #include <dt-bindings/sound/cs48l32.h>
+
+    spi@e0006000 {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        reg = <0xe0006000 0x1000>;
+
+        codec@1 {
+            compatible = "cirrus,cs48l32";
+
+            reg = <0x1>;
+
+            vdd-a-supply = <&regulator_1v8>;
+            vdd-d-supply = <&regulator_1v2>;
+            vdd-io-supply = <&regulator_1v8>;
+            vdd-cp-supply = <&regulator_1v8>;
+        };
+    };
diff --git a/Bindings/sound/everest,es8375.yaml b/Bindings/sound/everest,es8375.yaml
new file mode 100644 (file)
index 0000000..4a3d671
--- /dev/null
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/everest,es8375.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Everest ES8375 audio CODEC
+
+maintainers:
+  - Michael Zhang <zhangyi@everest-semi.com>
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    const: everest,es8375
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: clock for master clock (MCLK)
+
+  clock-names:
+    items:
+      - const: mclk
+
+  vdda-supply:
+    description:
+      Analogue power supply.
+
+  vddd-supply:
+    description:
+      Interface power supply.
+
+  everest,mclk-src:
+    $ref: /schemas/types.yaml#/definitions/uint8
+    description: |
+      Represents the MCLK/SCLK pair pins used as the internal clock.
+      0 represents selecting MCLK.
+      1 represents selecting SCLK.
+    enum: [0, 1]
+    default: 0
+
+  "#sound-dai-cells":
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - "#sound-dai-cells"
+  - vdda-supply
+  - vddd-supply
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+      es8375: codec@18 {
+        compatible = "everest,es8375";
+        reg = <0x18>;
+        vdda-supply = <&vdd3v3>;
+        vddd-supply = <&vdd3v3>;
+        #sound-dai-cells = <0>;
+      };
+    };
diff --git a/Bindings/sound/everest,es8389.yaml b/Bindings/sound/everest,es8389.yaml
new file mode 100644 (file)
index 0000000..a673df4
--- /dev/null
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/everest,es8389.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Everest ES8389 audio CODEC
+
+maintainers:
+  - Michael Zhang <zhangyi@everest-semi.com>
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    const: everest,es8389
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: clock for master clock (MCLK)
+
+  clock-names:
+    items:
+      - const: mclk
+
+  "#sound-dai-cells":
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - "#sound-dai-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+      es8389: codec@10 {
+        compatible = "everest,es8389";
+        reg = <0x10>;
+        #sound-dai-cells = <0>;
+      };
+    };
index 8c22e8348b14df4bad5775f4b18e14a6cbbccd1d..1415247c92c8fc1f9147f0534323f995c2d7e03f 100644 (file)
@@ -28,6 +28,9 @@ properties:
       - fsl,imx95-aonmix-mqs
       - fsl,imx95-netcmix-mqs
 
+  "#sound-dai-cells":
+    const: 0
+
   clocks:
     minItems: 1
     maxItems: 2
@@ -49,12 +52,17 @@ properties:
   resets:
     maxItems: 1
 
+  port:
+    $ref: audio-graph-port.yaml#
+    unevaluatedProperties: false
+
 required:
   - compatible
   - clocks
   - clock-names
 
 allOf:
+  - $ref: dai-common.yaml#
   - if:
       properties:
         compatible:
@@ -86,7 +94,7 @@ allOf:
       required:
         - gpr
 
-additionalProperties: false
+unevaluatedProperties: false
 
 examples:
   - |
diff --git a/Bindings/sound/loongson,ls1b-ac97.yaml b/Bindings/sound/loongson,ls1b-ac97.yaml
new file mode 100644 (file)
index 0000000..1c6a277
--- /dev/null
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/loongson,ls1b-ac97.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Loongson-1 AC97 Controller
+
+maintainers:
+  - Keguang Zhang <keguang.zhang@gmail.com>
+
+description:
+  The Loongson-1 AC97 controller supports 2-channel stereo output and input.
+  It is paired with the DMA engine to handle playback and capture functions.
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - const: loongson,ls1b-ac97
+      - items:
+          - enum:
+              - loongson,ls1a-ac97
+              - loongson,ls1c-ac97
+          - const: loongson,ls1b-ac97
+
+  reg:
+    maxItems: 3
+
+  reg-names:
+    items:
+      - const: ac97
+      - const: audio-tx
+      - const: audio-rx
+
+  dmas:
+    maxItems: 2
+
+  dma-names:
+    items:
+      - const: tx
+      - const: rx
+
+  '#sound-dai-cells':
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - reg-names
+  - dmas
+  - dma-names
+  - '#sound-dai-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    audio-controller@1fe74000 {
+        compatible = "loongson,ls1b-ac97";
+        reg = <0x1fe74000 0x60>, <0x1fe72420 0x4>, <0x1fe74c4c 0x4>;
+        reg-names = "ac97", "audio-tx", "audio-rx";
+        dmas = <&dma 1>, <&dma 2>;
+        dma-names = "tx", "rx";
+        #sound-dai-cells = <0>;
+    };
index 32fd86204a7ae4c0225e8ae56c7dba36459a0686..121e8d2d44da0b7b3b8808aeec295d241fd5e4f3 100644 (file)
@@ -77,11 +77,11 @@ additionalProperties: false
 
 examples:
   - |
+    #include <dt-bindings/gpio/gpio.h>
     i2c {
         #address-cells = <1>;
         #size-cells = <0>;
 
-        #include <dt-bindings/gpio/gpio.h>
         audio-codec@3a {
             compatible = "maxim,max98927";
             reg = <0x3a>;
index 76d5a437dc8f4ad1f31c21f84304bad326b0facd..7ba2ea2dfa0b171b00d747e6593ae585b3727d5d 100644 (file)
@@ -96,10 +96,9 @@ patternProperties:
       mediatek,clk-provider:
         $ref: /schemas/types.yaml#/definitions/string
         description: Indicates dai-link clock master.
-        items:
-          enum:
-            - cpu
-            - codec
+        enum:
+          - cpu
+          - codec
 
     additionalProperties: false
 
index cbc641ecbe94afee731c7494875e11183a9b389e..037f21443ad14c2126a02794128054e496adddae 100644 (file)
@@ -124,10 +124,9 @@ patternProperties:
       mediatek,clk-provider:
         $ref: /schemas/types.yaml#/definitions/string
         description: Indicates dai-link clock master.
-        items:
-          enum:
-            - cpu
-            - codec
+        enum:
+          - cpu
+          - codec
 
     required:
       - link-name
index 2af1d8ffbd8b58f1dce42b369fd699795183a7d7..356e1feee9620981aadbf91115af1d67a735bb2c 100644 (file)
@@ -21,6 +21,7 @@ properties:
       - mediatek,mt8195_mt6359_rt1019_rt5682
       - mediatek,mt8195_mt6359_rt1011_rt5682
       - mediatek,mt8195_mt6359_max98390_rt5682
+      - mediatek,mt8195_mt6359
 
   model:
     $ref: /schemas/types.yaml#/definitions/string
@@ -44,6 +45,8 @@ properties:
         - Right Spk
 
         # Sources
+        - Headphone L
+        - Headphone R
         - Headset Mic
         - HPOL
         - HPOR
@@ -88,6 +91,7 @@ patternProperties:
       link-name:
         description: Indicates dai-link name and PCM stream name
         enum:
+          - DL_SRC_BE
           - DPTX_BE
           - ETDM1_IN_BE
           - ETDM2_IN_BE
index b4bee466d67a22ef74234bf6dae0cbb16251419a..da89523ccf5f869e471a73aad21f109d313aad55 100644 (file)
@@ -23,6 +23,7 @@ properties:
     enum:
       - nvidia,tegra210-audio-graph-card
       - nvidia,tegra186-audio-graph-card
+      - nvidia,tegra264-audio-graph-card
 
   clocks:
     minItems: 2
index e15f387c4c29826584fa71938865f7726036d119..66b56e71599b84a4166feed74d35d63306571bbc 100644 (file)
@@ -31,7 +31,9 @@ properties:
 
   compatible:
     oneOf:
-      - const: nvidia,tegra186-asrc
+      - enum:
+          - nvidia,tegra186-asrc
+          - nvidia,tegra264-asrc
       - items:
           - enum:
               - nvidia,tegra234-asrc
index e1362c77472bb5e58e2882074c1d2c32afb63096..46ba167081ef0007c374e6e1364d22d01404564a 100644 (file)
@@ -29,6 +29,7 @@ properties:
       - const: nvidia,tegra186-dspk
       - items:
           - enum:
+              - nvidia,tegra264-dspk
               - nvidia,tegra234-dspk
               - nvidia,tegra194-dspk
           - const: nvidia,tegra186-dspk
index 15ab40aeab1e0ebbb0ede46257730147913d4d86..b32f33214ba60ba307584552a95e6349d79e3626 100644 (file)
@@ -26,6 +26,7 @@ properties:
       - enum:
           - nvidia,tegra210-admaif
           - nvidia,tegra186-admaif
+          - nvidia,tegra264-admaif
       - items:
           - enum:
               - nvidia,tegra234-admaif
@@ -39,6 +40,19 @@ properties:
 
   dma-names: true
 
+  interconnects:
+    items:
+      - description: APE read memory client
+      - description: APE write memory client
+
+  interconnect-names:
+    items:
+      - const: dma-mem # read
+      - const: write
+
+  iommus:
+    maxItems: 1
+
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
     description: |
@@ -74,6 +88,9 @@ then:
         Should be "tx1", "tx2" ... "tx10" for DMA Tx channel
       minItems: 1
       maxItems: 20
+    interconnects: false
+    interconnect-names: false
+    iommus: false
 
 else:
   properties:
index e4c871797fa6cc993117cb7a2e3943e811963240..19a80929f93e63b5120689e366994a4061f0a170 100644 (file)
@@ -27,7 +27,9 @@ properties:
 
   compatible:
     oneOf:
-      - const: nvidia,tegra210-adx
+      - enum:
+          - nvidia,tegra210-adx
+          - nvidia,tegra264-adx
       - items:
           - enum:
               - nvidia,tegra234-adx
index c4abac81f2074791dab0894d7213884533611852..1c9f24d2681900a09e1d38d86912c28959be5be2 100644 (file)
@@ -27,6 +27,7 @@ properties:
           - nvidia,tegra210-ahub
           - nvidia,tegra186-ahub
           - nvidia,tegra234-ahub
+          - nvidia,tegra264-ahub
       - items:
           - const: nvidia,tegra194-ahub
           - const: nvidia,tegra186-ahub
index 021b72546ba4b66da331cfd437f17162bc1e38b6..89712102cfdf661b2e6b179e7ce357589a40df23 100644 (file)
@@ -26,11 +26,13 @@ properties:
 
   compatible:
     oneOf:
-      - const: nvidia,tegra210-amx
+      - enum:
+          - nvidia,tegra210-amx
+          - nvidia,tegra194-amx
+          - nvidia,tegra264-amx
       - items:
           - const: nvidia,tegra186-amx
           - const: nvidia,tegra210-amx
-      - const: nvidia,tegra194-amx
       - items:
           - const: nvidia,tegra234-amx
           - const: nvidia,tegra194-amx
index bff551c35da7a6516498207f2c1e280c827c585d..bb8088878d4bc85f578ba06b55b4041b8c062e32 100644 (file)
@@ -28,6 +28,7 @@ properties:
       - const: nvidia,tegra210-dmic
       - items:
           - enum:
+              - nvidia,tegra264-dmic
               - nvidia,tegra234-dmic
               - nvidia,tegra194-dmic
               - nvidia,tegra186-dmic
index a82f11fb6c9a8c8efe5192a16b776483dd6d7179..903e815af8fd50c3ee7928244c8ffb9fc1df8749 100644 (file)
@@ -25,7 +25,9 @@ properties:
 
   compatible:
     oneOf:
-      - const: nvidia,tegra210-i2s
+      - enum:
+          - nvidia,tegra210-i2s
+          - nvidia,tegra264-i2s
       - items:
           - enum:
               - nvidia,tegra234-i2s
index 5b9198602fc6aba0ce0ebd869e230165d5659bb7..4c121b9cde1e04f16cf979b344950fa5ad6f9737 100644 (file)
@@ -23,6 +23,7 @@ properties:
       - const: nvidia,tegra210-mbdrc
       - items:
           - enum:
+              - nvidia,tegra264-mbdrc
               - nvidia,tegra234-mbdrc
               - nvidia,tegra194-mbdrc
               - nvidia,tegra186-mbdrc
index 049898f02e85c47d58490e94228e782b225fe811..56b4c4fc123cc51acec838613d426fa83ae55a16 100644 (file)
@@ -28,6 +28,7 @@ properties:
       - const: nvidia,tegra210-amixer
       - items:
           - enum:
+              - nvidia,tegra264-amixer
               - nvidia,tegra234-amixer
               - nvidia,tegra194-amixer
               - nvidia,tegra186-amixer
index d0280d8aa3af8564b1faacb16b3bc27b90315a73..bde4ac6319b19093bfefb99cff8f157065746d3e 100644 (file)
@@ -31,6 +31,7 @@ properties:
       - const: nvidia,tegra210-mvc
       - items:
           - enum:
+              - nvidia,tegra264-mvc
               - nvidia,tegra234-mvc
               - nvidia,tegra194-mvc
               - nvidia,tegra186-mvc
index 9017fb6d575d9c069b5981f7f115b204ff5af91c..756c3096a2d60e2fbb50ccef44f4c5487a29973f 100644 (file)
@@ -25,6 +25,7 @@ properties:
       - const: nvidia,tegra210-ope
       - items:
           - enum:
+              - nvidia,tegra264-ope
               - nvidia,tegra234-ope
               - nvidia,tegra194-ope
               - nvidia,tegra186-ope
index 1e373c49d639bd4a9debd0ff0fa393717080e0e9..2f11a484dc2e5f289668b9f5b45b262ba7778696 100644 (file)
@@ -24,6 +24,7 @@ properties:
       - const: nvidia,tegra210-peq
       - items:
           - enum:
+              - nvidia,tegra264-peq
               - nvidia,tegra234-peq
               - nvidia,tegra194-peq
               - nvidia,tegra186-peq
index 185ca0be4f0261b457d6ed7f038fd9c42e9fad86..959aa7fffdac3d215f6d126b52f5172ca3d1e87e 100644 (file)
@@ -28,6 +28,7 @@ properties:
       - const: nvidia,tegra210-sfc
       - items:
           - enum:
+              - nvidia,tegra264-sfc
               - nvidia,tegra234-sfc
               - nvidia,tegra194-sfc
               - nvidia,tegra186-sfc
index 3ca9affb79a20a38d6e93bfbf08dd2b53583aa78..8a8767589ee08dae497e594fee53167a52bd2dc1 100644 (file)
@@ -20,11 +20,13 @@ properties:
 
   compatible:
     oneOf:
-      - const: nvidia,tegra30-hda
+      - enum:
+          - nvidia,tegra30-hda
+          - nvidia,tegra194-hda
+          - nvidia,tegra234-hda
+          - nvidia,tegra264-hda
       - items:
           - enum:
-              - nvidia,tegra234-hda
-              - nvidia,tegra194-hda
               - nvidia,tegra186-hda
               - nvidia,tegra210-hda
               - nvidia,tegra124-hda
@@ -43,15 +45,12 @@ properties:
     maxItems: 1
 
   clocks:
-    minItems: 2
+    minItems: 1
     maxItems: 3
 
   clock-names:
-    minItems: 2
-    items:
-      - const: hda
-      - const: hda2hdmi
-      - const: hda2codec_2x
+    minItems: 1
+    maxItems: 3
 
   resets:
     minItems: 2
@@ -59,10 +58,7 @@ properties:
 
   reset-names:
     minItems: 2
-    items:
-      - const: hda
-      - const: hda2hdmi
-      - const: hda2codec_2x
+    maxItems: 3
 
   power-domains:
     maxItems: 1
@@ -93,6 +89,92 @@ required:
 
 additionalProperties: false
 
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - nvidia,tegra30-hda
+    then:
+      properties:
+        clocks:
+          minItems: 3
+        clock-names:
+          items:
+            - const: hda
+            - const: hda2hdmi
+            - const: hda2codec_2x
+        resets:
+          minItems: 3
+        reset-names:
+          items:
+            - const: hda
+            - const: hda2hdmi
+            - const: hda2codec_2x
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - nvidia,tegra194-hda
+    then:
+      properties:
+        clocks:
+          minItems: 3
+        clock-names:
+          items:
+            - const: hda
+            - const: hda2hdmi
+            - const: hda2codec_2x
+        resets:
+          maxItems: 2
+        reset-names:
+          items:
+            - const: hda
+            - const: hda2hdmi
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - nvidia,tegra234-hda
+    then:
+      properties:
+        clocks:
+          minItems: 2
+          maxItems: 2
+        clock-names:
+          items:
+            - const: hda
+            - const: hda2codec_2x
+        resets:
+          maxItems: 2
+        reset-names:
+          items:
+            - const: hda
+            - const: hda2codec_2x
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - nvidia,tegra264-hda
+    then:
+      properties:
+        clocks:
+          maxItems: 1
+        clock-names:
+          items:
+            - const: hda
+        resets:
+          maxItems: 2
+        reset-names:
+          items:
+            - const: hda
+            - const: hda2codec_2x
+        power-domains: false
+
 examples:
   - |
     #include<dt-bindings/clock/tegra124-car-common.h>
index b9e33a7429b0c063dc5f5b806925cd541e546cf6..590eb177f57abd574ca0762adb90b151df196bee 100644 (file)
@@ -28,9 +28,12 @@ properties:
               - qcom,sm8750-sndcard
           - const: qcom,sm8450-sndcard
       - enum:
+          - fairphone,fp5-sndcard
           - qcom,apq8096-sndcard
           - qcom,qcm6490-idp-sndcard
           - qcom,qcs6490-rb3gen2-sndcard
+          - qcom,qcs9075-sndcard
+          - qcom,qcs9100-sndcard
           - qcom,qrb4210-rb2-sndcard
           - qcom,qrb5165-rb5-sndcard
           - qcom,sc7180-qdsp6-sndcard
@@ -190,4 +193,19 @@ examples:
                 sound-dai = <&vamacro 0>;
             };
         };
+
+        usb-dai-link {
+            link-name = "USB Playback";
+            cpu {
+                sound-dai = <&q6afedai USB_RX>;
+            };
+
+            codec {
+                sound-dai = <&usbdai USB_RX>;
+            };
+
+            platform {
+                sound-dai = <&q6routing>;
+            };
+        };
     };
index 10531350c3362788d1943100808ff9cf7d7036cc..ab1c6285dbf895ce06f6a46592436a0d7286458d 100644 (file)
@@ -23,9 +23,15 @@ properties:
       - qcom,wcd9380-codec
       - qcom,wcd9385-codec
 
+  mux-controls:
+    description: A reference to the audio mux switch for
+      switching CTIA/OMTP Headset types
+    maxItems: 1
+
   us-euro-gpios:
     description: GPIO spec for swapping gnd and mic segments
     maxItems: 1
+    deprecated: true
 
 required:
   - compatible
diff --git a/Bindings/sound/realtek,alc203.yaml b/Bindings/sound/realtek,alc203.yaml
new file mode 100644 (file)
index 0000000..6b90788
--- /dev/null
@@ -0,0 +1,36 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/realtek,alc203.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Realtek ALC203 AC97 Audio Codec
+
+maintainers:
+  - Keguang Zhang <keguang.zhang@gmail.com>
+
+description:
+  ALC203 is a full duplex AC97 2.3 compatible stereo audio codec.
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    const: realtek,alc203
+
+  '#sound-dai-cells':
+    const: 0
+
+required:
+  - compatible
+  - '#sound-dai-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    audio-codec {
+        compatible = "realtek,alc203";
+        #sound-dai-cells = <0>;
+    };
diff --git a/Bindings/sound/richtek,rt9123.yaml b/Bindings/sound/richtek,rt9123.yaml
new file mode 100644 (file)
index 0000000..5acb05c
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/richtek,rt9123.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Richtek RT9123 Audio Amplifier
+
+maintainers:
+  - ChiYuan Huang <cy_huang@richtek.com>
+
+description:
+  RT9123 is a 3.2W mono Class-D audio amplifier that features high efficiency
+  and performance with ultra-low quiescent current. The digital audio interface
+  support various formats, including I2S, left-justified, right-justified, and
+  TDM formats.
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - richtek,rt9123
+
+  reg:
+    maxItems: 1
+
+  '#sound-dai-cells':
+    const: 0
+
+  enable-gpios:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - '#sound-dai-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        amplifier@5e {
+            compatible = "richtek,rt9123";
+            reg = <0x5e>;
+            enable-gpios = <&gpio 26 GPIO_ACTIVE_HIGH>;
+            #sound-dai-cells = <0>;
+        };
+    };
diff --git a/Bindings/sound/richtek,rt9123p.yaml b/Bindings/sound/richtek,rt9123p.yaml
new file mode 100644 (file)
index 0000000..693511d
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/richtek,rt9123p.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Richtek RT9123P Audio Amplifier
+
+maintainers:
+  - ChiYuan Huang <cy_huang@richtek.com>
+
+description:
+  RT9123P is a RT9123 variant which does not support I2C control.
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    enum:
+      - richtek,rt9123p
+
+  '#sound-dai-cells':
+    const: 0
+
+  enable-gpios:
+    maxItems: 1
+
+  enable-delay-ms:
+    description:
+      Delay time for 'ENABLE' pin changes intended to make I2S clocks ready to
+      prevent speaker pop noise. The unit is in millisecond.
+
+required:
+  - compatible
+  - '#sound-dai-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    amplifier {
+        compatible = "richtek,rt9123p";
+        enable-gpios = <&gpio 26 GPIO_ACTIVE_HIGH>;
+        #sound-dai-cells = <0>;
+    };
diff --git a/Bindings/sound/rockchip,rk3576-sai.yaml b/Bindings/sound/rockchip,rk3576-sai.yaml
new file mode 100644 (file)
index 0000000..149da9a
--- /dev/null
@@ -0,0 +1,144 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/rockchip,rk3576-sai.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip Serial Audio Interface Controller
+
+description:
+  The Rockchip Serial Audio Interface (SAI) controller is a flexible audio
+  controller that implements the I2S, I2S/TDM and the PDM standards.
+
+maintainers:
+  - Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    const: rockchip,rk3576-sai
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  dmas:
+    minItems: 1
+    maxItems: 2
+
+  dma-names:
+    minItems: 1
+    items:
+      - enum: [tx, rx]
+      - const: rx
+
+  clocks:
+    items:
+      - description: master audio clock
+      - description: AHB clock driving the interface
+
+  clock-names:
+    items:
+      - const: mclk
+      - const: hclk
+
+  resets:
+    minItems: 1
+    items:
+      - description: reset for the mclk domain
+      - description: reset for the hclk domain
+
+  reset-names:
+    minItems: 1
+    items:
+      - const: m
+      - const: h
+
+  port:
+    $ref: audio-graph-port.yaml#
+    unevaluatedProperties: false
+
+  power-domains:
+    maxItems: 1
+
+  "#sound-dai-cells":
+    const: 0
+
+  rockchip,sai-rx-route:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    description:
+      Defines the mapping of the controller's SDI ports to actual input lanes,
+      as well as the number of input lanes.
+      rockchip,sai-rx-route = <3> would mean sdi3 is receiving from data0, and
+      that there is only one receiving lane.
+      This property's absence is to be understood as only one receiving lane
+      being used if the controller has capture capabilities.
+    maxItems: 4
+    items:
+      minimum: 0
+      maximum: 3
+
+  rockchip,sai-tx-route:
+    $ref: /schemas/types.yaml#/definitions/uint32-array
+    description:
+      Defines the mapping of the controller's SDO ports to actual output lanes,
+      as well as the number of output lanes.
+      rockchip,sai-tx-route = <3> would mean sdo3 is sending to data0, and
+      that there is only one transmitting lane.
+      This property's absence is to be understood as only one transmitting lane
+      being used if the controller has playback capabilities.
+    maxItems: 4
+    items:
+      minimum: 0
+      maximum: 3
+
+required:
+  - compatible
+  - reg
+  - dmas
+  - dma-names
+  - clocks
+  - clock-names
+  - "#sound-dai-cells"
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/rockchip,rk3576-cru.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/pinctrl/rockchip.h>
+    #include <dt-bindings/power/rockchip,rk3576-power.h>
+    #include <dt-bindings/reset/rockchip,rk3576-cru.h>
+
+    bus {
+        #address-cells = <2>;
+        #size-cells = <2>;
+        sai1: sai@2a610000 {
+            compatible = "rockchip,rk3576-sai";
+            reg = <0x0 0x2a610000 0x0 0x1000>;
+            interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
+            clocks = <&cru MCLK_SAI1_8CH>, <&cru HCLK_SAI1_8CH>;
+            clock-names = "mclk", "hclk";
+            dmas = <&dmac0 2>, <&dmac0 3>;
+            dma-names = "tx", "rx";
+            power-domains = <&power RK3576_PD_AUDIO>;
+            resets = <&cru SRST_M_SAI1_8CH>, <&cru SRST_H_SAI1_8CH>;
+            reset-names = "m", "h";
+            pinctrl-names = "default";
+            pinctrl-0 = <&sai1m0_lrck
+                         &sai1m0_sclk
+                         &sai1m0_sdi0
+                         &sai1m0_sdo0
+                         &sai1m0_sdo1
+                         &sai1m0_sdo2
+                         &sai1m0_sdo3>;
+            rockchip,sai-tx-route = <3 1 2 0>;
+            #sound-dai-cells = <0>;
+        };
+    };
index 3591c8c49bfe633bd4cb2f45d3138b0ff51e7d14..95d947fda6a705546c5a88e089b4c72d41de861c 100644 (file)
@@ -15,13 +15,18 @@ description:
 
 properties:
   compatible:
-    enum:
-      - qcom,soundwire-v1.3.0
-      - qcom,soundwire-v1.5.0
-      - qcom,soundwire-v1.5.1
-      - qcom,soundwire-v1.6.0
-      - qcom,soundwire-v1.7.0
-      - qcom,soundwire-v2.0.0
+    oneOf:
+      - enum:
+          - qcom,soundwire-v1.3.0
+          - qcom,soundwire-v1.5.0
+          - qcom,soundwire-v1.5.1
+          - qcom,soundwire-v1.6.0
+          - qcom,soundwire-v1.7.0
+          - qcom,soundwire-v2.0.0
+      - items:
+          - enum:
+              - qcom,soundwire-v2.1.0
+          - const: qcom,soundwire-v2.0.0
 
   reg:
     maxItems: 1
index 7ca8fceda7179fd19e4fcb9f8746d06d20c0b364..bf9cce53c48da5cc19dc17e6e95514d8ce2ca696 100644 (file)
@@ -105,12 +105,12 @@ examples:
         big-endian;
 
         flash@0 {
-                compatible = "jedec,spi-nor";
-                reg = <0>;
-                spi-max-frequency = <16000000>;
-                spi-cpol;
-                spi-cpha;
-                spi-cs-setup-delay-ns = <100>;
-                spi-cs-hold-delay-ns = <50>;
+            compatible = "jedec,spi-nor";
+            reg = <0>;
+            spi-max-frequency = <16000000>;
+            spi-cpol;
+            spi-cpha;
+            spi-cs-setup-delay-ns = <100>;
+            spi-cs-hold-delay-ns = <50>;
         };
     };
index 4e0d391e1d69746c567fdb8a2ef847ab245a103b..c97bf48b56b41f7c10dd0048112b68aa81f6a457 100644 (file)
@@ -59,8 +59,3 @@ examples:
         reg = <0>;
       };
     };
-
-    shm: syscon@c8001000 {
-      compatible = "nuvoton,wpcm450-shm", "syscon";
-      reg = <0xc8001000 0x1000>;
-    };
index 48e97e2402656699407430ce82a595e43ca1a097..8b3640280559d973f66020fba8528e51d574042c 100644 (file)
@@ -10,9 +10,6 @@ maintainers:
   - Thierry Reding <thierry.reding@gmail.com>
   - Jonathan Hunter <jonathanh@nvidia.com>
 
-allOf:
-  - $ref: spi-controller.yaml#
-
 properties:
   compatible:
     enum:
@@ -47,6 +44,9 @@ properties:
       - const: rx
       - const: tx
 
+  iommus:
+    maxItems: 1
+
 patternProperties:
   "@[0-9a-f]+$":
     type: object
@@ -69,6 +69,18 @@ required:
 
 unevaluatedProperties: false
 
+allOf:
+  - $ref: spi-controller.yaml#
+  - if:
+      properties:
+        compatible:
+          not:
+            contains:
+              const: nvidia,tegra234-qspi
+    then:
+      properties:
+        iommus: false
+
 examples:
   - |
     #include <dt-bindings/clock/tegra210-car.h>
index aa3f933192034fe6d54d6149373d50c31ec4aa96..cb1f15224b45574a3c3d603566c859a9bec41937 100644 (file)
@@ -21,8 +21,12 @@ allOf:
 
 properties:
   compatible:
-    enum:
-      - qcom,ipq9574-snand
+    oneOf:
+      - items:
+          - enum:
+              - qcom,ipq5018-snand
+          - const: qcom,ipq9574-snand
+      - const: qcom,ipq9574-snand
 
   reg:
     maxItems: 1
index 49649fc3f95af9719f14f71a0c098d0b09043821..e0c7047ae8adb6c3ad5c9eb1a2b34a12a502c7cd 100644 (file)
@@ -4,14 +4,11 @@
 $id: http://devicetree.org/schemas/spi/renesas,sh-msiof.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Renesas MSIOF SPI controller
+title: Renesas MSIOF SPI / I2S controller
 
 maintainers:
   - Geert Uytterhoeven <geert+renesas@glider.be>
 
-allOf:
-  - $ref: spi-controller.yaml#
-
 properties:
   compatible:
     oneOf:
@@ -146,24 +143,38 @@ properties:
     $ref: /schemas/types.yaml#/definitions/uint32
     default: 64
 
+  # for MSIOF-I2S
+  port:
+    $ref: ../sound/audio-graph-port.yaml#
+    unevaluatedProperties: false
+
 required:
   - compatible
   - reg
   - interrupts
   - clocks
   - power-domains
-  - '#address-cells'
-  - '#size-cells'
-
-if:
-  not:
-    properties:
-      compatible:
-        contains:
-          const: renesas,sh-mobile-msiof
-then:
-  required:
-    - resets
+
+allOf:
+  # additional "required""
+  - if:
+      not:
+        properties:
+          compatible:
+            contains:
+              const: renesas,sh-mobile-msiof
+    then:
+      required:
+        - resets
+
+  # If it doesn't have "port" node, it is "MSIOF-SPI"
+  - if:
+      not:
+        required:
+          - port
+    then:
+      allOf:
+        - $ref: spi-controller.yaml#
 
 unevaluatedProperties: false
 
index 3c206a64d60adf47a3b288a8fd3594af8fe2f45f..fe298d47b1a905f0304ffea4ed3353975047d15c 100644 (file)
@@ -29,6 +29,7 @@ properties:
       - items:
           - enum:
               - samsung,exynos8895-spi
+              - samsung,exynosautov920-spi
           - const: samsung,exynos850-spi
       - const: samsung,exynos7-spi
         deprecated: true
index 53d00ca643b318a8e75b9b79dbc6bf63962fc3be..0543c526b783afc9723cfdeed28d1a1dbff1c6c1 100644 (file)
@@ -83,9 +83,7 @@ properties:
         const: canaan,k210-spi
       - description: Renesas RZ/N1 SPI Controller
         items:
-          - enum:
-              - renesas,r9a06g032-spi # RZ/N1D
-              - renesas,r9a06g033-spi # RZ/N1S
+          - const: renesas,r9a06g032-spi # RZ/N1D
           - const: renesas,rzn1-spi   # RZ/N1
 
   reg:
index 0bb443b8decda9b6c5eb0a3caa2fcfc4dc01d775..8fc17e16efb206500b5b63d391f9d012d1289b22 100644 (file)
@@ -8,12 +8,13 @@ title: Peripheral-specific properties for a SPI bus.
 
 description:
   Many SPI controllers need to add properties to peripheral devices. They could
-  be common properties like spi-max-frequency, spi-cpha, etc. or they could be
-  controller specific like delay in clock or data lines, etc. These properties
-  need to be defined in the peripheral node because they are per-peripheral and
-  there can be multiple peripherals attached to a controller. All those
-  properties are listed here. The controller specific properties should go in
-  their own separate schema that should be referenced from here.
+  be common properties like spi-max-frequency, spi-cs-high, etc. or they could
+  be controller specific like delay in clock or data lines, etc. These
+  properties need to be defined in the peripheral node because they are
+  per-peripheral and there can be multiple peripherals attached to a
+  controller. All those properties are listed here. The controller specific
+  properties should go in their own separate schema that should be referenced
+  from here.
 
 maintainers:
   - Mark Brown <broonie@kernel.org>
index 104f5ffdd04e38a1d3b30d04b096fcb8e834110e..748faf7f7081f2a41237e69a9b4f2d73ea741b8e 100644 (file)
@@ -34,6 +34,7 @@ properties:
               - rockchip,rk3328-spi
               - rockchip,rk3368-spi
               - rockchip,rk3399-spi
+              - rockchip,rk3528-spi
               - rockchip,rk3562-spi
               - rockchip,rk3568-spi
               - rockchip,rk3576-spi
index 948ff7a096433a8c3c64cba13fc1339d18f6c19d..66e54dedab140a167ad84c43f312f93af2bfa06a 100644 (file)
@@ -14,7 +14,12 @@ allOf:
 
 properties:
   compatible:
-    const: sophgo,sg2044-spifmc-nor
+    oneOf:
+      - const: sophgo,sg2044-spifmc-nor
+      - items:
+          - enum:
+              - sophgo,sg2042-spifmc-nor
+          - const: sophgo,sg2044-spifmc-nor
 
   reg:
     maxItems: 1
index 5f276f27dc4c1fd2056f129cafc1005eaee8008f..272bc308726b2dfdf3ec80740d70e0fd1bfc4fea 100644 (file)
@@ -68,6 +68,7 @@ required:
   - compatible
   - reg
   - clocks
+  - resets
   - interrupts
   - st,syscfg-dlyb
 
diff --git a/Bindings/spmi/apple,spmi.yaml b/Bindings/spmi/apple,spmi.yaml
new file mode 100644 (file)
index 0000000..16bd7eb
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/spmi/apple,spmi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple SPMI controller
+
+maintainers:
+  - Sasha Finkelstein <fnkl.kernel@gmail.com>
+
+description: A SPMI controller present on most Apple SoCs
+
+allOf:
+  - $ref: spmi.yaml#
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - apple,t8103-spmi
+          - apple,t6000-spmi
+          - apple,t8112-spmi
+      - const: apple,spmi
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/spmi/spmi.h>
+
+    spmi@920a1300 {
+        compatible = "apple,t6000-spmi", "apple,spmi";
+        reg = <0x920a1300 0x100>;
+        #address-cells = <2>;
+        #size-cells = <0>;
+
+        pmic@f {
+            reg = <0xf SPMI_USID>;
+            /* PMIC-specific properties */
+        };
+    };
index a7236f7db4ec34d44c4e2268f76281ef8ed83189..e7f7cf72719ea884d48fff69620467ff2834913b 100644 (file)
@@ -50,6 +50,7 @@ properties:
           - enum:
               - allwinner,sun50i-a100-system-control
               - allwinner,sun50i-h6-system-control
+              - allwinner,sun55i-a523-system-control
           - const: allwinner,sun50i-a64-system-control
 
   reg:
diff --git a/Bindings/thermal/airoha,en7581-thermal.yaml b/Bindings/thermal/airoha,en7581-thermal.yaml
new file mode 100644 (file)
index 0000000..ca0242e
--- /dev/null
@@ -0,0 +1,48 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/thermal/airoha,en7581-thermal.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Airoha EN7581 Thermal Sensor and Monitor
+
+maintainers:
+  - Christian Marangi <ansuelsmth@gmail.com>
+
+properties:
+  compatible:
+    const: airoha,en7581-thermal
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  airoha,chip-scu:
+    description: phandle to the chip SCU syscon
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+  '#thermal-sensor-cells':
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - airoha,chip-scu
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    thermal-sensor@1efbd800 {
+        compatible = "airoha,en7581-thermal";
+        reg = <0x1efbd000 0xd5c>;
+        interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+        airoha,chip-scu = <&chip_scu>;
+
+        #thermal-sensor-cells = <0>;
+    };
index f9d8012c8cf513db94787d44b885c622f62fcf56..0e653bbe9884953b58c4d8569b8d096db47fd54f 100644 (file)
@@ -39,6 +39,7 @@ properties:
       - description: v1 of TSENS
         items:
           - enum:
+              - qcom,ipq5018-tsens
               - qcom,msm8937-tsens
               - qcom,msm8956-tsens
               - qcom,msm8976-tsens
@@ -251,6 +252,7 @@ allOf:
         compatible:
           contains:
             enum:
+              - qcom,ipq5018-tsens
               - qcom,ipq8064-tsens
               - qcom,msm8960-tsens
               - qcom,tsens-v0_1
diff --git a/Bindings/timer/altr,timer-1.0.txt b/Bindings/timer/altr,timer-1.0.txt
deleted file mode 100644 (file)
index e698e34..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-Altera Timer
-
-Required properties:
-
-- compatible : should be "altr,timer-1.0"
-- reg : Specifies base physical address and size of the registers.
-- interrupts : Should contain the timer interrupt number
-- clock-frequency : The frequency of the clock that drives the counter, in Hz.
-
-Example:
-
-timer {
-       compatible = "altr,timer-1.0";
-       reg = <0x00400000 0x00000020>;
-       interrupt-parent = <&cpu>;
-       interrupts = <11>;
-       clock-frequency = <125000000>;
-};
diff --git a/Bindings/timer/altr,timer-1.0.yaml b/Bindings/timer/altr,timer-1.0.yaml
new file mode 100644 (file)
index 0000000..576260c
--- /dev/null
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/altr,timer-1.0.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Altera Timer
+
+maintainers:
+  - Dinh Nguyen <dinguyen@kernel.org>
+
+properties:
+  compatible:
+    const: altr,timer-1.0
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clock-frequency:
+    description: Frequency of the clock that drives the counter, in Hz.
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@400000 {
+        compatible = "altr,timer-1.0";
+        reg = <0x00400000 0x00000020>;
+        interrupts = <11>;
+        clock-frequency = <125000000>;
+    };
diff --git a/Bindings/timer/arm,mps2-timer.txt b/Bindings/timer/arm,mps2-timer.txt
deleted file mode 100644 (file)
index 48f84d7..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-ARM MPS2 timer
-
-The MPS2 platform has simple general-purpose 32 bits timers.
-
-Required properties:
-- compatible   : Should be "arm,mps2-timer"
-- reg          : Address and length of the register set
-- interrupts   : Reference to the timer interrupt
-
-Required clocking property, have to be one of:
-- clocks         : The input clock of the timer
-- clock-frequency : The rate in HZ in input of the ARM MPS2 timer
-
-Examples:
-
-timer1: mps2-timer@40000000 {
-       compatible = "arm,mps2-timer";
-       reg = <0x40000000 0x1000>;
-       interrupts = <8>;
-       clocks = <&sysclk>;
-};
-
-timer2: mps2-timer@40001000 {
-       compatible = "arm,mps2-timer";
-       reg = <0x40001000 0x1000>;
-       interrupts = <9>;
-       clock-frequency = <25000000>;
-};
diff --git a/Bindings/timer/arm,mps2-timer.yaml b/Bindings/timer/arm,mps2-timer.yaml
new file mode 100644 (file)
index 0000000..64c6aed
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/arm,mps2-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ARM MPS2 timer
+
+maintainers:
+  - Vladimir Murzin <vladimir.murzin@arm.com>
+
+description:
+  The MPS2 platform has simple general-purpose 32 bits timers.
+
+properties:
+  compatible:
+    const: arm,mps2-timer
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-frequency:
+    description: Rate in Hz of the timer input clock
+
+oneOf:
+  - required: [clocks]
+  - required: [clock-frequency]
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@40000000 {
+        compatible = "arm,mps2-timer";
+        reg = <0x40000000 0x1000>;
+        interrupts = <8>;
+        clocks = <&sysclk>;
+    };
diff --git a/Bindings/timer/cirrus,clps711x-timer.txt b/Bindings/timer/cirrus,clps711x-timer.txt
deleted file mode 100644 (file)
index d4c62e7..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-* Cirrus Logic CLPS711X Timer Counter
-
-Required properties:
-- compatible: Shall contain "cirrus,ep7209-timer".
-- reg       : Address and length of the register set.
-- interrupts: The interrupt number of the timer.
-- clocks    : phandle of timer reference clock.
-
-Note: Each timer should have an alias correctly numbered in "aliases" node.
-
-Example:
-       aliases {
-               timer0 = &timer1;
-               timer1 = &timer2;
-       };
-
-       timer1: timer@80000300 {
-               compatible = "cirrus,ep7312-timer", "cirrus,ep7209-timer";
-               reg = <0x80000300 0x4>;
-               interrupts = <8>;
-               clocks = <&clks 5>;
-       };
-
-       timer2: timer@80000340 {
-               compatible = "cirrus,ep7312-timer", "cirrus,ep7209-timer";
-               reg = <0x80000340 0x4>;
-               interrupts = <9>;
-               clocks = <&clks 6>;
-       };
diff --git a/Bindings/timer/cirrus,clps711x-timer.yaml b/Bindings/timer/cirrus,clps711x-timer.yaml
new file mode 100644 (file)
index 0000000..507b777
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/cirrus,clps711x-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cirrus Logic CLPS711X Timer Counter
+
+maintainers:
+  - Alexander Shiyan <shc_work@mail.ru>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - enum:
+              - cirrus,ep7312-timer
+          - const: cirrus,ep7209-timer
+      - const: cirrus,ep7209-timer
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@80000300 {
+        compatible = "cirrus,ep7312-timer", "cirrus,ep7209-timer";
+        reg = <0x80000300 0x4>;
+        interrupts = <8>;
+        clocks = <&clks 5>;
+    };
diff --git a/Bindings/timer/cnxt,cx92755-timer.yaml b/Bindings/timer/cnxt,cx92755-timer.yaml
new file mode 100644 (file)
index 0000000..8f1a5af
--- /dev/null
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/cnxt,cx92755-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Conexant Digicolor SoCs Timer Controller
+
+maintainers:
+  - Baruch Siach <baruch@tkos.co.il>
+
+properties:
+  compatible:
+    const: cnxt,cx92755-timer
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    description: Contains 8 interrupts, one for each timer
+    items:
+      - description: interrupt for timer 0
+      - description: interrupt for timer 1
+      - description: interrupt for timer 2
+      - description: interrupt for timer 3
+      - description: interrupt for timer 4
+      - description: interrupt for timer 5
+      - description: interrupt for timer 6
+      - description: interrupt for timer 7
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@f0000fc0 {
+      compatible = "cnxt,cx92755-timer";
+      reg = <0xf0000fc0 0x40>;
+      interrupts = <19>, <31>, <34>, <35>, <52>, <53>, <54>, <55>;
+      clocks = <&main_clk>;
+    };
diff --git a/Bindings/timer/csky,gx6605s-timer.txt b/Bindings/timer/csky,gx6605s-timer.txt
deleted file mode 100644 (file)
index 6b04344..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-=================
-gx6605s SOC Timer
-=================
-
-The timer is used in gx6605s soc as system timer and the driver
-contain clk event and clk source.
-
-==============================
-timer node bindings definition
-==============================
-
-       Description: Describes gx6605s SOC timer
-
-       PROPERTIES
-
-       - compatible
-               Usage: required
-               Value type: <string>
-               Definition: must be "csky,gx6605s-timer"
-       - reg
-               Usage: required
-               Value type: <u32 u32>
-               Definition: <phyaddr size> in soc from cpu view
-       - clocks
-               Usage: required
-               Value type: phandle + clock specifier cells
-               Definition: must be input clk node
-       - interrupt
-               Usage: required
-               Value type: <u32>
-               Definition: must be timer irq num defined by soc
-
-Examples:
----------
-
-       timer0: timer@20a000 {
-               compatible = "csky,gx6605s-timer";
-               reg = <0x0020a000 0x400>;
-               clocks = <&dummy_apb_clk>;
-               interrupts = <10>;
-               interrupt-parent = <&intc>;
-       };
diff --git a/Bindings/timer/csky,gx6605s-timer.yaml b/Bindings/timer/csky,gx6605s-timer.yaml
new file mode 100644 (file)
index 0000000..888fc81
--- /dev/null
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/csky,gx6605s-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: gx6605s SOC Timer
+
+maintainers:
+  - Guo Ren <guoren@kernel.org>
+
+properties:
+  compatible:
+    const: csky,gx6605s-timer
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@20a000 {
+        compatible = "csky,gx6605s-timer";
+        reg = <0x0020a000 0x400>;
+        clocks = <&dummy_apb_clk>;
+        interrupts = <10>;
+    };
diff --git a/Bindings/timer/csky,mptimer.txt b/Bindings/timer/csky,mptimer.txt
deleted file mode 100644 (file)
index f5c7e99..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-============================
-C-SKY Multi-processors Timer
-============================
-
-C-SKY multi-processors timer is designed for C-SKY SMP system and the
-regs is accessed by cpu co-processor 4 registers with mtcr/mfcr.
-
- - PTIM_CTLR "cr<0, 14>" Control reg to start reset timer.
- - PTIM_TSR  "cr<1, 14>" Interrupt cleanup status reg.
- - PTIM_CCVR "cr<3, 14>" Current counter value reg.
- - PTIM_LVR  "cr<6, 14>" Window value reg to trigger next event.
-
-==============================
-timer node bindings definition
-==============================
-
-       Description: Describes SMP timer
-
-       PROPERTIES
-
-       - compatible
-               Usage: required
-               Value type: <string>
-               Definition: must be "csky,mptimer"
-       - clocks
-               Usage: required
-               Value type: <node>
-               Definition: must be input clk node
-       - interrupts
-               Usage: required
-               Value type: <u32>
-               Definition: must be timer irq num defined by soc
-
-Examples:
----------
-
-       timer: timer {
-               compatible = "csky,mptimer";
-               clocks = <&dummy_apb_clk>;
-               interrupts = <16>;
-               interrupt-parent = <&intc>;
-       };
diff --git a/Bindings/timer/csky,mptimer.yaml b/Bindings/timer/csky,mptimer.yaml
new file mode 100644 (file)
index 0000000..12cc528
--- /dev/null
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/csky,mptimer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: C-SKY Multi-processors Timer
+
+maintainers:
+  - Flavio Suligoi <f.suligoi@asem.it>
+  - Guo Ren <guoren@kernel.org>
+
+description: |
+  C-SKY multi-processors timer is designed for C-SKY SMP system and the regs are
+  accessed by cpu co-processor 4 registers with mtcr/mfcr.
+
+   - PTIM_CTLR "cr<0, 14>" Control reg to start reset timer.
+   - PTIM_TSR  "cr<1, 14>" Interrupt cleanup status reg.
+   - PTIM_CCVR "cr<3, 14>" Current counter value reg.
+   - PTIM_LVR  "cr<6, 14>" Window value reg to trigger next event.
+
+properties:
+  compatible:
+    items:
+      - const: csky,mptimer
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    timer {
+        compatible = "csky,mptimer";
+        clocks = <&dummy_apb_clk>;
+        interrupts = <16>;
+    };
diff --git a/Bindings/timer/digicolor-timer.txt b/Bindings/timer/digicolor-timer.txt
deleted file mode 100644 (file)
index d1b659b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-Conexant Digicolor SoCs Timer Controller
-
-Required properties:
-
-- compatible : should be "cnxt,cx92755-timer"
-- reg : Specifies base physical address and size of the "Agent Communication"
-  timer registers
-- interrupts : Contains 8 interrupts, one for each timer
-- clocks: phandle to the main clock
-
-Example:
-
-       timer@f0000fc0 {
-               compatible = "cnxt,cx92755-timer";
-               reg = <0xf0000fc0 0x40>;
-               interrupts = <19>, <31>, <34>, <35>, <52>, <53>, <54>, <55>;
-               clocks = <&main_clk>;
-       };
diff --git a/Bindings/timer/econet,en751221-timer.yaml b/Bindings/timer/econet,en751221-timer.yaml
new file mode 100644 (file)
index 0000000..c1e7c2b
--- /dev/null
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/econet,en751221-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: EcoNet EN751221 High Precision Timer (HPT)
+
+maintainers:
+  - Caleb James DeLisle <cjd@cjdns.fr>
+
+description:
+  The EcoNet High Precision Timer (HPT) is a timer peripheral found in various
+  EcoNet SoCs, including the EN751221 and EN751627 families. It provides per-VPE
+  count/compare registers and a per-CPU control register, with a single interrupt
+  line using a percpu-devid interrupt mechanism.
+
+properties:
+  compatible:
+    oneOf:
+      - const: econet,en751221-timer
+      - items:
+          - const: econet,en751627-timer
+          - const: econet,en751221-timer
+
+  reg:
+    minItems: 1
+    maxItems: 2
+
+  interrupts:
+    maxItems: 1
+    description: A percpu-devid timer interrupt shared across CPUs.
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: econet,en751627-timer
+    then:
+      properties:
+        reg:
+          items:
+            - description: VPE timers 0 and 1
+            - description: VPE timers 2 and 3
+    else:
+      properties:
+        reg:
+          items:
+            - description: VPE timers 0 and 1
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@1fbf0400 {
+        compatible = "econet,en751627-timer", "econet,en751221-timer";
+        reg = <0x1fbf0400 0x100>, <0x1fbe0000 0x100>;
+        interrupt-parent = <&intc>;
+        interrupts = <30>;
+        clocks = <&hpt_clock>;
+    };
+  - |
+    timer@1fbf0400 {
+        compatible = "econet,en751221-timer";
+        reg = <0x1fbe0400 0x100>;
+        interrupt-parent = <&intc>;
+        interrupts = <30>;
+        clocks = <&hpt_clock>;
+    };
+...
diff --git a/Bindings/timer/ezchip,nps400-timer.yaml b/Bindings/timer/ezchip,nps400-timer.yaml
new file mode 100644 (file)
index 0000000..317c501
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ezchip,nps400-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: EZChip NPS400 Timers
+
+maintainers:
+  - Noam Camus <noamca@mellanox.com>
+
+properties:
+  compatible:
+    enum:
+      - ezchip,nps400-timer0
+      - ezchip,nps400-timer1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+
+additionalProperties: false
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: ezchip,nps400-timer0
+    then:
+      required: [ interrupts ]
+
+examples:
+  - |
+    timer {
+        compatible = "ezchip,nps400-timer0";
+        interrupts = <3>;
+        clocks = <&sysclk>;
+    };
diff --git a/Bindings/timer/ezchip,nps400-timer0.txt b/Bindings/timer/ezchip,nps400-timer0.txt
deleted file mode 100644 (file)
index e3cfce8..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-NPS Network Processor
-
-Required properties:
-
-- compatible : should be "ezchip,nps400-timer0"
-
-Clocks required for compatible = "ezchip,nps400-timer0":
-- interrupts : The interrupt of the first timer
-- clocks : Must contain a single entry describing the clock input
-
-Example:
-
-timer {
-       compatible = "ezchip,nps400-timer0";
-       interrupts = <3>;
-       clocks = <&sysclk>;
-};
diff --git a/Bindings/timer/ezchip,nps400-timer1.txt b/Bindings/timer/ezchip,nps400-timer1.txt
deleted file mode 100644 (file)
index c0ab419..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-NPS Network Processor
-
-Required properties:
-
-- compatible : should be "ezchip,nps400-timer1"
-
-Clocks required for compatible = "ezchip,nps400-timer1":
-- clocks : Must contain a single entry describing the clock input
-
-Example:
-
-timer {
-       compatible = "ezchip,nps400-timer1";
-       clocks = <&sysclk>;
-};
diff --git a/Bindings/timer/fsl,gtm.txt b/Bindings/timer/fsl,gtm.txt
deleted file mode 100644 (file)
index fc1c571..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-* Freescale General-purpose Timers Module
-
-Required properties:
-  - compatible : should be
-    "fsl,<chip>-gtm", "fsl,gtm" for SOC GTMs
-    "fsl,<chip>-qe-gtm", "fsl,qe-gtm", "fsl,gtm" for QE GTMs
-    "fsl,<chip>-cpm2-gtm", "fsl,cpm2-gtm", "fsl,gtm" for CPM2 GTMs
-  - reg : should contain gtm registers location and length (0x40).
-  - interrupts : should contain four interrupts.
-  - clock-frequency : specifies the frequency driving the timer.
-
-Example:
-
-timer@500 {
-       compatible = "fsl,mpc8360-gtm", "fsl,gtm";
-       reg = <0x500 0x40>;
-       interrupts = <90 8 78 8 84 8 72 8>;
-       interrupt-parent = <&ipic>;
-       /* filled by u-boot */
-       clock-frequency = <0>;
-};
-
-timer@440 {
-       compatible = "fsl,mpc8360-qe-gtm", "fsl,qe-gtm", "fsl,gtm";
-       reg = <0x440 0x40>;
-       interrupts = <12 13 14 15>;
-       interrupt-parent = <&qeic>;
-       /* filled by u-boot */
-       clock-frequency = <0>;
-};
diff --git a/Bindings/timer/fsl,gtm.yaml b/Bindings/timer/fsl,gtm.yaml
new file mode 100644 (file)
index 0000000..1f35f1e
--- /dev/null
@@ -0,0 +1,83 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/fsl,gtm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale General-purpose Timers Module
+
+maintainers:
+  - J. Neuschäfer <j.ne@posteo.net>
+
+properties:
+  compatible:
+    oneOf:
+      # for SoC GTMs
+      - items:
+          - enum:
+              - fsl,mpc8308-gtm
+              - fsl,mpc8313-gtm
+              - fsl,mpc8315-gtm
+              - fsl,mpc8360-gtm
+          - const: fsl,gtm
+
+      # for QE GTMs
+      - items:
+          - enum:
+              - fsl,mpc8360-qe-gtm
+              - fsl,mpc8569-qe-gtm
+          - const: fsl,qe-gtm
+          - const: fsl,gtm
+
+      # for CPM2 GTMs (no known examples)
+      - items:
+          # - enum:
+          #     - fsl,<chip>-cpm2-gtm
+          - const: fsl,cpm2-gtm
+          - const: fsl,gtm
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Interrupt for timer 1 (e.g. GTM1 or GTM5)
+      - description: Interrupt for timer 2 (e.g. GTM2 or GTM6)
+      - description: Interrupt for timer 3 (e.g. GTM3 or GTM7)
+      - description: Interrupt for timer 4 (e.g. GTM4 or GTM8)
+
+  clock-frequency: true
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clock-frequency
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    timer@500 {
+        compatible = "fsl,mpc8360-gtm", "fsl,gtm";
+        reg = <0x500 0x40>;
+        interrupts = <90 IRQ_TYPE_LEVEL_LOW>,
+                     <78 IRQ_TYPE_LEVEL_LOW>,
+                     <84 IRQ_TYPE_LEVEL_LOW>,
+                     <72 IRQ_TYPE_LEVEL_LOW>;
+        /* filled by u-boot */
+        clock-frequency = <0>;
+    };
+
+  - |
+    timer@440 {
+        compatible = "fsl,mpc8360-qe-gtm", "fsl,qe-gtm", "fsl,gtm";
+        reg = <0x440 0x40>;
+        interrupts = <12>, <13>, <14>, <15>;
+        /* filled by u-boot */
+        clock-frequency = <0>;
+    };
+
+...
diff --git a/Bindings/timer/fsl,vf610-pit.yaml b/Bindings/timer/fsl,vf610-pit.yaml
new file mode 100644 (file)
index 0000000..bee2c35
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/fsl,vf610-pit.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Freescale Periodic Interrupt Timer (PIT)
+
+maintainers:
+  - Frank Li <Frank.Li@nxp.com>
+
+description:
+  The PIT module is an array of timers that can be used to raise interrupts
+  and trigger DMA channels.
+
+properties:
+  compatible:
+    enum:
+      - fsl,vf610-pit
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: pit
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/vf610-clock.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    timer@40037000 {
+        compatible = "fsl,vf610-pit";
+        reg = <0x40037000 0x1000>;
+        interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clks VF610_CLK_PIT>;
+        clock-names = "pit";
+    };
diff --git a/Bindings/timer/img,pistachio-gptimer.txt b/Bindings/timer/img,pistachio-gptimer.txt
deleted file mode 100644 (file)
index 7afce80..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-* Pistachio general-purpose timer based clocksource
-
-Required properties:
- - compatible: "img,pistachio-gptimer".
- - reg: Address range of the timer registers.
- - interrupts: An interrupt for each of the four timers
- - clocks: Should contain a clock specifier for each entry in clock-names
- - clock-names: Should contain the following entries:
-                "sys", interface clock
-                "slow", slow counter clock
-                "fast", fast counter clock
- - img,cr-periph: Must contain a phandle to the peripheral control
-                 syscon node.
-
-Example:
-       timer: timer@18102000 {
-               compatible = "img,pistachio-gptimer";
-               reg = <0x18102000 0x100>;
-               interrupts = <GIC_SHARED 60 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SHARED 61 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SHARED 62 IRQ_TYPE_LEVEL_HIGH>,
-                            <GIC_SHARED 63 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&clk_periph PERIPH_CLK_COUNTER_FAST>,
-                        <&clk_periph PERIPH_CLK_COUNTER_SLOW>,
-                        <&cr_periph SYS_CLK_TIMER>;
-               clock-names = "fast", "slow", "sys";
-               img,cr-periph = <&cr_periph>;
-       };
diff --git a/Bindings/timer/img,pistachio-gptimer.yaml b/Bindings/timer/img,pistachio-gptimer.yaml
new file mode 100644 (file)
index 0000000..a8654bc
--- /dev/null
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/img,pistachio-gptimer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Pistachio general-purpose timer
+
+maintainers:
+  - Ezequiel Garcia <ezequiel.garcia@imgtec.com>
+
+properties:
+  compatible:
+    const: img,pistachio-gptimer
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Timer0 interrupt
+      - description: Timer1 interrupt
+      - description: Timer2 interrupt
+      - description: Timer3 interrupt
+
+  clocks:
+    items:
+      - description: Fast counter clock
+      - description: Slow counter clock
+      - description: Interface clock
+
+  clock-names:
+    items:
+      - const: fast
+      - const: slow
+      - const: sys
+
+  img,cr-periph:
+    description: Peripheral control syscon phandle
+    $ref: /schemas/types.yaml#/definitions/phandle
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+  - img,cr-periph
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/mips-gic.h>
+    #include <dt-bindings/clock/pistachio-clk.h>
+
+    timer@18102000 {
+        compatible = "img,pistachio-gptimer";
+        reg = <0x18102000 0x100>;
+        interrupts = <GIC_SHARED 60 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SHARED 61 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SHARED 62 IRQ_TYPE_LEVEL_HIGH>,
+                     <GIC_SHARED 63 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clk_periph PERIPH_CLK_COUNTER_FAST>,
+                 <&clk_periph PERIPH_CLK_COUNTER_SLOW>,
+                 <&cr_periph SYS_CLK_TIMER>;
+        clock-names = "fast", "slow", "sys";
+        img,cr-periph = <&cr_periph>;
+    };
diff --git a/Bindings/timer/jcore,pit.txt b/Bindings/timer/jcore,pit.txt
deleted file mode 100644 (file)
index af5dd35..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-J-Core Programmable Interval Timer and Clocksource
-
-Required properties:
-
-- compatible: Must be "jcore,pit".
-
-- reg: Memory region(s) for timer/clocksource registers. For SMP,
-  there should be one region per cpu, indexed by the sequential,
-  zero-based hardware cpu number.
-
-- interrupts: An interrupt to assign for the timer. The actual pit
-  core is integrated with the aic and allows the timer interrupt
-  assignment to be programmed by software, but this property is
-  required in order to reserve an interrupt number that doesn't
-  conflict with other devices.
-
-
-Example:
-
-timer@200 {
-       compatible = "jcore,pit";
-       reg = < 0x200 0x30 0x500 0x30 >;
-       interrupts = < 0x48 >;
-};
diff --git a/Bindings/timer/jcore,pit.yaml b/Bindings/timer/jcore,pit.yaml
new file mode 100644 (file)
index 0000000..9e6e25b
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/jcore,pit.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: J-Core Programmable Interval Timer and Clocksource
+
+maintainers:
+  - Rich Felker <dalias@libc.org>
+
+properties:
+  compatible:
+    const: jcore,pit
+
+  reg:
+    description:
+      Memory region(s) for timer/clocksource registers. For SMP, there should be
+      one region per cpu, indexed by the sequential, zero-based hardware cpu
+      number.
+
+  interrupts:
+    description:
+      An interrupt to assign for the timer. The actual pit core is integrated
+      with the aic and allows the timer interrupt assignment to be programmed by
+      software, but this property is required in order to reserve an interrupt
+      number that doesn't conflict with other devices.
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@200 {
+        compatible = "jcore,pit";
+        reg = <0x200 0x30 0x500 0x30>;
+        interrupts = <0x48>;
+    };
diff --git a/Bindings/timer/lsi,zevio-timer.txt b/Bindings/timer/lsi,zevio-timer.txt
deleted file mode 100644 (file)
index b2d07ad..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-TI-NSPIRE timer
-
-Required properties:
-
-- compatible : should be "lsi,zevio-timer".
-- reg : The physical base address and size of the timer (always first).
-- clocks: phandle to the source clock.
-
-Optional properties:
-
-- interrupts : The interrupt number of the first timer.
-- reg : The interrupt acknowledgement registers
-       (always after timer base address)
-
-If any of the optional properties are not given, the timer is added as a
-clock-source only.
-
-Example:
-
-timer {
-       compatible = "lsi,zevio-timer";
-       reg = <0x900D0000 0x1000>, <0x900A0020 0x8>;
-       interrupts = <19>;
-       clocks = <&timer_clk>;
-};
-
-Example (no clock-events):
-
-timer {
-       compatible = "lsi,zevio-timer";
-       reg = <0x900D0000 0x1000>;
-       clocks = <&timer_clk>;
-};
diff --git a/Bindings/timer/lsi,zevio-timer.yaml b/Bindings/timer/lsi,zevio-timer.yaml
new file mode 100644 (file)
index 0000000..358455d
--- /dev/null
@@ -0,0 +1,56 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/lsi,zevio-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI-NSPIRE timer
+
+maintainers:
+  - Daniel Tang <dt.tangr@gmail.com>
+
+properties:
+  compatible:
+    const: lsi,zevio-timer
+
+  reg:
+    minItems: 1
+    items:
+      - description: Timer registers
+      - description: Interrupt acknowledgement registers (optional)
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - clocks
+
+allOf:
+  - if:
+      required: [ interrupts ]
+    then:
+      properties:
+        reg:
+          minItems: 2
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@900d0000 {
+        compatible = "lsi,zevio-timer";
+        reg = <0x900D0000 0x1000>, <0x900A0020 0x8>;
+        interrupts = <19>;
+        clocks = <&timer_clk>;
+    };
+  - |
+    timer@900d0000 {
+        compatible = "lsi,zevio-timer";
+        reg = <0x900D0000 0x1000>;
+        clocks = <&timer_clk>;
+    };
diff --git a/Bindings/timer/marvell,armada-370-timer.yaml b/Bindings/timer/marvell,armada-370-timer.yaml
new file mode 100644 (file)
index 0000000..bc0677f
--- /dev/null
@@ -0,0 +1,88 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/marvell,armada-370-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Armada 370, 375, 380 and XP Timers
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: marvell,armada-380-timer
+          - const: marvell,armada-xp-timer
+      - items:
+          - const: marvell,armada-375-timer
+          - const: marvell,armada-370-timer
+      - enum:
+          - marvell,armada-370-timer
+          - marvell,armada-xp-timer
+
+  reg:
+    items:
+      - description: Global timer registers
+      - description: Local/private timer registers
+
+  interrupts:
+    items:
+      - description: Global timer interrupt 0
+      - description: Global timer interrupt 1
+      - description: Global timer interrupt 2
+      - description: Global timer interrupt 3
+      - description: First private timer interrupt
+      - description: Second private timer interrupt
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    items:
+      - const: nbclk
+      - const: fixed
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+additionalProperties: false
+
+allOf:
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - marvell,armada-375-timer
+              - marvell,armada-xp-timer
+    then:
+      properties:
+        clocks:
+          minItems: 2
+        clock-names:
+          minItems: 2
+      required:
+        - clock-names
+    else:
+      properties:
+        clocks:
+          maxItems: 1
+        clock-names:
+          maxItems: 1
+
+examples:
+  - |
+    timer@20300 {
+        compatible = "marvell,armada-xp-timer";
+        reg = <0x20300 0x30>, <0x21040 0x30>;
+        interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
+        clocks = <&coreclk 2>, <&refclk>;
+        clock-names = "nbclk", "fixed";
+    };
diff --git a/Bindings/timer/marvell,armada-370-xp-timer.txt b/Bindings/timer/marvell,armada-370-xp-timer.txt
deleted file mode 100644 (file)
index e9c78ce..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-Marvell Armada 370 and Armada XP Timers
----------------------------------------
-
-Required properties:
-- compatible: Should be one of the following
-              "marvell,armada-370-timer",
-             "marvell,armada-375-timer",
-             "marvell,armada-xp-timer".
-- interrupts: Should contain the list of Global Timer interrupts and
-  then local timer interrupts
-- reg: Should contain location and length for timers register. First
-  pair for the Global Timer registers, second pair for the
-  local/private timers.
-
-Clocks required for compatible = "marvell,armada-370-timer":
-- clocks : Must contain a single entry describing the clock input
-
-Clocks required for compatibles = "marvell,armada-xp-timer",
-                                 "marvell,armada-375-timer":
-- clocks : Must contain an entry for each entry in clock-names.
-- clock-names : Must include the following entries:
-  "nbclk" (L2/coherency fabric clock),
-  "fixed" (Reference 25 MHz fixed-clock).
-
-Examples:
-
-- Armada 370:
-
-       timer {
-               compatible = "marvell,armada-370-timer";
-               reg = <0x20300 0x30>, <0x21040 0x30>;
-               interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
-               clocks = <&coreclk 2>;
-       };
-
-- Armada XP:
-
-       timer {
-               compatible = "marvell,armada-xp-timer";
-               reg = <0x20300 0x30>, <0x21040 0x30>;
-               interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
-               clocks = <&coreclk 2>, <&refclk>;
-               clock-names = "nbclk", "fixed";
-       };
diff --git a/Bindings/timer/marvell,orion-timer.txt b/Bindings/timer/marvell,orion-timer.txt
deleted file mode 100644 (file)
index cd1a0c2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Marvell Orion SoC timer
-
-Required properties:
-- compatible: shall be "marvell,orion-timer"
-- reg: base address of the timer register starting with TIMERS CONTROL register
-- interrupts: should contain the interrupts for Timer0 and Timer1
-- clocks: phandle of timer reference clock (tclk)
-
-Example:
-       timer: timer {
-               compatible = "marvell,orion-timer";
-               reg = <0x20300 0x20>;
-               interrupt-parent = <&bridge_intc>;
-               interrupts = <1>, <2>;
-               clocks = <&core_clk 0>;
-       };
diff --git a/Bindings/timer/marvell,orion-timer.yaml b/Bindings/timer/marvell,orion-timer.yaml
new file mode 100644 (file)
index 0000000..f973aff
--- /dev/null
@@ -0,0 +1,43 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/marvell,orion-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell Orion SoC timer
+
+maintainers:
+  - Andrew Lunn <andrew@lunn.ch>
+  - Gregory Clement <gregory.clement@bootlin.com>
+
+properties:
+  compatible:
+    const: marvell,orion-timer
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+  interrupts:
+    items:
+      - description: Timer0 interrupt
+      - description: Timer1 interrupt
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@20300 {
+        compatible = "marvell,orion-timer";
+        reg = <0x20300 0x20>;
+        interrupts = <1>, <2>;
+        clocks = <&core_clk 0>;
+    };
diff --git a/Bindings/timer/nxp,s32g2-stm.yaml b/Bindings/timer/nxp,s32g2-stm.yaml
new file mode 100644 (file)
index 0000000..b44b979
--- /dev/null
@@ -0,0 +1,64 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/nxp,s32g2-stm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP System Timer Module (STM)
+
+maintainers:
+  - Daniel Lezcano <daniel.lezcano@kernel.org>
+
+description:
+  The System Timer Module supports commonly required system and application
+  software timing functions. STM includes a 32-bit count-up timer and four
+  32-bit compare channels with a separate interrupt source for each channel.
+  The timer is driven by the STM module clock divided by an 8-bit prescale
+  value.
+
+properties:
+  compatible:
+    oneOf:
+      - const: nxp,s32g2-stm
+      - items:
+          - const: nxp,s32g3-stm
+          - const: nxp,s32g2-stm
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: Counter clock
+      - description: Module clock
+      - description: Register clock
+
+  clock-names:
+    items:
+      - const: counter
+      - const: module
+      - const: register
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+
+    timer@4011c000 {
+        compatible = "nxp,s32g2-stm";
+        reg = <0x4011c000 0x3000>;
+        interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+        clocks = <&clks 0x3b>, <&clks 0x3c>, <&clks 0x3c>;
+        clock-names = "counter", "module", "register";
+    };
index 9ba858f094abd7bee213552dcb31673218b1491f..0983c1efec80ad8be06d93dbe421a26e69063669 100644 (file)
@@ -26,6 +26,7 @@ properties:
           - renesas,r9a07g043-ostm # RZ/G2UL and RZ/Five
           - renesas,r9a07g044-ostm # RZ/G2{L,LC}
           - renesas,r9a07g054-ostm # RZ/V2L
+          - renesas,r9a09g056-ostm # RZ/V2N
           - renesas,r9a09g057-ostm # RZ/V2H(P)
       - const: renesas,ostm        # Generic
 
@@ -54,12 +55,11 @@ required:
 if:
   properties:
     compatible:
-      contains:
-        enum:
-          - renesas,r9a07g043-ostm
-          - renesas,r9a07g044-ostm
-          - renesas,r9a07g054-ostm
-          - renesas,r9a09g057-ostm
+      not:
+        contains:
+          enum:
+            - renesas,r7s72100-ostm
+            - renesas,r7s9210-ostm
 then:
   required:
     - resets
index 653e2e0ca878f4f825c5dab7c29d9db0a17e7955..d85a1a088b35dabc0aa202475b926302705c4cf1 100644 (file)
@@ -30,6 +30,7 @@ properties:
       - items:
           - enum:
               - canaan,k210-clint       # Canaan Kendryte K210
+              - eswin,eic7700-clint     # ESWIN EIC7700
               - sifive,fu540-c000-clint # SiFive FU540
               - spacemit,k1-clint       # SpacemiT K1
               - starfive,jh7100-clint   # StarFive JH7100
diff --git a/Bindings/timer/snps,arc-timer.txt b/Bindings/timer/snps,arc-timer.txt
deleted file mode 100644 (file)
index b02ab0a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-Synopsys ARC Local Timer with Interrupt Capabilities
-- Found on all ARC CPUs (ARC700/ARCHS)
-- Can be optionally programmed to interrupt on Limit
-- Two identical copies TIMER0 and TIMER1 exist in ARC cores and historically
-  TIMER0 used as clockevent provider (true for all ARC cores)
-  TIMER1 used for clocksource (mandatory for ARC700, optional for ARC HS)
-
-Required properties:
-
-- compatible : should be "snps,arc-timer"
-- interrupts : single Interrupt going into parent intc
-              (16 for ARCHS cores, 3 for ARC700 cores)
-- clocks     : phandle to the source clock
-
-Example:
-
-       timer0 {
-               compatible = "snps,arc-timer";
-               interrupts = <3>;
-               interrupt-parent = <&core_intc>;
-               clocks = <&core_clk>;
-       };
-
-       timer1 {
-               compatible = "snps,arc-timer";
-               clocks = <&core_clk>;
-       };
diff --git a/Bindings/timer/snps,arc-timer.yaml b/Bindings/timer/snps,arc-timer.yaml
new file mode 100644 (file)
index 0000000..0d1e37d
--- /dev/null
@@ -0,0 +1,45 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/snps,arc-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys ARC Local Timer
+
+maintainers:
+  - Vineet Gupta <vgupta@synopsys.com>
+
+description: >
+  Synopsys ARC Local Timer with Interrupt Capabilities
+
+    - Found on all ARC CPUs (ARC700/ARCHS)
+    - Can be optionally programmed to interrupt on Limit
+    - Two identical copies TIMER0 and TIMER1 exist in ARC cores and historically
+      TIMER0 used as clockevent provider (true for all ARC cores)
+      TIMER1 used for clocksource (mandatory for ARC700, optional for ARC HS)
+
+properties:
+  compatible:
+    const: snps,arc-timer
+
+  interrupts:
+    maxItems: 1
+    description: A single timer interrupt going into the parent interrupt controller.
+      Use <16> for ARCHS cores, <3> for ARC700 cores.
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    timer0 {
+        compatible = "snps,arc-timer";
+        interrupts = <3>;
+        clocks = <&core_clk>;
+    };
diff --git a/Bindings/timer/snps,archs-gfrc.txt b/Bindings/timer/snps,archs-gfrc.txt
deleted file mode 100644 (file)
index b6cd1b3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Synopsys ARC Free Running 64-bit Global Timer for ARC HS CPUs
-- clocksource provider for SMP SoC
-
-Required properties:
-
-- compatible : should be "snps,archs-gfrc"
-- clocks     : phandle to the source clock
-
-Example:
-
-       gfrc {
-               compatible = "snps,archs-gfrc";
-               clocks = <&core_clk>;
-       };
diff --git a/Bindings/timer/snps,archs-gfrc.yaml b/Bindings/timer/snps,archs-gfrc.yaml
new file mode 100644 (file)
index 0000000..fb16f4a
--- /dev/null
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/snps,archs-gfrc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys ARC Free Running 64-bit Global Timer for ARC HS CPUs
+
+maintainers:
+  - Vineet Gupta <vgupta@synopsys.com>
+
+properties:
+  compatible:
+    const: snps,archs-gfrc
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    timer {
+        compatible = "snps,archs-gfrc";
+        clocks = <&core_clk>;
+    };
diff --git a/Bindings/timer/snps,archs-rtc.txt b/Bindings/timer/snps,archs-rtc.txt
deleted file mode 100644 (file)
index 47bd7a7..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-Synopsys ARC Free Running 64-bit Local Timer for ARC HS CPUs
-- clocksource provider for UP SoC
-
-Required properties:
-
-- compatible : should be "snps,archs-rtc"
-- clocks     : phandle to the source clock
-
-Example:
-
-       rtc {
-               compatible = "snps,arc-rtc";
-               clocks = <&core_clk>;
-       };
diff --git a/Bindings/timer/snps,archs-rtc.yaml b/Bindings/timer/snps,archs-rtc.yaml
new file mode 100644 (file)
index 0000000..7478810
--- /dev/null
@@ -0,0 +1,30 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/snps,archs-rtc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys ARC Free Running 64-bit Local Timer for ARC HS CPUs
+
+maintainers:
+  - Vineet Gupta <vgupta@synopsys.com>
+
+properties:
+  compatible:
+    const: snps,archs-rtc
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    rtc {
+      compatible = "snps,archs-rtc";
+      clocks = <&core_clk>;
+    };
diff --git a/Bindings/timer/socionext,milbeaut-timer.txt b/Bindings/timer/socionext,milbeaut-timer.txt
deleted file mode 100644 (file)
index ac44c4b..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Milbeaut SoCs Timer Controller
-
-Required properties:
-
-- compatible : should be "socionext,milbeaut-timer".
-- reg : Specifies base physical address and size of the registers.
-- interrupts : The interrupt of the first timer.
-- clocks: phandle to the input clk.
-
-Example:
-
-timer {
-       compatible = "socionext,milbeaut-timer";
-       reg = <0x1e000050 0x20>
-       interrupts = <0 91 4>;
-       clocks = <&clk 4>;
-};
diff --git a/Bindings/timer/socionext,milbeaut-timer.yaml b/Bindings/timer/socionext,milbeaut-timer.yaml
new file mode 100644 (file)
index 0000000..9ab72b7
--- /dev/null
@@ -0,0 +1,40 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/socionext,milbeaut-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Milbeaut SoCs Timer Controller
+
+maintainers:
+  - Sugaya Taichi <sugaya.taichi@socionext.com>
+
+properties:
+  compatible:
+    const: socionext,milbeaut-timer
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@1e000050 {
+        compatible = "socionext,milbeaut-timer";
+        reg = <0x1e000050 0x20>;
+        interrupts = <0 91 4>;
+        clocks = <&clk 4>;
+    };
diff --git a/Bindings/timer/st,spear-timer.txt b/Bindings/timer/st,spear-timer.txt
deleted file mode 100644 (file)
index b5238a0..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-* SPEAr ARM Timer
-
-** Timer node required properties:
-
-- compatible : Should be:
-       "st,spear-timer"
-- reg: Address range of the timer registers
-- interrupt: Should contain the timer interrupt number
-
-Example:
-
-       timer@f0000000 {
-               compatible = "st,spear-timer";
-               reg = <0xf0000000 0x400>;
-               interrupts = <2>;
-       };
diff --git a/Bindings/timer/st,spear-timer.yaml b/Bindings/timer/st,spear-timer.yaml
new file mode 100644 (file)
index 0000000..9f26b5f
--- /dev/null
@@ -0,0 +1,36 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/timer/st,spear-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: SPEAr ARM Timer
+
+maintainers:
+  - Viresh Kumar <vireshk@kernel.org>
+  - Shiraz Hashim <shiraz.linux.kernel@gmail.com>
+
+properties:
+  compatible:
+    const: st,spear-timer
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    timer@f0000000 {
+        compatible = "st,spear-timer";
+        reg = <0xf0000000 0x400>;
+        interrupts = <2>;
+    };
index 2e92bcdeb423abeca98da6868d5a116615c13bbc..4ed30efe40525f9e70b7f1b1dda1c833b0c3a40c 100644 (file)
@@ -14,6 +14,7 @@ properties:
     items:
       - enum:
           - sophgo,sg2042-aclint-mtimer
+          - sophgo,sg2044-aclint-mtimer
       - const: thead,c900-aclint-mtimer
 
   reg:
diff --git a/Bindings/timer/ti,keystone-timer.txt b/Bindings/timer/ti,keystone-timer.txt
deleted file mode 100644 (file)
index d3905a5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-* Device tree bindings for Texas instruments Keystone timer
-
-This document provides bindings for the 64-bit timer in the KeyStone
-architecture devices. The timer can be configured as a general-purpose 64-bit
-timer, dual general-purpose 32-bit timers. When configured as dual 32-bit
-timers, each half can operate in conjunction (chain mode) or independently
-(unchained mode) of each other.
-
-It is global timer is a free running up-counter and can generate interrupt
-when the counter reaches preset counter values.
-
-Documentation:
-https://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf
-
-Required properties:
-
-- compatible : should be "ti,keystone-timer".
-- reg : specifies base physical address and count of the registers.
-- interrupts : interrupt generated by the timer.
-- clocks : the clock feeding the timer clock.
-
-Example:
-
-timer@22f0000 {
-       compatible = "ti,keystone-timer";
-       reg = <0x022f0000 0x80>;
-       interrupts = <GIC_SPI 110 IRQ_TYPE_EDGE_RISING>;
-       clocks = <&clktimer15>;
-};
diff --git a/Bindings/timer/ti,keystone-timer.yaml b/Bindings/timer/ti,keystone-timer.yaml
new file mode 100644 (file)
index 0000000..1caf5ce
--- /dev/null
@@ -0,0 +1,63 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/ti,keystone-timer.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TI Keystone timer
+
+maintainers:
+  - Alexander A. Klimov <grandmaster@al2klimov.de>
+  - Ivan Khoronzhuk <ivan.khoronzhuk@ti.com>
+
+description: >
+  A 64-bit timer in the KeyStone architecture devices. The timer can be
+  configured as a general-purpose 64-bit timer, dual general-purpose 32-bit
+  timers. When configured as dual 32-bit timers, each half can operate in
+  conjunction (chain mode) or independently (unchained mode) of each other.
+
+  It is global timer is a free running up-counter and can generate interrupt
+  when the counter reaches preset counter values.
+
+  Documentation:
+  https://www.ti.com/lit/ug/sprugv5a/sprugv5a.pdf
+
+properties:
+  compatible:
+    const: ti,keystone-timer
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  interrupt-names:
+    items:
+      - const: irq
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: timer
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    timer@22f0000 {
+        compatible = "ti,keystone-timer";
+        reg = <0x022f0000 0x80>;
+        interrupts = <110 IRQ_TYPE_EDGE_RISING>;
+        clocks = <&clktimer15>;
+    };
index 8da408107e55483affedb7e697eb79e8c8902ed9..27930708ccd581e0cbda04d21c2598676e1812ab 100644 (file)
@@ -85,6 +85,8 @@ properties:
           - devantech,srf08
             # Devantech SRF10 ultrasonic ranger
           - devantech,srf10
+            # DFRobot SEN0322 oxygen sensor
+          - dfrobot,sen0322
             # DH electronics GmbH on-board CPLD trivial SPI device
           - dh,dhcom-board
             # DA9053: flexible system level PMIC with multicore support
@@ -173,6 +175,8 @@ properties:
           - maxim,ds3502
             # Temperature Sensor, I2C interface
           - maxim,max1619
+            # Digital temperature sensor with 0.1°C accuracy
+          - maxim,max30208
             # 3-Channel Remote Temperature Sensor
           - maxim,max31730
             # 10-bit 10 kOhm linear programmable voltage divider
@@ -293,8 +297,6 @@ properties:
           - mps,mp5990
             # Monolithic Power Systems Inc. digital step-down converter mp9941
           - mps,mp9941
-            # Monolithic Power Systems Inc. synchronous step-down converter mpq8785
-          - mps,mpq8785
             # Temperature sensor with integrated fan control
           - national,lm63
             # Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor
@@ -343,6 +345,8 @@ properties:
           - sensortek,stk8ba50
             # SGX Sensortech VZ89X Sensors
           - sgx,vz89x
+            # SGX Sensortech VZ89TE Sensors
+          - sgx,vz89te
             # Silicon Labs EM3581 Zigbee SoC with SPI interface
           - silabs,em3581
             # Silicon Labs SI3210 Programmable CMOS SLIC/CODEC with SPI interface
index a03fff5df5ef2c70659371bf302c59b5940be984..6c6043d9809e1d6bf489153ab0aea5186d3563cc 100644 (file)
@@ -43,6 +43,7 @@ properties:
           - qcom,sm8450-ufshc
           - qcom,sm8550-ufshc
           - qcom,sm8650-ufshc
+          - qcom,sm8750-ufshc
       - const: qcom,ufshc
       - const: jedec,ufs-2.0
 
@@ -158,6 +159,7 @@ allOf:
               - qcom,sm8450-ufshc
               - qcom,sm8550-ufshc
               - qcom,sm8650-ufshc
+              - qcom,sm8750-ufshc
     then:
       properties:
         clocks:
index d2a7d2ecf48a84af4dda36ef46bf4c7fa4730cbc..10020af15afc4a4458a9a7dc45c929e7749c7a4b 100644 (file)
@@ -42,6 +42,9 @@ properties:
 
   phy_type: true
 
+  iommus:
+    maxItems: 1
+
   itc-setting:
     description:
       interrupt threshold control register control, the setting should be
index 8f6136f5d72e16c7d43bb117995792906f97516f..51014955ab3cce78831405180272137aac47cd61 100644 (file)
@@ -41,6 +41,7 @@ properties:
               - fsl,imx8mm-usb
               - fsl,imx8mn-usb
               - fsl,imx93-usb
+              - fsl,imx95-usb
           - const: fsl,imx7d-usb
           - const: fsl,imx27-usb
       - items:
@@ -54,7 +55,11 @@ properties:
     maxItems: 1
 
   interrupts:
-    maxItems: 1
+    minItems: 1
+    items:
+      - description: USB controller interrupt or combine USB controller
+                     and wakeup interrupts.
+      - description: Wakeup interrupt
 
   clocks:
     minItems: 1
@@ -191,6 +196,7 @@ allOf:
           contains:
             enum:
               - fsl,imx93-usb
+              - fsl,imx95-usb
     then:
       properties:
         clocks:
@@ -238,6 +244,22 @@ allOf:
           maxItems: 1
         clock-names: false
 
+  # imx95 soc use two interrupts
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,imx95-usb
+    then:
+      properties:
+        interrupts:
+          minItems: 2
+    else:
+      properties:
+        interrupts:
+          maxItems: 1
+
 unevaluatedProperties: false
 
 examples:
index 1033b7a4b8f953424cc3d31d561992c17f3594b2..d6eac1213228d2acb50ebc959d1ff15134c5a91c 100644 (file)
@@ -14,9 +14,22 @@ allOf:
 
 properties:
   compatible:
-    enum:
-      - usb4b4,6504
-      - usb4b4,6506
+    oneOf:
+      - enum:
+          - usb4b4,6504
+          - usb4b4,6506
+      - items:
+          - enum:
+              - usb4b4,6500
+              - usb4b4,6508
+          - const: usb4b4,6504
+      - items:
+          - enum:
+              - usb4b4,6502
+              - usb4b4,6503
+              - usb4b4,6507
+              - usb4b4,650a
+          - const: usb4b4,6506
 
   reg: true
 
index 379dacacb526819218037c1e26a99230480750d7..36f5c644d9590a33a60eb1615e5053f9e8ee3c5f 100644 (file)
@@ -26,6 +26,8 @@ properties:
 
   ranges: true
 
+  dma-coherent: true
+
   power-domains:
     description: specifies a phandle to PM domain provider node
     maxItems: 1
index 0a6e7ac1b37e28f2a7b284d37a9131eef9b7f0dc..019435540df0d43b2e98c73b3e71e5928acef041 100644 (file)
@@ -34,6 +34,7 @@ properties:
               - fsl,imx8mm-usbmisc
               - fsl,imx8mn-usbmisc
               - fsl,imx8ulp-usbmisc
+              - fsl,imx95-usbmisc
           - const: fsl,imx7d-usbmisc
           - const: fsl,imx6q-usbmisc
       - items:
@@ -45,7 +46,10 @@ properties:
     maxItems: 1
 
   reg:
-    maxItems: 1
+    minItems: 1
+    items:
+      - description: Base and length of the Wrapper module register
+      - description: Base and length of the HSIO Block Control register
 
   '#index-cells':
     const: 1
@@ -56,6 +60,23 @@ required:
   - compatible
   - reg
 
+allOf:
+  # imx95 soc needs use HSIO Block Control
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - fsl,imx95-usbmisc
+    then:
+      properties:
+        reg:
+          minItems: 2
+    else:
+      properties:
+        reg:
+          maxItems: 1
+
 additionalProperties: false
 
 examples:
index 223f2abd5e592ff8cc3ad97f9a325356ea57044a..508d958e698c2e8dad748a6fcdef65d6e883b97d 100644 (file)
@@ -86,6 +86,7 @@ properties:
           - nuvoton,npcm845-ehci
           - ti,ehci-omap
           - usb-ehci
+          - via,vt8500-ehci
 
   reg:
     minItems: 1
diff --git a/Bindings/usb/parade,ps5511.yaml b/Bindings/usb/parade,ps5511.yaml
new file mode 100644 (file)
index 0000000..10d002f
--- /dev/null
@@ -0,0 +1,108 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/parade,ps5511.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Parade PS5511 4+1 Port USB 3.2 Gen 1 Hub Controller
+
+maintainers:
+  - Pin-yen Lin <treapking@chromium.org>
+
+properties:
+  compatible:
+    enum:
+      - usb1da0,5511
+      - usb1da0,55a1
+
+  reset-gpios:
+    items:
+      - description: GPIO specifier for RESETB pin.
+
+  vddd11-supply:
+    description:
+      1V1 power supply to the hub
+
+  vdd33-supply:
+    description:
+      3V3 power supply to the hub
+
+  peer-hub: true
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    patternProperties:
+      '^port@':
+        $ref: /schemas/graph.yaml#/properties/port
+
+        properties:
+          reg:
+            minimum: 1
+            maximum: 5
+
+additionalProperties:
+  properties:
+    reg:
+      minimum: 1
+      maximum: 5
+
+required:
+  - peer-hub
+
+allOf:
+  - $ref: usb-hub.yaml#
+  - if:
+      not:
+        properties:
+          compatible:
+            enum:
+              - usb1da0,55a1
+    then:
+      properties:
+        ports:
+          properties:
+            port@5: false
+
+      patternProperties:
+        '^.*@5$': false
+
+examples:
+  - |
+    usb {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        /* 2.0 hub on port 1 */
+        hub_2_0: hub@1 {
+            compatible = "usb1da0,55a1";
+            reg = <1>;
+            peer-hub = <&hub_3_0>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+            /* USB 2.0 device on port 5 */
+            device@5 {
+                reg = <5>;
+                compatible = "usb123,4567";
+            };
+        };
+
+        /* 3.0 hub on port 2 */
+        hub_3_0: hub@2 {
+            compatible = "usb1da0,5511";
+            reg = <2>;
+            peer-hub = <&hub_2_0>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+                /* Type-A connector on port 3 */
+                port@3 {
+                    reg = <3>;
+                    endpoint {
+                        remote-endpoint = <&usb_a0_ss>;
+                    };
+                };
+            };
+        };
+    };
index 935d57f5d26fe597308f1200ace9559255bad1e4..aeb33667818eb0d116a3467d30220002a3b5df73 100644 (file)
@@ -11,8 +11,11 @@ maintainers:
 
 properties:
   compatible:
-    enum:
-      - parade,ps8830
+    oneOf:
+      - items:
+          - const: parade,ps8833
+          - const: parade,ps8830
+      - const: parade,ps8830
 
   reg:
     maxItems: 1
index 64137c1619a635a5a4f96fc49bd75c5fb757febb..a792434c59db2e6ba2b9b3b8498ca43f0f8d1ec4 100644 (file)
@@ -4,11 +4,22 @@
 $id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: Qualcomm SuperSpeed DWC3 USB SoC controller
+title: Legacy Qualcomm SuperSpeed DWC3 USB SoC controller
 
 maintainers:
   - Wesley Cheng <quic_wcheng@quicinc.com>
 
+# Use the combined qcom,snps-dwc3 instead
+deprecated: true
+
+select:
+  properties:
+    compatible:
+      contains:
+        const: qcom,dwc3
+  required:
+    - compatible
+
 properties:
   compatible:
     items:
@@ -55,6 +66,7 @@ properties:
           - qcom,sm8450-dwc3
           - qcom,sm8550-dwc3
           - qcom,sm8650-dwc3
+          - qcom,sm8750-dwc3
           - qcom,x1e80100-dwc3
           - qcom,x1e80100-dwc3-mp
       - const: qcom,dwc3
@@ -354,6 +366,7 @@ allOf:
               - qcom,sm8450-dwc3
               - qcom,sm8550-dwc3
               - qcom,sm8650-dwc3
+              - qcom,sm8750-dwc3
     then:
       properties:
         clocks:
@@ -497,6 +510,7 @@ allOf:
               - qcom,sm8450-dwc3
               - qcom,sm8550-dwc3
               - qcom,sm8650-dwc3
+              - qcom,sm8750-dwc3
     then:
       properties:
         interrupts:
diff --git a/Bindings/usb/qcom,snps-dwc3.yaml b/Bindings/usb/qcom,snps-dwc3.yaml
new file mode 100644 (file)
index 0000000..8dac5eb
--- /dev/null
@@ -0,0 +1,622 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/qcom,snps-dwc3.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Qualcomm SuperSpeed DWC3 USB SoC controller
+
+maintainers:
+  - Wesley Cheng <quic_wcheng@quicinc.com>
+
+description:
+  Describes the Qualcomm USB block, based on Synopsys DWC3.
+
+select:
+  properties:
+    compatible:
+      contains:
+        const: qcom,snps-dwc3
+  required:
+    - compatible
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - qcom,ipq4019-dwc3
+          - qcom,ipq5018-dwc3
+          - qcom,ipq5332-dwc3
+          - qcom,ipq5424-dwc3
+          - qcom,ipq6018-dwc3
+          - qcom,ipq8064-dwc3
+          - qcom,ipq8074-dwc3
+          - qcom,ipq9574-dwc3
+          - qcom,msm8953-dwc3
+          - qcom,msm8994-dwc3
+          - qcom,msm8996-dwc3
+          - qcom,msm8998-dwc3
+          - qcom,qcm2290-dwc3
+          - qcom,qcs404-dwc3
+          - qcom,qcs615-dwc3
+          - qcom,qcs8300-dwc3
+          - qcom,qdu1000-dwc3
+          - qcom,sa8775p-dwc3
+          - qcom,sar2130p-dwc3
+          - qcom,sc7180-dwc3
+          - qcom,sc7280-dwc3
+          - qcom,sc8180x-dwc3
+          - qcom,sc8180x-dwc3-mp
+          - qcom,sc8280xp-dwc3
+          - qcom,sc8280xp-dwc3-mp
+          - qcom,sdm660-dwc3
+          - qcom,sdm670-dwc3
+          - qcom,sdm845-dwc3
+          - qcom,sdx55-dwc3
+          - qcom,sdx65-dwc3
+          - qcom,sdx75-dwc3
+          - qcom,sm4250-dwc3
+          - qcom,sm6115-dwc3
+          - qcom,sm6125-dwc3
+          - qcom,sm6350-dwc3
+          - qcom,sm6375-dwc3
+          - qcom,sm8150-dwc3
+          - qcom,sm8250-dwc3
+          - qcom,sm8350-dwc3
+          - qcom,sm8450-dwc3
+          - qcom,sm8550-dwc3
+          - qcom,sm8650-dwc3
+          - qcom,x1e80100-dwc3
+      - const: qcom,snps-dwc3
+
+  reg:
+    maxItems: 1
+
+  power-domains:
+    maxItems: 1
+
+  required-opps:
+    maxItems: 1
+
+  clocks:
+    description: |
+      Several clocks are used, depending on the variant. Typical ones are::
+       - cfg_noc:: System Config NOC clock.
+       - core:: Master/Core clock, has to be >= 125 MHz for SS operation and >=
+                60MHz for HS operation.
+       - iface:: System bus AXI clock.
+       - sleep:: Sleep clock, used for wakeup when USB3 core goes into low
+                 power mode (U3).
+       - mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host
+                     mode. Its frequency should be 19.2MHz.
+    minItems: 1
+    maxItems: 9
+
+  clock-names:
+    minItems: 1
+    maxItems: 9
+
+  dma-coherent: true
+
+  iommus:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+  interconnects:
+    maxItems: 2
+
+  interconnect-names:
+    items:
+      - const: usb-ddr
+      - const: apps-usb
+
+  interrupts:
+    description: |
+      Different types of interrupts are used based on HS PHY used on target:
+        - dwc_usb3: Core DWC3 interrupt
+        - pwr_event: Used for wakeup based on other power events.
+        - hs_phy_irq: Apart from DP/DM/QUSB2 PHY interrupts, there is
+                       hs_phy_irq which is not triggered by default and its
+                       functionality is mutually exclusive to that of
+                       {dp/dm}_hs_phy_irq and qusb2_phy_irq.
+        - qusb2_phy: SoCs with QUSB2 PHY do not have separate DP/DM IRQs and
+                      expose only a single IRQ whose behavior can be modified
+                      by the QUSB2PHY_INTR_CTRL register. The required DPSE/
+                      DMSE configuration is done in QUSB2PHY_INTR_CTRL register
+                      of PHY address space.
+        - {dp/dm}_hs_phy_irq: These IRQ's directly reflect changes on the DP/
+                               DM pads of the SoC. These are used for wakeup
+                               only on SoCs with non-QUSB2 targets with
+                               exception of SDM670/SDM845/SM6350.
+        - ss_phy_irq: Used for remote wakeup in Super Speed mode of operation.
+    minItems: 3
+    maxItems: 19
+
+  interrupt-names:
+    minItems: 3
+    maxItems: 19
+
+  qcom,select-utmi-as-pipe-clk:
+    description:
+      If present, disable USB3 pipe_clk requirement.
+      Used when dwc3 operates without SSPHY and only
+      HS/FS/LS modes are supported.
+    type: boolean
+
+  wakeup-source: true
+
+# Required child node:
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+  - interrupts
+  - interrupt-names
+
+allOf:
+  - $ref: snps,dwc3-common.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq4019-dwc3
+              - qcom,ipq5332-dwc3
+    then:
+      properties:
+        clocks:
+          maxItems: 3
+        clock-names:
+          items:
+            - const: core
+            - const: sleep
+            - const: mock_utmi
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq8064-dwc3
+    then:
+      properties:
+        clocks:
+          items:
+            - description: Master/Core clock, has to be >= 125 MHz
+                for SS operation and >= 60MHz for HS operation.
+        clock-names:
+          items:
+            - const: core
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq9574-dwc3
+              - qcom,msm8953-dwc3
+              - qcom,msm8996-dwc3
+              - qcom,msm8998-dwc3
+              - qcom,qcs8300-dwc3
+              - qcom,sa8775p-dwc3
+              - qcom,sc7180-dwc3
+              - qcom,sc7280-dwc3
+              - qcom,sdm670-dwc3
+              - qcom,sdm845-dwc3
+              - qcom,sdx55-dwc3
+              - qcom,sdx65-dwc3
+              - qcom,sdx75-dwc3
+              - qcom,sm6350-dwc3
+    then:
+      properties:
+        clocks:
+          maxItems: 5
+        clock-names:
+          items:
+            - const: cfg_noc
+            - const: core
+            - const: iface
+            - const: sleep
+            - const: mock_utmi
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq6018-dwc3
+    then:
+      properties:
+        clocks:
+          minItems: 3
+          maxItems: 4
+        clock-names:
+          oneOf:
+            - items:
+                - const: core
+                - const: sleep
+                - const: mock_utmi
+            - items:
+                - const: cfg_noc
+                - const: core
+                - const: sleep
+                - const: mock_utmi
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq8074-dwc3
+              - qcom,qdu1000-dwc3
+    then:
+      properties:
+        clocks:
+          maxItems: 4
+        clock-names:
+          items:
+            - const: cfg_noc
+            - const: core
+            - const: sleep
+            - const: mock_utmi
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq5018-dwc3
+              - qcom,msm8994-dwc3
+              - qcom,qcs404-dwc3
+    then:
+      properties:
+        clocks:
+          maxItems: 4
+        clock-names:
+          items:
+            - const: core
+            - const: iface
+            - const: sleep
+            - const: mock_utmi
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sc8280xp-dwc3
+              - qcom,sc8280xp-dwc3-mp
+              - qcom,x1e80100-dwc3
+              - qcom,x1e80100-dwc3-mp
+    then:
+      properties:
+        clocks:
+          maxItems: 9
+        clock-names:
+          items:
+            - const: cfg_noc
+            - const: core
+            - const: iface
+            - const: sleep
+            - const: mock_utmi
+            - const: noc_aggr
+            - const: noc_aggr_north
+            - const: noc_aggr_south
+            - const: noc_sys
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sdm660-dwc3
+    then:
+      properties:
+        clocks:
+          minItems: 4
+          maxItems: 5
+        clock-names:
+          oneOf:
+            - items:
+                - const: cfg_noc
+                - const: core
+                - const: iface
+                - const: sleep
+                - const: mock_utmi
+            - items:
+                - const: cfg_noc
+                - const: core
+                - const: sleep
+                - const: mock_utmi
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,qcm2290-dwc3
+              - qcom,qcs615-dwc3
+              - qcom,sar2130p-dwc3
+              - qcom,sc8180x-dwc3
+              - qcom,sc8180x-dwc3-mp
+              - qcom,sm6115-dwc3
+              - qcom,sm6125-dwc3
+              - qcom,sm8150-dwc3
+              - qcom,sm8250-dwc3
+              - qcom,sm8450-dwc3
+              - qcom,sm8550-dwc3
+              - qcom,sm8650-dwc3
+    then:
+      properties:
+        clocks:
+          minItems: 6
+        clock-names:
+          items:
+            - const: cfg_noc
+            - const: core
+            - const: iface
+            - const: sleep
+            - const: mock_utmi
+            - const: xo
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sm8350-dwc3
+    then:
+      properties:
+        clocks:
+          minItems: 5
+          maxItems: 6
+        clock-names:
+          minItems: 5
+          items:
+            - const: cfg_noc
+            - const: core
+            - const: iface
+            - const: sleep
+            - const: mock_utmi
+            - const: xo
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq5018-dwc3
+              - qcom,ipq6018-dwc3
+              - qcom,ipq8074-dwc3
+              - qcom,msm8953-dwc3
+              - qcom,msm8998-dwc3
+    then:
+      properties:
+        interrupts:
+          minItems: 3
+          maxItems: 4
+        interrupt-names:
+          minItems: 3
+          items:
+            - const: dwc_usb3
+            - const: pwr_event
+            - const: qusb2_phy
+            - const: ss_phy_irq
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,msm8996-dwc3
+              - qcom,qcs404-dwc3
+              - qcom,sdm660-dwc3
+              - qcom,sm6115-dwc3
+              - qcom,sm6125-dwc3
+    then:
+      properties:
+        interrupts:
+          minItems: 4
+          maxItems: 5
+        interrupt-names:
+          minItems: 4
+          items:
+            - const: dwc_usb3
+            - const: pwr_event
+            - const: qusb2_phy
+            - const: hs_phy_irq
+            - const: ss_phy_irq
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq5332-dwc3
+    then:
+      properties:
+        interrupts:
+          maxItems: 4
+        interrupt-names:
+          items:
+            - const: dwc_usb3
+            - const: pwr_event
+            - const: dp_hs_phy_irq
+            - const: dm_hs_phy_irq
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,x1e80100-dwc3
+    then:
+      properties:
+        interrupts:
+          maxItems: 5
+        interrupt-names:
+          items:
+            - const: dwc_usb3
+            - const: pwr_event
+            - const: dp_hs_phy_irq
+            - const: dm_hs_phy_irq
+            - const: ss_phy_irq
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq4019-dwc3
+              - qcom,ipq8064-dwc3
+              - qcom,msm8994-dwc3
+              - qcom,qcs615-dwc3
+              - qcom,qcs8300-dwc3
+              - qcom,qdu1000-dwc3
+              - qcom,sa8775p-dwc3
+              - qcom,sc7180-dwc3
+              - qcom,sc7280-dwc3
+              - qcom,sc8180x-dwc3
+              - qcom,sc8280xp-dwc3
+              - qcom,sdm670-dwc3
+              - qcom,sdm845-dwc3
+              - qcom,sdx55-dwc3
+              - qcom,sdx65-dwc3
+              - qcom,sdx75-dwc3
+              - qcom,sm4250-dwc3
+              - qcom,sm6350-dwc3
+              - qcom,sm8150-dwc3
+              - qcom,sm8250-dwc3
+              - qcom,sm8350-dwc3
+              - qcom,sm8450-dwc3
+              - qcom,sm8550-dwc3
+              - qcom,sm8650-dwc3
+    then:
+      properties:
+        interrupts:
+          minItems: 5
+          maxItems: 6
+        interrupt-names:
+          minItems: 5
+          items:
+            - const: dwc_usb3
+            - const: pwr_event
+            - const: hs_phy_irq
+            - const: dp_hs_phy_irq
+            - const: dm_hs_phy_irq
+            - const: ss_phy_irq
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sc8180x-dwc3-mp
+              - qcom,x1e80100-dwc3-mp
+    then:
+      properties:
+        interrupts:
+          minItems: 11
+          maxItems: 11
+        interrupt-names:
+          items:
+            - const: dwc_usb3
+            - const: pwr_event_1
+            - const: pwr_event_2
+            - const: hs_phy_1
+            - const: hs_phy_2
+            - const: dp_hs_phy_1
+            - const: dm_hs_phy_1
+            - const: dp_hs_phy_2
+            - const: dm_hs_phy_2
+            - const: ss_phy_1
+            - const: ss_phy_2
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,sc8280xp-dwc3-mp
+    then:
+      properties:
+        interrupts:
+          minItems: 19
+          maxItems: 19
+        interrupt-names:
+          items:
+            - const: dwc_usb3
+            - const: pwr_event_1
+            - const: pwr_event_2
+            - const: pwr_event_3
+            - const: pwr_event_4
+            - const: hs_phy_1
+            - const: hs_phy_2
+            - const: hs_phy_3
+            - const: hs_phy_4
+            - const: dp_hs_phy_1
+            - const: dm_hs_phy_1
+            - const: dp_hs_phy_2
+            - const: dm_hs_phy_2
+            - const: dp_hs_phy_3
+            - const: dm_hs_phy_3
+            - const: dp_hs_phy_4
+            - const: dm_hs_phy_4
+            - const: ss_phy_1
+            - const: ss_phy_2
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    soc {
+        #address-cells = <2>;
+        #size-cells = <2>;
+
+        usb@a600000 {
+            compatible = "qcom,sdm845-dwc3", "qcom,snps-dwc3";
+            reg = <0 0x0a600000 0 0x100000>;
+
+            clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
+                     <&gcc GCC_USB30_PRIM_MASTER_CLK>,
+                     <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
+                     <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
+                     <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
+            clock-names = "cfg_noc",
+                          "core",
+                          "iface",
+                          "sleep",
+                          "mock_utmi";
+
+            assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+                          <&gcc GCC_USB30_PRIM_MASTER_CLK>;
+            assigned-clock-rates = <19200000>, <150000000>;
+
+            interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                         <GIC_SPI 489 IRQ_TYPE_EDGE_BOTH>,
+                         <GIC_SPI 488 IRQ_TYPE_EDGE_BOTH>,
+                         <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>;
+            interrupt-names = "dwc_usb3", "pwr_event", "hs_phy_irq",
+                          "dp_hs_phy_irq", "dm_hs_phy_irq", "ss_phy_irq";
+
+            power-domains = <&gcc USB30_PRIM_GDSC>;
+
+            resets = <&gcc GCC_USB30_PRIM_BCR>;
+
+            iommus = <&apps_smmu 0x740 0>;
+            snps,dis_u2_susphy_quirk;
+            snps,dis_enblslpm_quirk;
+            phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
+            phy-names = "usb2-phy", "usb3-phy";
+        };
+    };
+...
index 6577a61cc07531d56f1a02dec8cde5c14ae1160a..a020afaf2d6e7a0964cbe319e98dde5151677928 100644 (file)
@@ -10,7 +10,7 @@ maintainers:
   - Matthias Kaehlcke <mka@chromium.org>
 
 allOf:
-  - $ref: usb-device.yaml#
+  - $ref: usb-hub.yaml#
 
 properties:
   compatible:
@@ -19,61 +19,35 @@ properties:
           - usbbda,5411
           - usbbda,411
 
-  reg: true
-
-  '#address-cells':
-    const: 1
-
-  '#size-cells':
-    const: 0
-
   vdd-supply:
     description:
       phandle to the regulator that provides power to the hub.
 
-  peer-hub:
-    $ref: /schemas/types.yaml#/definitions/phandle
-    description:
-      phandle to the peer hub on the controller.
+  peer-hub: true
 
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
 
-    properties:
-      port@1:
-        $ref: /schemas/graph.yaml#/properties/port
-        description:
-          1st downstream facing USB port
-
-      port@2:
+    patternProperties:
+      '^port@':
         $ref: /schemas/graph.yaml#/properties/port
-        description:
-          2nd downstream facing USB port
 
-      port@3:
-        $ref: /schemas/graph.yaml#/properties/port
-        description:
-          3rd downstream facing USB port
+        properties:
+          reg:
+            minimum: 1
+            maximum: 4
 
-      port@4:
-        $ref: /schemas/graph.yaml#/properties/port
-        description:
-          4th downstream facing USB port
-
-patternProperties:
-  '^.*@[1-4]$':
-    description: The hard wired USB devices
-    type: object
-    $ref: /schemas/usb/usb-device.yaml
-    additionalProperties: true
+additionalProperties:
+  properties:
+    reg:
+      minimum: 1
+      maximum: 4
 
 required:
   - peer-hub
   - compatible
   - reg
 
-additionalProperties: false
-
 examples:
   - |
     usb {
index 980f325341d43803759e51548e90f0dce62d0447..6f4d41ba6ca7f92517bce40c8b120ad54e21f6cb 100644 (file)
@@ -27,6 +27,7 @@ properties:
               - renesas,usbhs-r9a07g044 # RZ/G2{L,LC}
               - renesas,usbhs-r9a07g054 # RZ/V2L
               - renesas,usbhs-r9a08g045 # RZ/G3S
+              - renesas,usbhs-r9a09g057 # RZ/V2H(P)
           - const: renesas,rzg2l-usbhs
 
       - items:
@@ -127,11 +128,7 @@ allOf:
       properties:
         compatible:
           contains:
-            enum:
-              - renesas,usbhs-r9a07g043
-              - renesas,usbhs-r9a07g044
-              - renesas,usbhs-r9a07g054
-              - renesas,usbhs-r9a08g045
+            const: renesas,rzg2l-usbhs
     then:
       properties:
         interrupts:
index fba2cb05ecbae9476c1360dcdd624fede4ccc9a5..fd1b13c0ed6bb3588c4a1fc1707f757f8b964a4f 100644 (file)
@@ -18,7 +18,7 @@ description:
   Documentation/devicetree/bindings/phy/rockchip,inno-usb2phy.yaml
 
   Type-C PHY
-  Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt
+  Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml
 
 select:
   properties:
index 256bee2a03ca189f360e2b677f101dce25a0f368..6d39e50669447917a2cd94dacee5822467eeb36e 100644 (file)
@@ -14,11 +14,13 @@ properties:
     oneOf:
       - enum:
           - google,gs101-dwusb3
+          - samsung,exynos2200-dwusb3
           - samsung,exynos5250-dwusb3
           - samsung,exynos5433-dwusb3
           - samsung,exynos7-dwusb3
           - samsung,exynos7870-dwusb3
           - samsung,exynos850-dwusb3
+          - samsung,exynosautov920-dwusb3
       - items:
           - const: samsung,exynos990-dwusb3
           - const: samsung,exynos850-dwusb3
@@ -79,6 +81,19 @@ allOf:
       required:
         - vdd10-supply
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynos2200-dwusb3
+    then:
+      properties:
+        clocks:
+          maxItems: 1
+        clock-names:
+          items:
+            - const: link_aclk
+
   - if:
       properties:
         compatible:
@@ -165,6 +180,21 @@ allOf:
       required:
         - vdd10-supply
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: samsung,exynosautov920-dwusb3
+    then:
+      properties:
+        clocks:
+          minItems: 2
+          maxItems: 2
+        clock-names:
+          items:
+            - const: ref
+            - const: susp_clk
+
 additionalProperties: false
 
 examples:
index 6156dc26e65c7807495fcf1238f12c4592edb0ef..18e35122dc1fe7a056b04e6b5529ee5d2076c701 100644 (file)
@@ -106,54 +106,54 @@ additionalProperties: false
 
 examples:
   - |
-      i2c {
-          #address-cells = <1>;
-          #size-cells = <0>;
-
-          usb-hub@8 {
-              compatible = "smsc,usb3503";
-              reg = <0x08>;
-              connect-gpios = <&gpx3 0 1>;
-              disabled-ports = <2 3>;
-              intn-gpios = <&gpx3 4 1>;
-              reset-gpios = <&gpx3 5 1>;
-              initial-mode = <1>;
-              clocks = <&clks 80>;
-              clock-names = "refclk";
-          };
-      };
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        usb-hub@8 {
+            compatible = "smsc,usb3503";
+            reg = <0x08>;
+            connect-gpios = <&gpx3 0 1>;
+            disabled-ports = <2 3>;
+            intn-gpios = <&gpx3 4 1>;
+            reset-gpios = <&gpx3 5 1>;
+            initial-mode = <1>;
+            clocks = <&clks 80>;
+            clock-names = "refclk";
+        };
+    };
 
   - |
-      i2c {
-          #address-cells = <1>;
-          #size-cells = <0>;
-
-          usb-hub@8 {
-              compatible = "smsc,usb3803";
-              reg = <0x08>;
-              connect-gpios = <&gpx3 0 1>;
-              disabled-ports = <2 3>;
-              intn-gpios = <&gpx3 4 1>;
-              reset-gpios = <&gpx3 5 1>;
-              bypass-gpios = <&gpx3 6 1>;
-              initial-mode = <3>;
-              clocks = <&clks 80>;
-              clock-names = "refclk";
-          };
-      };
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        usb-hub@8 {
+            compatible = "smsc,usb3803";
+            reg = <0x08>;
+            connect-gpios = <&gpx3 0 1>;
+            disabled-ports = <2 3>;
+            intn-gpios = <&gpx3 4 1>;
+            reset-gpios = <&gpx3 5 1>;
+            bypass-gpios = <&gpx3 6 1>;
+            initial-mode = <3>;
+            clocks = <&clks 80>;
+            clock-names = "refclk";
+        };
+    };
 
   - |
-      #include <dt-bindings/gpio/gpio.h>
-
-      usb-hub {
-          /* I2C is not connected */
-          compatible = "smsc,usb3503";
-          initial-mode = <1>; /* initialize in HUB mode */
-          disabled-ports = <1>;
-          intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
-          reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */
-          connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
-          refclk-frequency = <19200000>;
-      };
+    #include <dt-bindings/gpio/gpio.h>
+
+    usb-hub {
+        /* I2C is not connected */
+        compatible = "smsc,usb3503";
+        initial-mode = <1>; /* initialize in HUB mode */
+        disabled-ports = <1>;
+        intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+        reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */
+        connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
+        refclk-frequency = <19200000>;
+    };
 
 ...
index 71249b6ba61683128df1e300a3700683b0db0e6a..6c0b8b6538246adf746fe7ccd6df936131c61444 100644 (file)
@@ -390,6 +390,12 @@ properties:
     maximum: 8
     default: 1
 
+  connector:
+    $ref: /schemas/connector/usb-connector.yaml#
+    description: Connector for dual role switch
+    type: object
+    unevaluatedProperties: false
+
   port:
     $ref: /schemas/graph.yaml#/properties/port
     description:
index bce730a5e237af0cb746addb9af72e1582971535..5e3eae9c2961c94f8f810b113a43600920d76cb9 100644 (file)
@@ -4,7 +4,7 @@
 $id: http://devicetree.org/schemas/usb/ti,usb8041.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
-title: TI USB8041 USB 3.0 hub controller
+title: TI USB8041 and USB8044 USB 3.0 hub controllers
 
 maintainers:
   - Alexander Stein <alexander.stein@ew.tq-group.com>
@@ -17,6 +17,8 @@ properties:
     enum:
       - usb451,8140
       - usb451,8142
+      - usb451,8440
+      - usb451,8442
 
   reg: true
 
index c676956810331b81f11f3624340fc3e612c98315..09fceb469f10525e9dcdb91435b142b0d21964b8 100644 (file)
@@ -28,7 +28,8 @@ description: |
 
 properties:
   compatible:
-    pattern: "^usb[0-9a-f]{1,4},[0-9a-f]{1,4}$"
+    contains:
+      pattern: "^usb[0-9a-f]{1,4},[0-9a-f]{1,4}$"
     description: Device nodes or combined nodes.
       "usbVID,PID", where VID is the vendor id and PID the product id.
       The textual representation of VID and PID shall be in lower case
diff --git a/Bindings/usb/usb-hub.yaml b/Bindings/usb/usb-hub.yaml
new file mode 100644 (file)
index 0000000..5238ab1
--- /dev/null
@@ -0,0 +1,84 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/usb-hub.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Generic USB Hub
+
+maintainers:
+  - Pin-yen Lin <treapking@chromium.org>
+
+allOf:
+  - $ref: usb-device.yaml#
+
+properties:
+  '#address-cells':
+    const: 1
+
+  peer-hub:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description:
+      phandle to the peer hub on the controller.
+
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    description:
+      The downstream facing USB ports
+
+    patternProperties:
+      "^port@[1-9a-f][0-9a-f]*$":
+        $ref: /schemas/graph.yaml#/properties/port
+
+patternProperties:
+  '^.*@[1-9a-f][0-9a-f]*$':
+    description: The hard wired USB devices
+    type: object
+    $ref: /schemas/usb/usb-device.yaml
+    additionalProperties: true
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: true
+
+examples:
+  - |
+    usb {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        /* 2.0 hub on port 1 */
+        hub_2_0: hub@1 {
+            compatible = "usb123,4567";
+            reg = <1>;
+            peer-hub = <&hub_3_0>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+            /* USB 2.0 device on port 5 */
+            device@5 {
+                reg = <5>;
+                compatible = "usb765,4321";
+            };
+        };
+
+        /* 3.0 hub on port 2 */
+        hub_3_0: hub@2 {
+            compatible = "usb123,abcd";
+            reg = <2>;
+            peer-hub = <&hub_2_0>;
+
+            ports {
+                #address-cells = <1>;
+                #size-cells = <0>;
+                /* Type-A connector on port 3 */
+                port@3 {
+                    reg = <3>;
+                    endpoint {
+                        remote-endpoint = <&usb_a0_ss>;
+                    };
+                };
+            };
+        };
+    };
index da76118e73a53c0e1c255ff115ff959d256816ba..89620191263023bec800dec114c0017c41b7c056 100644 (file)
@@ -26,11 +26,24 @@ properties:
     type: boolean
 
   port:
-    $ref: /schemas/graph.yaml#/properties/port
+    $ref: /schemas/graph.yaml#/$defs/port-base
     description:
       A port node to link the device to a TypeC controller for the purpose of
       handling altmode muxing and orientation switching.
 
+    properties:
+      endpoint:
+        $ref: /schemas/graph.yaml#/$defs/endpoint-base
+        unevaluatedProperties: false
+        properties:
+          data-lanes:
+            $ref: /schemas/types.yaml#/definitions/uint32-array
+            minItems: 1
+            maxItems: 8
+            uniqueItems: true
+            items:
+              maximum: 8
+
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
     properties:
index 86f6a19b28ae217643bf7a63a471f74819d18238..5d2a7a8d3ac6c666c8b557c2ef385918e5e97bf9 100644 (file)
@@ -129,6 +129,8 @@ patternProperties:
     description: Andes Technology Corporation
   "^anvo,.*":
     description: Anvo-Systems Dresden GmbH
+  "^aoly,.*":
+    description: Shenzhen Aoly Technology Co., Ltd.
   "^aosong,.*":
     description: Guangzhou Aosong Electronic Co., Ltd.
   "^apm,.*":
@@ -432,6 +434,8 @@ patternProperties:
     description: EBV Elektronik
   "^eckelmann,.*":
     description: Eckelmann AG
+  "^econet,.*":
+    description: EcoNet (HK) Limited
   "^edgeble,.*":
     description: Edgeble AI Technologies Pvt. Ltd.
   "^edimax,.*":
@@ -864,6 +868,8 @@ patternProperties:
     description: Linux-specific binding
   "^linx,.*":
     description: Linx Technologies
+  "^liontron,.*":
+    description: Shenzhen Liontron Technology Co., Ltd
   "^liteon,.*":
     description: LITE-ON Technology Corp.
   "^litex,.*":
@@ -1158,6 +1164,8 @@ patternProperties:
     description: Parallax Inc.
   "^pda,.*":
     description: Precision Design Associates, Inc.
+  "^pegatron,.*":
+    description: Pegatron Corporation
   "^pericom,.*":
     description: Pericom Technology Inc.
   "^pervasive,.*":
@@ -1262,6 +1270,8 @@ patternProperties:
     description: Renesas Electronics Corporation
   "^rervision,.*":
     description: Shenzhen Rervision Technology Co., Ltd.
+  "^retronix,.*":
+    description: Retronix Technology Inc.
   "^revotics,.*":
     description: Revolution Robotics, Inc. (Revotics)
   "^rex,.*":
@@ -1396,6 +1406,8 @@ patternProperties:
     description: SKOV A/S
   "^skyworks,.*":
     description: Skyworks Solutions, Inc.
+  "^smartfiber,.*":
+    description: ShenZhen Smartfiber Technology Co, Ltd.
   "^smartlabs,.*":
     description: SmartLabs LLC
   "^smartrg,.*":
@@ -1494,6 +1506,8 @@ patternProperties:
     description: Toby Churchill Ltd.
   "^tcs,.*":
     description: Shenzhen City Tang Cheng Technology Co., Ltd.
+  "^tcu,.*":
+    description: TC Unterhaltungselektronik AG
   "^tdo,.*":
     description: Shangai Top Display Optoelectronics Co., Ltd
   "^team-source-display,.*":
@@ -1607,6 +1621,8 @@ patternProperties:
     description: Universal Scientific Industrial Co., Ltd.
   "^usr,.*":
     description: U.S. Robotics Corporation
+  "^ultratronik,.*":
+    description: Ultratronik GmbH
   "^utoo,.*":
     description: Aigo Digital Technology Co., Ltd.
   "^v3,.*":
@@ -1689,6 +1705,8 @@ patternProperties:
     description: Wingtech Technology Co., Ltd.
   "^winlink,.*":
     description: WinLink Co., Ltd
+  "^winsen,.*":
+    description: Winsen Corp.
   "^winstar,.*":
     description: Winstar Display Corp.
   "^wirelesstag,.*":
@@ -1749,6 +1767,8 @@ patternProperties:
     description: Y Soft Corporation a.s.
   "^yuridenki,.*":
     description: Yuridenki-Shokai Co. Ltd.
+  "^yuzukihd,.*":
+    description: YuzukiHD Open Source Hardware
   "^zarlink,.*":
     description: Zarlink Semiconductor
   "^zealz,.*":
index 972a785a42de50104cf16e996a5db797beb840e2..8bd6ad72ac7ab8dccb655d6eed193f1ae61272de 100644 (file)
@@ -20,6 +20,9 @@ description: |
   virtio-iommu node doesn't have an "iommus" property, and is omitted from
   the iommu-map property of the root complex.
 
+allOf:
+  - $ref: /schemas/pci/pci-device.yaml#
+
 properties:
   # If compatible is present, it should contain the vendor and device ID
   # according to the PCI Bus Binding specification. Since PCI provides
@@ -33,12 +36,7 @@ properties:
           - const: pci1af4,1057
 
   reg:
-    description: |
-      PCI address of the IOMMU. As defined in the PCI Bus Binding
-      reference, the reg property is a five-cell address encoded as (phys.hi
-      phys.mid phys.lo size.hi size.lo). phys.hi should contain the device's
-      BDF as 0b00000000 bbbbbbbb dddddfff 00000000. The other cells should be
-      zero. See Documentation/devicetree/bindings/pci/pci.txt
+    maxItems: 1
 
   '#iommu-cells':
     const: 1
index 8b7aa922249bd9b28527d22815bdae1e5f13483a..1d9f15ec665799343f69976dbc3a6b7e4fedf036 100644 (file)
@@ -20,6 +20,7 @@ properties:
     items:
       - enum:
           - fsl,imx8dxl-sc-wdt
+          - fsl,imx8qm-sc-wdt
           - fsl,imx8qxp-sc-wdt
       - const: fsl,imx-sc-wdt
 
index 0da953cb7127269c07b5eaef1374a94ec68ead60..8a6c3a75a5478329ff259eb0378d7935ca8ac30e 100644 (file)
@@ -35,6 +35,7 @@ properties:
               - fsl,imx8mp-wdt
               - fsl,imx8mq-wdt
               - fsl,ls1012a-wdt
+              - fsl,ls1021a-wdt
               - fsl,ls1043a-wdt
               - fsl,vf610-wdt
           - const: fsl,imx21-wdt
@@ -102,6 +103,7 @@ allOf:
             contains:
               enum:
                 - fsl,ls1012a-wdt
+                - fsl,ls1021a-wdt
                 - fsl,ls1043a-wdt
     then:
       properties:
diff --git a/Bindings/watchdog/nxp,s32g2-swt.yaml b/Bindings/watchdog/nxp,s32g2-swt.yaml
new file mode 100644 (file)
index 0000000..8f168a0
--- /dev/null
@@ -0,0 +1,54 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/watchdog/nxp,s32g2-swt.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP Software Watchdog Timer (SWT)
+
+maintainers:
+  - Daniel Lezcano <daniel.lezcano@kernel.org>
+
+allOf:
+  - $ref: watchdog.yaml#
+
+properties:
+  compatible:
+    oneOf:
+      - const: nxp,s32g2-swt
+      - items:
+          - const: nxp,s32g3-swt
+          - const: nxp,s32g2-swt
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: Counter clock
+      - description: Module clock
+      - description: Register clock
+
+  clock-names:
+    items:
+      - const: counter
+      - const: module
+      - const: register
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - clock-names
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    watchdog@40100000 {
+        compatible = "nxp,s32g2-swt";
+        reg = <0x40100000 0x1000>;
+        clocks = <&clks 0x3a>, <&clks 0x3b>, <&clks 0x3c>;
+        clock-names = "counter", "module", "register";
+        timeout-sec = <10>;
+    };
index 3e0a8747a357073d9a861bdbe31a9154acfafc9b..78874b90c88c5808823c6281cd44205b3bc88507 100644 (file)
@@ -76,7 +76,9 @@ properties:
           - const: renesas,rcar-gen4-wdt # R-Car Gen4
 
       - items:
-          - const: renesas,r9a09g047-wdt # RZ/G3E
+          - enum:
+              - renesas,r9a09g047-wdt # RZ/G3E
+              - renesas,r9a09g056-wdt # RZ/V2N
           - const: renesas,r9a09g057-wdt # RZ/V2H(P)
 
       - const: renesas,r9a09g057-wdt       # RZ/V2H(P)
index d175ae9683366d33b1f9d9d820501d1e7c5964bd..53fc64f5b56d33f910395d32b35e0905b8b9aa53 100644 (file)
@@ -25,6 +25,7 @@ properties:
           - samsung,exynos5420-wdt                # for Exynos5420
           - samsung,exynos7-wdt                   # for Exynos7
           - samsung,exynos850-wdt                 # for Exynos850
+          - samsung,exynos990-wdt                 # for Exynos990
           - samsung,exynosautov9-wdt              # for Exynosautov9
           - samsung,exynosautov920-wdt            # for Exynosautov920
       - items:
@@ -49,14 +50,14 @@ properties:
   samsung,cluster-index:
     $ref: /schemas/types.yaml#/definitions/uint32
     description:
-      Index of CPU cluster on which watchdog is running (in case of Exynos850
-      or Google gs101).
+      Index of CPU cluster on which watchdog is running (in case of Exynos850,
+      Exynos990 or Google gs101).
 
   samsung,syscon-phandle:
     $ref: /schemas/types.yaml#/definitions/phandle
     description:
       Phandle to the PMU system controller node (in case of Exynos5250,
-      Exynos5420, Exynos7, Exynos850 and gs101).
+      Exynos5420, Exynos7, Exynos850, Exynos990 and gs101).
 
 required:
   - compatible
@@ -77,6 +78,7 @@ allOf:
               - samsung,exynos5420-wdt
               - samsung,exynos7-wdt
               - samsung,exynos850-wdt
+              - samsung,exynos990-wdt
               - samsung,exynosautov9-wdt
               - samsung,exynosautov920-wdt
     then:
@@ -89,6 +91,7 @@ allOf:
             enum:
               - google,gs101-wdt
               - samsung,exynos850-wdt
+              - samsung,exynos990-wdt
               - samsung,exynosautov9-wdt
               - samsung,exynosautov920-wdt
     then:
@@ -102,7 +105,7 @@ allOf:
             - const: watchdog
             - const: watchdog_src
         samsung,cluster-index:
-          enum: [0, 1]
+          enum: [0, 1, 2]
       required:
         - samsung,cluster-index
     else:
index 1efefd741c06d1e361800a00e375252e923cb4f3..ef088e0f6917e50f4a08b337a0330e5f8ac0a856 100644 (file)
@@ -28,6 +28,7 @@ properties:
               - rockchip,rk3328-wdt
               - rockchip,rk3368-wdt
               - rockchip,rk3399-wdt
+              - rockchip,rk3562-wdt
               - rockchip,rk3568-wdt
               - rockchip,rk3576-wdt
               - rockchip,rk3588-wdt
index eb8ced400c7ebf8ee718497f76a71d5f86f5635a..fc73072f12fc58dbaf3dea3eb8cc79cfac0341c8 100644 (file)
@@ -117,9 +117,14 @@ additionalProperties / unevaluatedProperties
       should be allowed.
 
   * additionalProperties: true
-      Rare case, used for schemas implementing common set of properties. Such
-      schemas are supposed to be referenced by other schemas, which then use
-      'unevaluatedProperties: false'.  Typically bus or common-part schemas.
+      - Top-level part:
+        Rare case, used for schemas implementing common set of properties. Such
+        schemas are supposed to be referenced by other schemas, which then use
+        'unevaluatedProperties: false'.  Typically bus or common-part schemas.
+      - Nested node:
+        When listing only the expected compatible of the nested node and there
+        is an another schema matching that compatible which ends with one of
+        two above cases ('false').
 
 examples
   Optional. A list of one or more DTS hunks implementing this binding only.
index 1b3e0176dcb7c277842cd8a14e1711f31a798360..897b8135dc12f56b82c6683b14e2fc135daefc20 100644 (file)
 #define QCOM_ID_IPQ5302                        595
 #define QCOM_ID_QCS8550                        603
 #define QCOM_ID_QCM8550                        604
+#define QCOM_ID_SM8750                 618
 #define QCOM_ID_IPQ5300                        624
 #define QCOM_ID_IPQ5321                        650
 #define QCOM_ID_IPQ5424                        651
diff --git a/include/dt-bindings/clock/qcom,sm6350-videocc.h b/include/dt-bindings/clock/qcom,sm6350-videocc.h
new file mode 100644 (file)
index 0000000..2af7f91
--- /dev/null
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2021, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2021, Konrad Dybcio <konrad.dybcio@somainline.org>
+ */
+
+#ifndef _DT_BINDINGS_CLK_QCOM_VIDEO_CC_SM6350_H
+#define _DT_BINDINGS_CLK_QCOM_VIDEO_CC_SM6350_H
+
+/* VIDEO_CC clocks */
+#define VIDEO_PLL0                     0
+#define VIDEO_PLL0_OUT_EVEN             1
+#define VIDEO_CC_IRIS_AHB_CLK          2
+#define VIDEO_CC_IRIS_CLK_SRC          3
+#define VIDEO_CC_MVS0_AXI_CLK          4
+#define VIDEO_CC_MVS0_CORE_CLK         5
+#define VIDEO_CC_MVSC_CORE_CLK         6
+#define VIDEO_CC_MVSC_CTL_AXI_CLK      7
+#define VIDEO_CC_SLEEP_CLK             8
+#define VIDEO_CC_SLEEP_CLK_SRC         9
+#define VIDEO_CC_VENUS_AHB_CLK         10
+
+/* GDSCs */
+#define MVSC_GDSC                      0
+#define MVS0_GDSC                      1
+
+#endif
index 1d031bf6bf030ce5f19957b87c4a40926b00d1dc..a27132f9a6c8903ce662932a93222b31ec7cf430 100644 (file)
@@ -17,5 +17,8 @@
 #define R9A09G047_CM33_CLK0                    6
 #define R9A09G047_CST_0_SWCLKTCK               7
 #define R9A09G047_IOTOP_0_SHCLK                        8
+#define R9A09G047_SPI_CLK_SPI                  9
+#define R9A09G047_GBETH_0_CLK_PTP_REF_I                10
+#define R9A09G047_GBETH_1_CLK_PTP_REF_I                11
 
 #endif /* __DT_BINDINGS_CLOCK_RENESAS_R9A09G047_CPG_H__ */
diff --git a/include/dt-bindings/clock/renesas,r9a09g056-cpg.h b/include/dt-bindings/clock/renesas,r9a09g056-cpg.h
new file mode 100644 (file)
index 0000000..f4905b2
--- /dev/null
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+ *
+ * Copyright (C) 2025 Renesas Electronics Corp.
+ */
+#ifndef __DT_BINDINGS_CLOCK_RENESAS_R9A09G056_CPG_H__
+#define __DT_BINDINGS_CLOCK_RENESAS_R9A09G056_CPG_H__
+
+#include <dt-bindings/clock/renesas-cpg-mssr.h>
+
+/* Core Clock list */
+#define R9A09G056_SYS_0_PCLK                   0
+#define R9A09G056_CA55_0_CORE_CLK0             1
+#define R9A09G056_CA55_0_CORE_CLK1             2
+#define R9A09G056_CA55_0_CORE_CLK2             3
+#define R9A09G056_CA55_0_CORE_CLK3             4
+#define R9A09G056_CA55_0_PERIPHCLK             5
+#define R9A09G056_CM33_CLK0                    6
+#define R9A09G056_CST_0_SWCLKTCK               7
+#define R9A09G056_IOTOP_0_SHCLK                        8
+#define R9A09G056_USB2_0_CLK_CORE0             9
+#define R9A09G056_GBETH_0_CLK_PTP_REF_I                10
+#define R9A09G056_GBETH_1_CLK_PTP_REF_I                11
+
+#endif /* __DT_BINDINGS_CLOCK_RENESAS_R9A09G056_CPG_H__ */
index 541e6d719bd63c0764df26d760c2c7d1cb4c3dd6..884dbeb1e139ff2f6ab0fb5a03fde12f7d1ac514 100644 (file)
@@ -17,5 +17,9 @@
 #define R9A09G057_CM33_CLK0                    6
 #define R9A09G057_CST_0_SWCLKTCK               7
 #define R9A09G057_IOTOP_0_SHCLK                        8
+#define R9A09G057_USB2_0_CLK_CORE0             9
+#define R9A09G057_USB2_0_CLK_CORE1             10
+#define R9A09G057_GBETH_0_CLK_PTP_REF_I                11
+#define R9A09G057_GBETH_1_CLK_PTP_REF_I                12
 
 #endif /* __DT_BINDINGS_CLOCK_RENESAS_R9A09G057_CPG_H__ */
index 99cc617e1e54762e363cbca0088a67714248f6c6..5cbc0e2b08ff3a30508b6e7174888b9a1f3e2309 100644 (file)
@@ -47,6 +47,7 @@
 #define SCLK_MACREF            152
 #define SCLK_MACPLL            153
 #define SCLK_SFC               160
+#define SCLK_USB480M           161
 
 /* aclk gates */
 #define ACLK_DMAC2             194
index 55a448f5ed6dd5ea439ef3d4b3173775c0b81566..0245a53fc3343e26f4adb223eb92b43e5744bf09 100644 (file)
 #define MCLK_I2S2_2CH_SAI_SRC_PRE      402
 #define MCLK_I2S3_8CH_SAI_SRC_PRE      403
 #define MCLK_SDPDIF_SRC_PRE            404
+#define SCLK_SDMMC_DRV                 405
+#define SCLK_SDMMC_SAMPLE              406
+#define SCLK_SDIO0_DRV                 407
+#define SCLK_SDIO0_SAMPLE              408
+#define SCLK_SDIO1_DRV                 409
+#define SCLK_SDIO1_SAMPLE              410
 
 /* scmi-clocks indices */
 #define SCMI_PCLK_KEYREADER            0
index f576e61bec7041455e10ac18c92f3b33ec0760e3..ded5ce42e62a7f4bc8058fd71b5e9e1d4580f49c 100644 (file)
 #define SCMI_ARMCLK_B                  11
 #define SCMI_CLK_GPU                   456
 
+/* IOC-controlled output clocks */
+#define CLK_SAI0_MCLKOUT_TO_IO         571
+#define CLK_SAI1_MCLKOUT_TO_IO         572
+#define CLK_SAI2_MCLKOUT_TO_IO         573
+#define CLK_SAI3_MCLKOUT_TO_IO         574
+#define CLK_SAI4_MCLKOUT_TO_IO         575
+#define CLK_SAI4_MCLKOUT_TO_IO         575
+#define CLK_FSPI0_TO_IO                        576
+#define CLK_FSPI1_TO_IO                        577
+
 #endif
index 0c681f2ba3d048279c48f037b0541706a88353cc..5e6896e9627fcf8eb027f12a45de31b6dfa6fa39 100644 (file)
 #define DOUT_CLKCMU_TAA_NOC            146
 #define DOUT_TCXO_DIV2                 147
 
+/* CMU_CPUCL0 */
+#define CLK_FOUT_CPUCL0_PLL            1
+
+#define CLK_MOUT_PLL_CPUCL0            2
+#define CLK_MOUT_CPUCL0_CLUSTER_USER   3
+#define CLK_MOUT_CPUCL0_DBG_USER       4
+#define CLK_MOUT_CPUCL0_SWITCH_USER    5
+#define CLK_MOUT_CPUCL0_CLUSTER                6
+#define CLK_MOUT_CPUCL0_CORE           7
+
+#define CLK_DOUT_CLUSTER0_ACLK         8
+#define CLK_DOUT_CLUSTER0_ATCLK                9
+#define CLK_DOUT_CLUSTER0_MPCLK                10
+#define CLK_DOUT_CLUSTER0_PCLK         11
+#define CLK_DOUT_CLUSTER0_PERIPHCLK    12
+#define CLK_DOUT_CPUCL0_DBG_NOC                13
+#define CLK_DOUT_CPUCL0_DBG_PCLKDBG    14
+#define CLK_DOUT_CPUCL0_NOCP           15
+
+/* CMU_CPUCL1 */
+#define CLK_FOUT_CPUCL1_PLL            1
+
+#define CLK_MOUT_PLL_CPUCL1            2
+#define CLK_MOUT_CPUCL1_CLUSTER_USER   3
+#define CLK_MOUT_CPUCL1_SWITCH_USER    4
+#define CLK_MOUT_CPUCL1_CLUSTER                5
+#define CLK_MOUT_CPUCL1_CORE           6
+
+#define CLK_DOUT_CLUSTER1_ACLK         7
+#define CLK_DOUT_CLUSTER1_ATCLK                8
+#define CLK_DOUT_CLUSTER1_MPCLK                9
+#define CLK_DOUT_CLUSTER1_PCLK         10
+#define CLK_DOUT_CLUSTER1_PERIPHCLK    11
+#define CLK_DOUT_CPUCL1_NOCP           12
+
+/* CMU_CPUCL2 */
+#define CLK_FOUT_CPUCL2_PLL            1
+
+#define CLK_MOUT_PLL_CPUCL2            2
+#define CLK_MOUT_CPUCL2_CLUSTER_USER   3
+#define CLK_MOUT_CPUCL2_SWITCH_USER    4
+#define CLK_MOUT_CPUCL2_CLUSTER                5
+#define CLK_MOUT_CPUCL2_CORE           6
+
+#define CLK_DOUT_CLUSTER2_ACLK         7
+#define CLK_DOUT_CLUSTER2_ATCLK                8
+#define CLK_DOUT_CLUSTER2_MPCLK                9
+#define CLK_DOUT_CLUSTER2_PCLK         10
+#define CLK_DOUT_CLUSTER2_PERIPHCLK    11
+#define CLK_DOUT_CPUCL2_NOCP           12
+
 /* CMU_PERIC0 */
 #define CLK_MOUT_PERIC0_IP_USER                1
 #define CLK_MOUT_PERIC0_NOC_USER       2
diff --git a/include/dt-bindings/clock/sophgo,sg2044-clk.h b/include/dt-bindings/clock/sophgo,sg2044-clk.h
new file mode 100644 (file)
index 0000000..d9adca4
--- /dev/null
@@ -0,0 +1,153 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
+/*
+ * Copyright (C) 2024 Inochi Amaoto <inochiama@gmail.com>
+ */
+
+#ifndef __DT_BINDINGS_SOPHGO_SG2044_CLK_H__
+#define __DT_BINDINGS_SOPHGO_SG2044_CLK_H__
+
+#define CLK_DIV_AP_SYS_FIXED           0
+#define CLK_DIV_AP_SYS_MAIN            1
+#define CLK_DIV_RP_SYS_FIXED           2
+#define CLK_DIV_RP_SYS_MAIN            3
+#define CLK_DIV_TPU_SYS_FIXED          4
+#define CLK_DIV_TPU_SYS_MAIN           5
+#define CLK_DIV_NOC_SYS_FIXED          6
+#define CLK_DIV_NOC_SYS_MAIN           7
+#define CLK_DIV_VC_SRC0_FIXED          8
+#define CLK_DIV_VC_SRC0_MAIN           9
+#define CLK_DIV_VC_SRC1_FIXED          10
+#define CLK_DIV_VC_SRC1_MAIN           11
+#define CLK_DIV_CXP_MAC_FIXED          12
+#define CLK_DIV_CXP_MAC_MAIN           13
+#define CLK_DIV_DDR0_FIXED             14
+#define CLK_DIV_DDR0_MAIN              15
+#define CLK_DIV_DDR1_FIXED             16
+#define CLK_DIV_DDR1_MAIN              17
+#define CLK_DIV_DDR2_FIXED             18
+#define CLK_DIV_DDR2_MAIN              19
+#define CLK_DIV_DDR3_FIXED             20
+#define CLK_DIV_DDR3_MAIN              21
+#define CLK_DIV_DDR4_FIXED             22
+#define CLK_DIV_DDR4_MAIN              23
+#define CLK_DIV_DDR5_FIXED             24
+#define CLK_DIV_DDR5_MAIN              25
+#define CLK_DIV_DDR6_FIXED             26
+#define CLK_DIV_DDR6_MAIN              27
+#define CLK_DIV_DDR7_FIXED             28
+#define CLK_DIV_DDR7_MAIN              29
+#define CLK_DIV_TOP_50M                        30
+#define CLK_DIV_TOP_AXI0               31
+#define CLK_DIV_TOP_AXI_HSPERI         32
+#define CLK_DIV_TIMER0                 33
+#define CLK_DIV_TIMER1                 34
+#define CLK_DIV_TIMER2                 35
+#define CLK_DIV_TIMER3                 36
+#define CLK_DIV_TIMER4                 37
+#define CLK_DIV_TIMER5                 38
+#define CLK_DIV_TIMER6                 39
+#define CLK_DIV_TIMER7                 40
+#define CLK_DIV_CXP_TEST_PHY           41
+#define CLK_DIV_CXP_TEST_ETH_PHY       42
+#define CLK_DIV_C2C0_TEST_PHY          43
+#define CLK_DIV_C2C1_TEST_PHY          44
+#define CLK_DIV_PCIE_1G                        45
+#define CLK_DIV_UART_500M              46
+#define CLK_DIV_GPIO_DB                        47
+#define CLK_DIV_SD                     48
+#define CLK_DIV_SD_100K                        49
+#define CLK_DIV_EMMC                   50
+#define CLK_DIV_EMMC_100K              51
+#define CLK_DIV_EFUSE                  52
+#define CLK_DIV_TX_ETH0                        53
+#define CLK_DIV_PTP_REF_I_ETH0         54
+#define CLK_DIV_REF_ETH0               55
+#define CLK_DIV_PKA                    56
+#define CLK_MUX_DDR0                   57
+#define CLK_MUX_DDR1                   58
+#define CLK_MUX_DDR2                   59
+#define CLK_MUX_DDR3                   60
+#define CLK_MUX_DDR4                   61
+#define CLK_MUX_DDR5                   62
+#define CLK_MUX_DDR6                   63
+#define CLK_MUX_DDR7                   64
+#define CLK_MUX_NOC_SYS                        65
+#define CLK_MUX_TPU_SYS                        66
+#define CLK_MUX_RP_SYS                 67
+#define CLK_MUX_AP_SYS                 68
+#define CLK_MUX_VC_SRC0                        69
+#define CLK_MUX_VC_SRC1                        70
+#define CLK_MUX_CXP_MAC                        71
+#define CLK_GATE_AP_SYS                        72
+#define CLK_GATE_RP_SYS                        73
+#define CLK_GATE_TPU_SYS               74
+#define CLK_GATE_NOC_SYS               75
+#define CLK_GATE_VC_SRC0               76
+#define CLK_GATE_VC_SRC1               77
+#define CLK_GATE_DDR0                  78
+#define CLK_GATE_DDR1                  79
+#define CLK_GATE_DDR2                  80
+#define CLK_GATE_DDR3                  81
+#define CLK_GATE_DDR4                  82
+#define CLK_GATE_DDR5                  83
+#define CLK_GATE_DDR6                  84
+#define CLK_GATE_DDR7                  85
+#define CLK_GATE_TOP_50M               86
+#define CLK_GATE_SC_RX                 87
+#define CLK_GATE_SC_RX_X0Y1            88
+#define CLK_GATE_TOP_AXI0              89
+#define CLK_GATE_INTC0                 90
+#define CLK_GATE_INTC1                 91
+#define CLK_GATE_INTC2                 92
+#define CLK_GATE_INTC3                 93
+#define CLK_GATE_MAILBOX0              94
+#define CLK_GATE_MAILBOX1              95
+#define CLK_GATE_MAILBOX2              96
+#define CLK_GATE_MAILBOX3              97
+#define CLK_GATE_TOP_AXI_HSPERI                98
+#define CLK_GATE_APB_TIMER             99
+#define CLK_GATE_TIMER0                        100
+#define CLK_GATE_TIMER1                        101
+#define CLK_GATE_TIMER2                        102
+#define CLK_GATE_TIMER3                        103
+#define CLK_GATE_TIMER4                        104
+#define CLK_GATE_TIMER5                        105
+#define CLK_GATE_TIMER6                        106
+#define CLK_GATE_TIMER7                        107
+#define CLK_GATE_CXP_CFG               108
+#define CLK_GATE_CXP_MAC               109
+#define CLK_GATE_CXP_TEST_PHY          110
+#define CLK_GATE_CXP_TEST_ETH_PHY      111
+#define CLK_GATE_PCIE_1G               112
+#define CLK_GATE_C2C0_TEST_PHY         113
+#define CLK_GATE_C2C1_TEST_PHY         114
+#define CLK_GATE_UART_500M             115
+#define CLK_GATE_APB_UART              116
+#define CLK_GATE_APB_SPI               117
+#define CLK_GATE_AHB_SPIFMC            118
+#define CLK_GATE_APB_I2C               119
+#define CLK_GATE_AXI_DBG_I2C           120
+#define CLK_GATE_GPIO_DB               121
+#define CLK_GATE_APB_GPIO_INTR         122
+#define CLK_GATE_APB_GPIO              123
+#define CLK_GATE_SD                    124
+#define CLK_GATE_AXI_SD                        125
+#define CLK_GATE_SD_100K               126
+#define CLK_GATE_EMMC                  127
+#define CLK_GATE_AXI_EMMC              128
+#define CLK_GATE_EMMC_100K             129
+#define CLK_GATE_EFUSE                 130
+#define CLK_GATE_APB_EFUSE             131
+#define CLK_GATE_SYSDMA_AXI            132
+#define CLK_GATE_TX_ETH0               133
+#define CLK_GATE_AXI_ETH0              134
+#define CLK_GATE_PTP_REF_I_ETH0                135
+#define CLK_GATE_REF_ETH0              136
+#define CLK_GATE_APB_RTC               137
+#define CLK_GATE_APB_PWM               138
+#define CLK_GATE_APB_WDT               139
+#define CLK_GATE_AXI_SRAM              140
+#define CLK_GATE_AHB_ROM               141
+#define CLK_GATE_PKA                   142
+
+#endif /* __DT_BINDINGS_SOPHGO_SG2044_CLK_H__ */
diff --git a/include/dt-bindings/clock/sophgo,sg2044-pll.h b/include/dt-bindings/clock/sophgo,sg2044-pll.h
new file mode 100644 (file)
index 0000000..817d45e
--- /dev/null
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
+/*
+ * Copyright (C) 2024 Inochi Amaoto <inochiama@gmail.com>
+ */
+
+#ifndef __DT_BINDINGS_SOPHGO_SG2044_PLL_H__
+#define __DT_BINDINGS_SOPHGO_SG2044_PLL_H__
+
+#define CLK_FPLL0                      0
+#define CLK_FPLL1                      1
+#define CLK_FPLL2                      2
+#define CLK_DPLL0                      3
+#define CLK_DPLL1                      4
+#define CLK_DPLL2                      5
+#define CLK_DPLL3                      6
+#define CLK_DPLL4                      7
+#define CLK_DPLL5                      8
+#define CLK_DPLL6                      9
+#define CLK_DPLL7                      10
+#define CLK_MPLL0                      11
+#define CLK_MPLL1                      12
+#define CLK_MPLL2                      13
+#define CLK_MPLL3                      14
+#define CLK_MPLL4                      15
+#define CLK_MPLL5                      16
+
+#endif /* __DT_BINDINGS_SOPHGO_SG2044_PLL_H__ */
diff --git a/include/dt-bindings/clock/spacemit,k1-syscon.h b/include/dt-bindings/clock/spacemit,k1-syscon.h
new file mode 100644 (file)
index 0000000..35968ae
--- /dev/null
@@ -0,0 +1,247 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (C) 2024-2025 Haylen Chu <heylenay@outlook.com>
+ */
+
+#ifndef _DT_BINDINGS_SPACEMIT_CCU_H_
+#define _DT_BINDINGS_SPACEMIT_CCU_H_
+
+/* APBS (PLL) clocks */
+#define CLK_PLL1               0
+#define CLK_PLL2               1
+#define CLK_PLL3               2
+#define CLK_PLL1_D2            3
+#define CLK_PLL1_D3            4
+#define CLK_PLL1_D4            5
+#define CLK_PLL1_D5            6
+#define CLK_PLL1_D6            7
+#define CLK_PLL1_D7            8
+#define CLK_PLL1_D8            9
+#define CLK_PLL1_D11           10
+#define CLK_PLL1_D13           11
+#define CLK_PLL1_D23           12
+#define CLK_PLL1_D64           13
+#define CLK_PLL1_D10_AUD       14
+#define CLK_PLL1_D100_AUD      15
+#define CLK_PLL2_D1            16
+#define CLK_PLL2_D2            17
+#define CLK_PLL2_D3            18
+#define CLK_PLL2_D4            19
+#define CLK_PLL2_D5            20
+#define CLK_PLL2_D6            21
+#define CLK_PLL2_D7            22
+#define CLK_PLL2_D8            23
+#define CLK_PLL3_D1            24
+#define CLK_PLL3_D2            25
+#define CLK_PLL3_D3            26
+#define CLK_PLL3_D4            27
+#define CLK_PLL3_D5            28
+#define CLK_PLL3_D6            29
+#define CLK_PLL3_D7            30
+#define CLK_PLL3_D8            31
+#define CLK_PLL3_80            32
+#define CLK_PLL3_40            33
+#define CLK_PLL3_20            34
+
+/* MPMU clocks */
+#define CLK_PLL1_307P2         0
+#define CLK_PLL1_76P8          1
+#define CLK_PLL1_61P44         2
+#define CLK_PLL1_153P6         3
+#define CLK_PLL1_102P4         4
+#define CLK_PLL1_51P2          5
+#define CLK_PLL1_51P2_AP       6
+#define CLK_PLL1_57P6          7
+#define CLK_PLL1_25P6          8
+#define CLK_PLL1_12P8          9
+#define CLK_PLL1_12P8_WDT      10
+#define CLK_PLL1_6P4           11
+#define CLK_PLL1_3P2           12
+#define CLK_PLL1_1P6           13
+#define CLK_PLL1_0P8           14
+#define CLK_PLL1_409P6         15
+#define CLK_PLL1_204P8         16
+#define CLK_PLL1_491           17
+#define CLK_PLL1_245P76                18
+#define CLK_PLL1_614           19
+#define CLK_PLL1_47P26         20
+#define CLK_PLL1_31P5          21
+#define CLK_PLL1_819           22
+#define CLK_PLL1_1228          23
+#define CLK_SLOW_UART          24
+#define CLK_SLOW_UART1         25
+#define CLK_SLOW_UART2         26
+#define CLK_WDT                        27
+#define CLK_RIPC               28
+#define CLK_I2S_SYSCLK         29
+#define CLK_I2S_BCLK           30
+#define CLK_APB                        31
+#define CLK_WDT_BUS            32
+
+/* APBC clocks */
+#define CLK_UART0              0
+#define CLK_UART2              1
+#define CLK_UART3              2
+#define CLK_UART4              3
+#define CLK_UART5              4
+#define CLK_UART6              5
+#define CLK_UART7              6
+#define CLK_UART8              7
+#define CLK_UART9              8
+#define CLK_GPIO               9
+#define CLK_PWM0               10
+#define CLK_PWM1               11
+#define CLK_PWM2               12
+#define CLK_PWM3               13
+#define CLK_PWM4               14
+#define CLK_PWM5               15
+#define CLK_PWM6               16
+#define CLK_PWM7               17
+#define CLK_PWM8               18
+#define CLK_PWM9               19
+#define CLK_PWM10              20
+#define CLK_PWM11              21
+#define CLK_PWM12              22
+#define CLK_PWM13              23
+#define CLK_PWM14              24
+#define CLK_PWM15              25
+#define CLK_PWM16              26
+#define CLK_PWM17              27
+#define CLK_PWM18              28
+#define CLK_PWM19              29
+#define CLK_SSP3               30
+#define CLK_RTC                        31
+#define CLK_TWSI0              32
+#define CLK_TWSI1              33
+#define CLK_TWSI2              34
+#define CLK_TWSI4              35
+#define CLK_TWSI5              36
+#define CLK_TWSI6              37
+#define CLK_TWSI7              38
+#define CLK_TWSI8              39
+#define CLK_TIMERS1            40
+#define CLK_TIMERS2            41
+#define CLK_AIB                        42
+#define CLK_ONEWIRE            43
+#define CLK_SSPA0              44
+#define CLK_SSPA1              45
+#define CLK_DRO                        46
+#define CLK_IR                 47
+#define CLK_TSEN               48
+#define CLK_IPC_AP2AUD         49
+#define CLK_CAN0               50
+#define CLK_CAN0_BUS           51
+#define CLK_UART0_BUS          52
+#define CLK_UART2_BUS          53
+#define CLK_UART3_BUS          54
+#define CLK_UART4_BUS          55
+#define CLK_UART5_BUS          56
+#define CLK_UART6_BUS          57
+#define CLK_UART7_BUS          58
+#define CLK_UART8_BUS          59
+#define CLK_UART9_BUS          60
+#define CLK_GPIO_BUS           61
+#define CLK_PWM0_BUS           62
+#define CLK_PWM1_BUS           63
+#define CLK_PWM2_BUS           64
+#define CLK_PWM3_BUS           65
+#define CLK_PWM4_BUS           66
+#define CLK_PWM5_BUS           67
+#define CLK_PWM6_BUS           68
+#define CLK_PWM7_BUS           69
+#define CLK_PWM8_BUS           70
+#define CLK_PWM9_BUS           71
+#define CLK_PWM10_BUS          72
+#define CLK_PWM11_BUS          73
+#define CLK_PWM12_BUS          74
+#define CLK_PWM13_BUS          75
+#define CLK_PWM14_BUS          76
+#define CLK_PWM15_BUS          77
+#define CLK_PWM16_BUS          78
+#define CLK_PWM17_BUS          79
+#define CLK_PWM18_BUS          80
+#define CLK_PWM19_BUS          81
+#define CLK_SSP3_BUS           82
+#define CLK_RTC_BUS            83
+#define CLK_TWSI0_BUS          84
+#define CLK_TWSI1_BUS          85
+#define CLK_TWSI2_BUS          86
+#define CLK_TWSI4_BUS          87
+#define CLK_TWSI5_BUS          88
+#define CLK_TWSI6_BUS          89
+#define CLK_TWSI7_BUS          90
+#define CLK_TWSI8_BUS          91
+#define CLK_TIMERS1_BUS                92
+#define CLK_TIMERS2_BUS                93
+#define CLK_AIB_BUS            94
+#define CLK_ONEWIRE_BUS                95
+#define CLK_SSPA0_BUS          96
+#define CLK_SSPA1_BUS          97
+#define CLK_TSEN_BUS           98
+#define CLK_IPC_AP2AUD_BUS     99
+
+/* APMU clocks */
+#define CLK_CCI550             0
+#define CLK_CPU_C0_HI          1
+#define CLK_CPU_C0_CORE                2
+#define CLK_CPU_C0_ACE         3
+#define CLK_CPU_C0_TCM         4
+#define CLK_CPU_C1_HI          5
+#define CLK_CPU_C1_CORE                6
+#define CLK_CPU_C1_ACE         7
+#define CLK_CCIC_4X            8
+#define CLK_CCIC1PHY           9
+#define CLK_SDH_AXI            10
+#define CLK_SDH0               11
+#define CLK_SDH1               12
+#define CLK_SDH2               13
+#define CLK_USB_P1             14
+#define CLK_USB_AXI            15
+#define CLK_USB30              16
+#define CLK_QSPI               17
+#define CLK_QSPI_BUS           18
+#define CLK_DMA                        19
+#define CLK_AES                        20
+#define CLK_VPU                        21
+#define CLK_GPU                        22
+#define CLK_EMMC               23
+#define CLK_EMMC_X             24
+#define CLK_AUDIO              25
+#define CLK_HDMI               26
+#define CLK_PMUA_ACLK          27
+#define CLK_PCIE0_MASTER       28
+#define CLK_PCIE0_SLAVE                29
+#define CLK_PCIE0_DBI          30
+#define CLK_PCIE1_MASTER       31
+#define CLK_PCIE1_SLAVE                32
+#define CLK_PCIE1_DBI          33
+#define CLK_PCIE2_MASTER       34
+#define CLK_PCIE2_SLAVE                35
+#define CLK_PCIE2_DBI          36
+#define CLK_EMAC0_BUS          37
+#define CLK_EMAC0_PTP          38
+#define CLK_EMAC1_BUS          39
+#define CLK_EMAC1_PTP          40
+#define CLK_JPG                        41
+#define CLK_CCIC2PHY           42
+#define CLK_CCIC3PHY           43
+#define CLK_CSI                        44
+#define CLK_CAMM0              45
+#define CLK_CAMM1              46
+#define CLK_CAMM2              47
+#define CLK_ISP_CPP            48
+#define CLK_ISP_BUS            49
+#define CLK_ISP                        50
+#define CLK_DPU_MCLK           51
+#define CLK_DPU_ESC            52
+#define CLK_DPU_BIT            53
+#define CLK_DPU_PXCLK          54
+#define CLK_DPU_HCLK           55
+#define CLK_DPU_SPI            56
+#define CLK_DPU_SPI_HBUS       57
+#define CLK_DPU_SPIBUS         58
+#define CLK_DPU_SPI_ACLK       59
+#define CLK_V2D                        60
+#define CLK_EMMC_BUS           61
+
+#endif /* _DT_BINDINGS_SPACEMIT_CCU_H_ */
index 6637272b324244f96497817756aa1e25102c1ba0..330b39c2c303850b6b63e3bb6ab3bd02e8d219b2 100644 (file)
 #define ADC3_CK 128
 #define DSI_CK 129
 #define LTDC_CK 130
-#define USART8_CK 131
-#define USART7_CK 132
+#define UART8_CK 131
+#define UART7_CK 132
 #define HDMICEC_CK 133
 #define I2C3_CK 134
 #define I2C2_CK 135
index 014ac6123d1760c43484e6c116eaca423b490cf5..c4055629c9f93f28bcd56803082a12ec120e4051 100644 (file)
@@ -96,7 +96,7 @@
 #define CLK_TCON0              64
 #define CLK_CSI_MISC           65
 #define CLK_CSI0_MCLK          66
-#define CLK_CSI1_SCLK          67
+#define CLK_CSI_SCLK           67
 #define CLK_CSI1_MCLK          68
 #define CLK_VE                 69
 #define CLK_AC_DIG             70
index a199784b351243ed624496a96421043e1171e04c..09a9aa7b3ab19a8f73c40931ff9cec5b7645d83a 100644 (file)
 #define CLK_SRAM3              83
 #define CLK_PLL_GMAC_100M      84
 #define CLK_UART_SCLK          85
+
+/* VO clocks */
+#define CLK_AXI4_VO_ACLK               0
+#define CLK_GPU_MEM                    1
+#define CLK_GPU_CORE                   2
+#define CLK_GPU_CFG_ACLK               3
+#define CLK_DPU_PIXELCLK0              4
+#define CLK_DPU_PIXELCLK1              5
+#define CLK_DPU_HCLK                   6
+#define CLK_DPU_ACLK                   7
+#define CLK_DPU_CCLK                   8
+#define CLK_HDMI_SFR                   9
+#define CLK_HDMI_PCLK                  10
+#define CLK_HDMI_CEC                   11
+#define CLK_MIPI_DSI0_PCLK             12
+#define CLK_MIPI_DSI1_PCLK             13
+#define CLK_MIPI_DSI0_CFG              14
+#define CLK_MIPI_DSI1_CFG              15
+#define CLK_MIPI_DSI0_REFCLK           16
+#define CLK_MIPI_DSI1_REFCLK           17
+#define CLK_HDMI_I2S                   18
+#define CLK_X2H_DPU1_ACLK              19
+#define CLK_X2H_DPU_ACLK               20
+#define CLK_AXI4_VO_PCLK               21
+#define CLK_IOPMP_VOSYS_DPU_PCLK       22
+#define CLK_IOPMP_VOSYS_DPU1_PCLK      23
+#define CLK_IOPMP_VOSYS_GPU_PCLK       24
+#define CLK_IOPMP_DPU1_ACLK            25
+#define CLK_IOPMP_DPU_ACLK             26
+#define CLK_IOPMP_GPU_ACLK             27
+#define CLK_MIPIDSI0_PIXCLK            28
+#define CLK_MIPIDSI1_PIXCLK            29
+#define CLK_HDMI_PIXCLK                        30
+
 #endif
diff --git a/include/dt-bindings/iio/adc/adi,ad7606.h b/include/dt-bindings/iio/adc/adi,ad7606.h
new file mode 100644 (file)
index 0000000..f38a6d7
--- /dev/null
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+
+#ifndef _DT_BINDINGS_ADI_AD7606_H
+#define _DT_BINDINGS_ADI_AD7606_H
+
+#define AD7606_TRIGGER_EVENT_BUSY      0
+#define AD7606_TRIGGER_EVENT_FRSTDATA  1
+
+#endif /* _DT_BINDINGS_ADI_AD7606_H */
index 5a199f3d4a26a22a94e51d4b53aeed3767c97bce..3b2524e4b667d1e7cc02ff5cb674e7c2ac069a66 100644 (file)
 #define SW_MUTE_DEVICE         0x0e  /* set = device disabled */
 #define SW_PEN_INSERTED                0x0f  /* set = pen inserted */
 #define SW_MACHINE_COVER       0x10  /* set = cover closed */
-#define SW_MAX                 0x10
+#define SW_USB_INSERT          0x11  /* set = USB audio device connected */
+#define SW_MAX                 0x11
 #define SW_CNT                 (SW_MAX+1)
 
 /*
index 6c1eaf04e24103c9b82ff28811c058e5203c4079..1216aa352d55e095a9cdbd45102725768b01e78f 100644 (file)
 #define MASTER_A1NOC_SNOC                      0
 #define MASTER_A2NOC_SNOC                      1
 #define SLAVE_SNOC_GEM_NOC_SF                  2
+#define MASTER_APSS_NOC                                3
 
 #endif
diff --git a/include/dt-bindings/memory/mediatek,mt6893-memory-port.h b/include/dt-bindings/memory/mediatek,mt6893-memory-port.h
new file mode 100644 (file)
index 0000000..26e8b40
--- /dev/null
@@ -0,0 +1,288 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2020 MediaTek Inc.
+ * Copyright (c) 2025 Collabora Ltd
+ *                    AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+ */
+#ifndef _DT_BINDINGS_MEMORY_MT6893_LARB_PORT_H_
+#define _DT_BINDINGS_MEMORY_MT6893_LARB_PORT_H_
+
+#include <dt-bindings/memory/mtk-memory-port.h>
+
+/*
+ * MM IOMMU supports 16GB dma address.
+ *
+ * The address will preassign like this:
+ *
+ * modules    dma-address-region       larbs-ports
+ * disp         0 ~ 4G                  larb0/2
+ * vcodec      4G ~ 8G                  larb4/5/7
+ * cam/mdp     8G ~ 12G                 larb9/11/13/14/16/17/18/19/20
+ * CCU0    0x4000_0000 ~ 0x43ff_ffff    larb13: port 9/10
+ * CCU1    0x4400_0000 ~ 0x47ff_ffff    larb14: port 4/5
+ *
+ * larb3/6/8/10/12/15 are null.
+ */
+
+/* larb0 */
+#define M4U_PORT_L0_DISP_POSTMASK0             MTK_M4U_DOM_ID(0, 0)
+#define M4U_PORT_L0_MDP_RDMA4                  MTK_M4U_DOM_ID(0, 1)
+#define M4U_PORT_L0_OVL_RDMA0_HDR              MTK_M4U_DOM_ID(0, 2)
+#define M4U_PORT_L0_OVL_2L_RDMA1_HDR           MTK_M4U_DOM_ID(0, 3)
+#define M4U_PORT_L0_OVL_2L_RDMA3_HDR           MTK_M4U_DOM_ID(0, 4)
+#define M4U_PORT_L0_OVL_RDMA0                  MTK_M4U_DOM_ID(0, 5)
+#define M4U_PORT_L0_OVL_2L_RDMA1               MTK_M4U_DOM_ID(0, 6)
+#define M4U_PORT_L0_OVL_2L_RDMA3               MTK_M4U_DOM_ID(0, 7)
+#define M4U_PORT_L0_OVL_RDMA1_SYSRAM           MTK_M4U_DOM_ID(0, 8)
+#define M4U_PORT_L0_OVL_2L_RDMA0_SYSRAM                MTK_M4U_DOM_ID(0, 9)
+#define M4U_PORT_L0_OVL_2L_RDMA2_SYSRAM                MTK_M4U_DOM_ID(0, 10)
+#define M4U_PORT_L0_DISP_WDMA0                 MTK_M4U_DOM_ID(0, 11)
+#define M4U_PORT_L0_DISP_RDMA0                 MTK_M4U_DOM_ID(0, 12)
+#define M4U_PORT_L0_DISP_UFBC_WDMA0            MTK_M4U_DOM_ID(0, 13)
+#define M4U_PORT_L0_DISP_FAKE0                 MTK_M4U_DOM_ID(0, 14)
+
+/* larb1 */
+#define M4U_PORT_L1_DISP_POSTMASK1             MTK_M4U_DOM_ID(1, 0)
+#define M4U_PORT_L1_MDP_RDMA5                  MTK_M4U_DOM_ID(1, 1)
+#define M4U_PORT_L1_OVL_RDMA1_HDR              MTK_M4U_DOM_ID(1, 2)
+#define M4U_PORT_L1_OVL_2L_RDMA0_HDR           MTK_M4U_DOM_ID(1, 3)
+#define M4U_PORT_L1_OVL_2L_RDMA2_HDR           MTK_M4U_DOM_ID(1, 4)
+#define M4U_PORT_L1_OVL_RDMA1                  MTK_M4U_DOM_ID(1, 5)
+#define M4U_PORT_L1_OVL_2L_RDMA0               MTK_M4U_DOM_ID(1, 6)
+#define M4U_PORT_L1_OVL_2L_RDMA2               MTK_M4U_DOM_ID(1, 7)
+#define M4U_PORT_L1_OVL_RDMA0_SYSRAM           MTK_M4U_DOM_ID(1, 8)
+#define M4U_PORT_L1_OVL_2L_RDMA1_SYSRAM                MTK_M4U_DOM_ID(1, 9)
+#define M4U_PORT_L1_OVL_2L_RDMA3_SYSRAM                MTK_M4U_DOM_ID(1, 10)
+#define M4U_PORT_L1_DISP_WDMA1                 MTK_M4U_DOM_ID(1, 11)
+#define M4U_PORT_L1_DISP_RDMA1                 MTK_M4U_DOM_ID(1, 12)
+#define M4U_PORT_L1_DISP_UFBC_WDMA1            MTK_M4U_DOM_ID(1, 13)
+#define M4U_PORT_L1_DISP_FAKE1                 MTK_M4U_DOM_ID(1, 14)
+
+/* larb2 */
+#define M4U_PORT_L2_MDP_RDMA0                  MTK_M4U_DOM_ID(2, 0)
+#define M4U_PORT_L2_MDP_RDMA2                  MTK_M4U_DOM_ID(2, 1)
+#define M4U_PORT_L2_MDP_WROT0                  MTK_M4U_DOM_ID(2, 2)
+#define M4U_PORT_L2_MDP_WROT2                  MTK_M4U_DOM_ID(2, 3)
+#define M4U_PORT_L2_MDP_FILMGRAIN0             MTK_M4U_DOM_ID(2, 4)
+#define M4U_PORT_L2_MDP_FAKE0                  MTK_M4U_DOM_ID(2, 5)
+
+/* larb3: null */
+
+/* larb4 */
+#define M4U_PORT_L4_VDEC_MC_EXT_MDP            MTK_M4U_DOM_ID(4, 0)
+#define M4U_PORT_L4_VDEC_UFO_EXT_MDP           MTK_M4U_DOM_ID(4, 1)
+#define M4U_PORT_L4_VDEC_PP_EXT_MDP            MTK_M4U_DOM_ID(4, 2)
+#define M4U_PORT_L4_VDEC_PRED_RD_EXT_MDP       MTK_M4U_DOM_ID(4, 3)
+#define M4U_PORT_L4_VDEC_PRED_WR_EXT_MDP       MTK_M4U_DOM_ID(4, 4)
+#define M4U_PORT_L4_VDEC_PPWRAP_EXT_MDP                MTK_M4U_DOM_ID(4, 5)
+#define M4U_PORT_L4_VDEC_TILE_EXT_MDP          MTK_M4U_DOM_ID(4, 6)
+#define M4U_PORT_L4_VDEC_VLD_EXT_MDP           MTK_M4U_DOM_ID(4, 7)
+#define M4U_PORT_L4_VDEC_VLD2_EXT_MDP          MTK_M4U_DOM_ID(4, 8)
+#define M4U_PORT_L4_VDEC_AVC_MV_EXT_MDP                MTK_M4U_DOM_ID(4, 9)
+#define M4U_PORT_L4_VDEC_RG_CTRL_DMA_EXT_MDP   MTK_M4U_DOM_ID(4, 10)
+
+/* larb5 */
+#define M4U_PORT_L5_VDEC_LAT0_VLD_EXT_DISP     MTK_M4U_DOM_ID(5, 0)
+#define M4U_PORT_L5_VDEC_LAT0_VLD2_EXT_DISP    MTK_M4U_DOM_ID(5, 1)
+#define M4U_PORT_L5_VDEC_LAT0_AVC_MV_EXT_DISP  MTK_M4U_DOM_ID(5, 2)
+#define M4U_PORT_L5_VDEC_LAT0_PRED_RD_EXT_DISP MTK_M4U_DOM_ID(5, 3)
+#define M4U_PORT_L5_VDEC_LAT0_TILE_EXT_DISP    MTK_M4U_DOM_ID(5, 4)
+#define M4U_PORT_L5_VDEC_LAT0_WDMA_EXT_DISP    MTK_M4U_DOM_ID(5, 5)
+#define M4U_PORT_L5_VDEC_LAT0_RG_CTRL_DMA_EXT_DISP MTK_M4U_DOM_ID(5, 6)
+#define M4U_PORT_L5_VDEC_UFO_ENC_EXT_DISP      MTK_M4U_DOM_ID(5, 7)
+
+/* larb6: null */
+
+/* larb7 */
+#define M4U_PORT_L7_VENC_RCPU_DISP             MTK_M4U_DOM_ID(7, 0)
+#define M4U_PORT_L7_VENC_REC_DISP              MTK_M4U_DOM_ID(7, 1)
+#define M4U_PORT_L7_VENC_BSDMA_DISP            MTK_M4U_DOM_ID(7, 2)
+#define M4U_PORT_L7_VENC_SV_COMV_DISP          MTK_M4U_DOM_ID(7, 3)
+#define M4U_PORT_L7_VENC_RD_COMV_DISP          MTK_M4U_DOM_ID(7, 4)
+#define M4U_PORT_L7_VENC_NBM_RDMA_DISP         MTK_M4U_DOM_ID(7, 5)
+#define M4U_PORT_L7_VENC_NBM_RDMA_LITE_DISP    MTK_M4U_DOM_ID(7, 6)
+#define M4U_PORT_L7_JPGENC_Y_RDMA_DISP         MTK_M4U_DOM_ID(7, 7)
+#define M4U_PORT_L7_JPGENC_C_RDMA_DISP         MTK_M4U_DOM_ID(7, 8)
+#define M4U_PORT_L7_JPGENC_Q_TABLE_DISP                MTK_M4U_DOM_ID(7, 9)
+#define M4U_PORT_L7_JPGENC_BSDMA_DISP          MTK_M4U_DOM_ID(7, 10)
+#define M4U_PORT_L7_JPGENC_WDMA0_DISP          MTK_M4U_DOM_ID(7, 11)
+#define M4U_PORT_L7_JPGENC_BSDMA0_DISP         MTK_M4U_DOM_ID(7, 12)
+#define M4U_PORT_L7_VENC_NBM_WDMA_DISP         MTK_M4U_DOM_ID(7, 13)
+#define M4U_PORT_L7_VENC_NBM_WDMA_LITE_DISP    MTK_M4U_DOM_ID(7, 14)
+#define M4U_PORT_L7_VENC_CUR_LUMA_DISP         MTK_M4U_DOM_ID(7, 15)
+#define M4U_PORT_L7_VENC_CUR_CHROMA_DISP       MTK_M4U_DOM_ID(7, 16)
+#define M4U_PORT_L7_VENC_REF_LUMA_DISP         MTK_M4U_DOM_ID(7, 17)
+#define M4U_PORT_L7_VENC_REF_CHROMA_DISP       MTK_M4U_DOM_ID(7, 18)
+#define M4U_PORT_L7_VENC_SUB_R_LUMA_DISP       MTK_M4U_DOM_ID(7, 19)
+#define M4U_PORT_L7_VENC_SUB_W_LUMA_DISP       MTK_M4U_DOM_ID(7, 20)
+#define M4U_PORT_L7_VENC_FCS_NBM_RDMA_DISP     MTK_M4U_DOM_ID(7, 21)
+#define M4U_PORT_L7_VENC_FCS_NBM_WDMA_DISP     MTK_M4U_DOM_ID(7, 22)
+#define M4U_PORT_L7_JPGENC_WDMA1_DISP          MTK_M4U_DOM_ID(7, 23)
+#define M4U_PORT_L7_JPGENC_BSDMA1_DISP         MTK_M4U_DOM_ID(7, 24)
+#define M4U_PORT_L7_JPGENC_HUFF_OFFSET1_DISP   MTK_M4U_DOM_ID(7, 25)
+#define M4U_PORT_L7_JPGENC_HUFF_OFFSET0_DISP   MTK_M4U_DOM_ID(7, 26)
+
+/* larb8: null */
+
+/* larb9 */
+#define M4U_PORT_L9_IMG_IMGI_D1_MDP            MTK_M4U_DOM_ID(9, 0)
+#define M4U_PORT_L9_IMG_IMGBI_D1_MDP           MTK_M4U_DOM_ID(9, 1)
+#define M4U_PORT_L9_IMG_DMGI_D1_MDP            MTK_M4U_DOM_ID(9, 2)
+#define M4U_PORT_L9_IMG_DEPI_D1_MDP            MTK_M4U_DOM_ID(9, 3)
+#define M4U_PORT_L9_IMG_ICE_D1_MDP             MTK_M4U_DOM_ID(9, 4)
+#define M4U_PORT_L9_IMG_SMTI_D1_MDP            MTK_M4U_DOM_ID(9, 5)
+#define M4U_PORT_L9_IMG_SMTO_D2_MDP            MTK_M4U_DOM_ID(9, 6)
+#define M4U_PORT_L9_IMG_SMTO_D1_MDP            MTK_M4U_DOM_ID(9, 7)
+#define M4U_PORT_L9_IMG_CRZO_D1_MDP            MTK_M4U_DOM_ID(9, 8)
+#define M4U_PORT_L9_IMG_IMG3O_D1_MDP           MTK_M4U_DOM_ID(9, 9)
+#define M4U_PORT_L9_IMG_VIPI_D1_MDP            MTK_M4U_DOM_ID(9, 10)
+#define M4U_PORT_L9_IMG_SMTI_D5_MDP            MTK_M4U_DOM_ID(9, 11)
+#define M4U_PORT_L9_IMG_TIMGO_D1_MDP           MTK_M4U_DOM_ID(9, 12)
+#define M4U_PORT_L9_IMG_UFBC_W0_MDP            MTK_M4U_DOM_ID(9, 13)
+#define M4U_PORT_L9_IMG_UFBC_R0_MDP            MTK_M4U_DOM_ID(9, 14)
+#define M4U_PORT_L9_IMG_WPE_RDMA1_MDP          MTK_M4U_DOM_ID(9, 15)
+#define M4U_PORT_L9_IMG_WPE_RDMA0_MDP          MTK_M4U_DOM_ID(9, 16)
+#define M4U_PORT_L9_IMG_WPE_WDMA_MDP           MTK_M4U_DOM_ID(9, 17)
+#define M4U_PORT_L9_IMG_MFB_RDMA0_MDP          MTK_M4U_DOM_ID(9, 18)
+#define M4U_PORT_L9_IMG_MFB_RDMA1_MDP          MTK_M4U_DOM_ID(9, 19)
+#define M4U_PORT_L9_IMG_MFB_RDMA2_MDP          MTK_M4U_DOM_ID(9, 20)
+#define M4U_PORT_L9_IMG_MFB_RDMA3_MDP          MTK_M4U_DOM_ID(9, 21)
+#define M4U_PORT_L9_IMG_MFB_RDMA4_MDP          MTK_M4U_DOM_ID(9, 22)
+#define M4U_PORT_L9_IMG_MFB_RDMA5_MDP          MTK_M4U_DOM_ID(9, 23)
+#define M4U_PORT_L9_IMG_MFB_WDMA0_MDP          MTK_M4U_DOM_ID(9, 24)
+#define M4U_PORT_L9_IMG_MFB_WDMA1_MDP          MTK_M4U_DOM_ID(9, 25)
+#define M4U_PORT_L9_IMG_RESERVE6_MDP           MTK_M4U_DOM_ID(9, 26)
+#define M4U_PORT_L9_IMG_RESERVE7_MDP           MTK_M4U_DOM_ID(9, 27)
+#define M4U_PORT_L9_IMG_RESERVE8_MDP           MTK_M4U_DOM_ID(9, 28)
+
+/* larb10: null */
+
+/* larb11 */
+#define M4U_PORT_L11_IMG_IMGI_D1_DISP          MTK_M4U_DOM_ID(11, 0)
+#define M4U_PORT_L11_IMG_IMGBI_D1_DISP         MTK_M4U_DOM_ID(11, 1)
+#define M4U_PORT_L11_IMG_DMGI_D1_DISP          MTK_M4U_DOM_ID(11, 2)
+#define M4U_PORT_L11_IMG_DEPI_D1_DISP          MTK_M4U_DOM_ID(11, 3)
+#define M4U_PORT_L11_IMG_ICE_D1_DISP           MTK_M4U_DOM_ID(11, 4)
+#define M4U_PORT_L11_IMG_SMTI_D1_DISP          MTK_M4U_DOM_ID(11, 5)
+#define M4U_PORT_L11_IMG_SMTO_D2_DISP          MTK_M4U_DOM_ID(11, 6)
+#define M4U_PORT_L11_IMG_SMTO_D1_DISP          MTK_M4U_DOM_ID(11, 7)
+#define M4U_PORT_L11_IMG_CRZO_D1_DISP          MTK_M4U_DOM_ID(11, 8)
+#define M4U_PORT_L11_IMG_IMG3O_D1_DISP         MTK_M4U_DOM_ID(11, 9)
+#define M4U_PORT_L11_IMG_VIPI_D1_DISP          MTK_M4U_DOM_ID(11, 10)
+#define M4U_PORT_L11_IMG_SMTI_D5_DISP          MTK_M4U_DOM_ID(11, 11)
+#define M4U_PORT_L11_IMG_TIMGO_D1_DISP         MTK_M4U_DOM_ID(11, 12)
+#define M4U_PORT_L11_IMG_UFBC_W0_DISP          MTK_M4U_DOM_ID(11, 13)
+#define M4U_PORT_L11_IMG_UFBC_R0_DISP          MTK_M4U_DOM_ID(11, 14)
+#define M4U_PORT_L11_IMG_WPE_RDMA1_DISP                MTK_M4U_DOM_ID(11, 15)
+#define M4U_PORT_L11_IMG_WPE_RDMA0_DISP                MTK_M4U_DOM_ID(11, 16)
+#define M4U_PORT_L11_IMG_WPE_WDMA_DISP         MTK_M4U_DOM_ID(11, 17)
+#define M4U_PORT_L11_IMG_MFB_RDMA0_DISP                MTK_M4U_DOM_ID(11, 18)
+#define M4U_PORT_L11_IMG_MFB_RDMA1_DISP                MTK_M4U_DOM_ID(11, 19)
+#define M4U_PORT_L11_IMG_MFB_RDMA2_DISP                MTK_M4U_DOM_ID(11, 20)
+#define M4U_PORT_L11_IMG_MFB_RDMA3_DISP                MTK_M4U_DOM_ID(11, 21)
+#define M4U_PORT_L11_IMG_MFB_RDMA4_DISP                MTK_M4U_DOM_ID(11, 22)
+#define M4U_PORT_L11_IMG_MFB_RDMA5_DISP                MTK_M4U_DOM_ID(11, 23)
+#define M4U_PORT_L11_IMG_MFB_WDMA0_DISP                MTK_M4U_DOM_ID(11, 24)
+#define M4U_PORT_L11_IMG_MFB_WDMA1_DISP                MTK_M4U_DOM_ID(11, 25)
+#define M4U_PORT_L11_IMG_RESERVE6_DISP         MTK_M4U_DOM_ID(11, 26)
+#define M4U_PORT_L11_IMG_RESERVE7_DISP         MTK_M4U_DOM_ID(11, 27)
+#define M4U_PORT_L11_IMG_RESERVE8_DISP         MTK_M4U_DOM_ID(11, 28)
+
+/* larb12: null */
+
+/* larb13 */
+#define M4U_PORT_L13_CAM_MRAWI_MDP             MTK_M4U_DOM_ID(13, 0)
+#define M4U_PORT_L13_CAM_MRAWO0_MDP            MTK_M4U_DOM_ID(13, 1)
+#define M4U_PORT_L13_CAM_MRAWO1_MDP            MTK_M4U_DOM_ID(13, 2)
+#define M4U_PORT_L13_CAM_CAMSV1_MDP            MTK_M4U_DOM_ID(13, 3)
+#define M4U_PORT_L13_CAM_CAMSV2_MDP            MTK_M4U_DOM_ID(13, 4)
+#define M4U_PORT_L13_CAM_CAMSV3_MDP            MTK_M4U_DOM_ID(13, 5)
+#define M4U_PORT_L13_CAM_CAMSV4_MDP            MTK_M4U_DOM_ID(13, 6)
+#define M4U_PORT_L13_CAM_CAMSV5_MDP            MTK_M4U_DOM_ID(13, 7)
+#define M4U_PORT_L13_CAM_CAMSV6_MDP            MTK_M4U_DOM_ID(13, 8)
+#define M4U_PORT_L13_CAM_CCUI_MDP              MTK_M4U_DOM_ID(13, 9)
+#define M4U_PORT_L13_CAM_CCUO_MDP              MTK_M4U_DOM_ID(13, 10)
+#define M4U_PORT_L13_CAM_FAKE_MDP              MTK_M4U_DOM_ID(13, 11)
+
+/* larb14 */
+#define M4U_PORT_L14_CAM_MRAWI_DISP            MTK_M4U_DOM_ID(14, 0)
+#define M4U_PORT_L14_CAM_MRAWO0_DISP           MTK_M4U_DOM_ID(14, 1)
+#define M4U_PORT_L14_CAM_MRAWO1_DISP           MTK_M4U_DOM_ID(14, 2)
+#define M4U_PORT_L14_CAM_CAMSV0_DISP           MTK_M4U_DOM_ID(14, 3)
+#define M4U_PORT_L14_CAM_CCUI_DISP             MTK_M4U_DOM_ID(14, 4)
+#define M4U_PORT_L14_CAM_CCUO_DISP             MTK_M4U_DOM_ID(14, 5)
+
+/* larb15: null */
+
+/* larb16 */
+#define M4U_PORT_L16_CAM_IMGO_R1_A_MDP         MTK_M4U_DOM_ID(16, 0)
+#define M4U_PORT_L16_CAM_RRZO_R1_A_MDP         MTK_M4U_DOM_ID(16, 1)
+#define M4U_PORT_L16_CAM_CQI_R1_A_MDP          MTK_M4U_DOM_ID(16, 2)
+#define M4U_PORT_L16_CAM_BPCI_R1_A_MDP         MTK_M4U_DOM_ID(16, 3)
+#define M4U_PORT_L16_CAM_YUVO_R1_A_MDP         MTK_M4U_DOM_ID(16, 4)
+#define M4U_PORT_L16_CAM_UFDI_R2_A_MDP         MTK_M4U_DOM_ID(16, 5)
+#define M4U_PORT_L16_CAM_RAWI_R2_A_MDP         MTK_M4U_DOM_ID(16, 6)
+#define M4U_PORT_L16_CAM_RAWI_R3_A_MDP         MTK_M4U_DOM_ID(16, 7)
+#define M4U_PORT_L16_CAM_AAO_R1_A_MDP          MTK_M4U_DOM_ID(16, 8)
+#define M4U_PORT_L16_CAM_AFO_R1_A_MDP          MTK_M4U_DOM_ID(16, 9)
+#define M4U_PORT_L16_CAM_FLKO_R1_A_MDP         MTK_M4U_DOM_ID(16, 10)
+#define M4U_PORT_L16_CAM_LCESO_R1_A_MDP                MTK_M4U_DOM_ID(16, 11)
+#define M4U_PORT_L16_CAM_CRZO_R1_A_MDP         MTK_M4U_DOM_ID(16, 12)
+#define M4U_PORT_L16_CAM_LTMSO_R1_A_MDP                MTK_M4U_DOM_ID(16, 13)
+#define M4U_PORT_L16_CAM_RSSO_R1_A_MDP         MTK_M4U_DOM_ID(16, 14)
+#define M4U_PORT_L16_CAM_AAHO_R1_A_MDP         MTK_M4U_DOM_ID(16, 15)
+#define M4U_PORT_L16_CAM_LSCI_R1_A_MDP         MTK_M4U_DOM_ID(16, 16)
+
+/* larb17 */
+#define M4U_PORT_L17_CAM_IMGO_R1_B_DISP                MTK_M4U_DOM_ID(17, 0)
+#define M4U_PORT_L17_CAM_RRZO_R1_B_DISP                MTK_M4U_DOM_ID(17, 1)
+#define M4U_PORT_L17_CAM_CQI_R1_B_DISP         MTK_M4U_DOM_ID(17, 2)
+#define M4U_PORT_L17_CAM_BPCI_R1_B_DISP                MTK_M4U_DOM_ID(17, 3)
+#define M4U_PORT_L17_CAM_YUVO_R1_B_DISP                MTK_M4U_DOM_ID(17, 4)
+#define M4U_PORT_L17_CAM_UFDI_R2_B_DISP                MTK_M4U_DOM_ID(17, 5)
+#define M4U_PORT_L17_CAM_RAWI_R2_B_DISP                MTK_M4U_DOM_ID(17, 6)
+#define M4U_PORT_L17_CAM_RAWI_R3_B_DISP                MTK_M4U_DOM_ID(17, 7)
+#define M4U_PORT_L17_CAM_AAO_R1_B_DISP         MTK_M4U_DOM_ID(17, 8)
+#define M4U_PORT_L17_CAM_AFO_R1_B_DISP         MTK_M4U_DOM_ID(17, 9)
+#define M4U_PORT_L17_CAM_FLKO_R1_B_DISP                MTK_M4U_DOM_ID(17, 10)
+#define M4U_PORT_L17_CAM_LCESO_R1_B_DISP       MTK_M4U_DOM_ID(17, 11)
+#define M4U_PORT_L17_CAM_CRZO_R1_B_DISP                MTK_M4U_DOM_ID(17, 12)
+#define M4U_PORT_L17_CAM_LTMSO_R1_B_DISP       MTK_M4U_DOM_ID(17, 13)
+#define M4U_PORT_L17_CAM_RSSO_R1_B_DISP                MTK_M4U_DOM_ID(17, 14)
+#define M4U_PORT_L17_CAM_AAHO_R1_B_DISP                MTK_M4U_DOM_ID(17, 15)
+#define M4U_PORT_L17_CAM_LSCI_R1_B_DISP                MTK_M4U_DOM_ID(17, 16)
+
+/* larb18 */
+#define M4U_PORT_L18_CAM_IMGO_R1_C_MDP         MTK_M4U_DOM_ID(18, 0)
+#define M4U_PORT_L18_CAM_RRZO_R1_C_MDP         MTK_M4U_DOM_ID(18, 1)
+#define M4U_PORT_L18_CAM_CQI_R1_C_MDP          MTK_M4U_DOM_ID(18, 2)
+#define M4U_PORT_L18_CAM_BPCI_R1_C_MDP         MTK_M4U_DOM_ID(18, 3)
+#define M4U_PORT_L18_CAM_YUVO_R1_C_MDP         MTK_M4U_DOM_ID(18, 4)
+#define M4U_PORT_L18_CAM_UFDI_R2_C_MDP         MTK_M4U_DOM_ID(18, 5)
+#define M4U_PORT_L18_CAM_RAWI_R2_C_MDP         MTK_M4U_DOM_ID(18, 6)
+#define M4U_PORT_L18_CAM_RAWI_R3_C_MDP         MTK_M4U_DOM_ID(18, 7)
+#define M4U_PORT_L18_CAM_AAO_R1_C_MDP          MTK_M4U_DOM_ID(18, 8)
+#define M4U_PORT_L18_CAM_AFO_R1_C_MDP          MTK_M4U_DOM_ID(18, 9)
+#define M4U_PORT_L18_CAM_FLKO_R1_C_MDP         MTK_M4U_DOM_ID(18, 10)
+#define M4U_PORT_L18_CAM_LCESO_R1_C_MDP                MTK_M4U_DOM_ID(18, 11)
+#define M4U_PORT_L18_CAM_CRZO_R1_C_MDP         MTK_M4U_DOM_ID(18, 12)
+#define M4U_PORT_L18_CAM_LTMSO_R1_C_MDP                MTK_M4U_DOM_ID(18, 13)
+#define M4U_PORT_L18_CAM_RSSO_R1_C_MDP         MTK_M4U_DOM_ID(18, 14)
+#define M4U_PORT_L18_CAM_AAHO_R1_C_MDP         MTK_M4U_DOM_ID(18, 15)
+#define M4U_PORT_L18_CAM_LSCI_R1_C_MDP         MTK_M4U_DOM_ID(18, 16)
+
+/* larb19 */
+#define M4U_PORT_L19_IPE_DVS_RDMA_DISP         MTK_M4U_DOM_ID(19, 0)
+#define M4U_PORT_L19_IPE_DVS_WDMA_DISP         MTK_M4U_DOM_ID(19, 1)
+#define M4U_PORT_L19_IPE_DVP_RDMA_DISP         MTK_M4U_DOM_ID(19, 2)
+#define M4U_PORT_L19_IPE_DVP_WDMA_DISP         MTK_M4U_DOM_ID(19, 3)
+
+/* larb20 */
+#define M4U_PORT_L20_IPE_FDVT_RDA_DISP         MTK_M4U_DOM_ID(20, 0)
+#define M4U_PORT_L20_IPE_FDVT_RDB_DISP         MTK_M4U_DOM_ID(20, 1)
+#define M4U_PORT_L20_IPE_FDVT_WRA_DISP         MTK_M4U_DOM_ID(20, 2)
+#define M4U_PORT_L20_IPE_FDVT_WRB_DISP         MTK_M4U_DOM_ID(20, 3)
+#define M4U_PORT_L20_IPE_RSC_RDMA0_DISP                MTK_M4U_DOM_ID(20, 4)
+#define M4U_PORT_L20_IPE_RSC_WDMA_DISP         MTK_M4U_DOM_ID(20, 5)
+
+#endif
diff --git a/include/dt-bindings/power/mediatek,mt6893-power.h b/include/dt-bindings/power/mediatek,mt6893-power.h
new file mode 100644 (file)
index 0000000..aeab51b
--- /dev/null
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
+/*
+ * Copyright (c) 2025 Collabora Ltd
+ *                    AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
+ */
+
+#ifndef _DT_BINDINGS_POWER_MT6893_POWER_H
+#define _DT_BINDINGS_POWER_MT6893_POWER_H
+
+#define MT6893_POWER_DOMAIN_CONN               0
+#define MT6893_POWER_DOMAIN_MFG0               1
+#define MT6893_POWER_DOMAIN_MFG1               2
+#define MT6893_POWER_DOMAIN_MFG2               3
+#define MT6893_POWER_DOMAIN_MFG3               4
+#define MT6893_POWER_DOMAIN_MFG4               5
+#define MT6893_POWER_DOMAIN_MFG5               6
+#define MT6893_POWER_DOMAIN_MFG6               7
+#define MT6893_POWER_DOMAIN_ISP                        8
+#define MT6893_POWER_DOMAIN_ISP2               9
+#define MT6893_POWER_DOMAIN_IPE                        10
+#define MT6893_POWER_DOMAIN_VDEC0              11
+#define MT6893_POWER_DOMAIN_VDEC1              12
+#define MT6893_POWER_DOMAIN_VENC0              13
+#define MT6893_POWER_DOMAIN_VENC1              14
+#define MT6893_POWER_DOMAIN_MDP                        15
+#define MT6893_POWER_DOMAIN_DISP               16
+#define MT6893_POWER_DOMAIN_AUDIO              17
+#define MT6893_POWER_DOMAIN_ADSP               18
+#define MT6893_POWER_DOMAIN_CAM                        19
+#define MT6893_POWER_DOMAIN_CAM_RAWA           20
+#define MT6893_POWER_DOMAIN_CAM_RAWB           21
+#define MT6893_POWER_DOMAIN_CAM_RAWC           22
+#define MT6893_POWER_DOMAIN_DP_TX              23
+
+#endif /* _DT_BINDINGS_POWER_MT6893_POWER_H */
diff --git a/include/dt-bindings/power/rockchip,rk3562-power.h b/include/dt-bindings/power/rockchip,rk3562-power.h
new file mode 100644 (file)
index 0000000..5182c24
--- /dev/null
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2022-2024 Rockchip Electronics Co., Ltd.
+ */
+#ifndef __DT_BINDINGS_POWER_RK3562_POWER_H__
+#define __DT_BINDINGS_POWER_RK3562_POWER_H__
+
+/* VD_CORE */
+#define RK3562_PD_CPU_0                0
+#define RK3562_PD_CPU_1                1
+#define RK3562_PD_CPU_2                2
+#define RK3562_PD_CPU_3                3
+#define RK3562_PD_CORE_ALIVE   4
+
+/* VD_PMU */
+#define RK3562_PD_PMU          5
+#define RK3562_PD_PMU_ALIVE    6
+
+/* VD_NPU */
+#define RK3562_PD_NPU          7
+
+/* VD_GPU */
+#define RK3562_PD_GPU          8
+
+/* VD_LOGIC */
+#define RK3562_PD_DDR          9
+#define RK3562_PD_VEPU         10
+#define RK3562_PD_VDPU         11
+#define RK3562_PD_VI           12
+#define RK3562_PD_VO           13
+#define RK3562_PD_RGA          14
+#define RK3562_PD_PHP          15
+#define RK3562_PD_LOGIC_ALIVE  16
+
+#endif
index 81b1eba2a7f778b149da218f73803a892a54d055..ba626f7015b5a89baf2d3f58be20637ba9d9b133 100644 (file)
@@ -69,5 +69,6 @@
 #define RST_BUS_GPADC          60
 #define RST_BUS_TCON_LCD0      61
 #define RST_BUS_TCON_LCD1      62
+#define RST_BUS_LVDS           63
 
 #endif /* _DT_BINDINGS_RESET_SUN50I_H616_H_ */
diff --git a/include/dt-bindings/reset/thead,th1520-reset.h b/include/dt-bindings/reset/thead,th1520-reset.h
new file mode 100644 (file)
index 0000000..00459f1
--- /dev/null
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Author: Michal Wilczynski <m.wilczynski@samsung.com>
+ */
+
+#ifndef _DT_BINDINGS_TH1520_RESET_H
+#define _DT_BINDINGS_TH1520_RESET_H
+
+#define TH1520_RESET_ID_GPU            0
+#define TH1520_RESET_ID_GPU_CLKGEN     1
+#define TH1520_RESET_ID_NPU            2
+#define TH1520_RESET_ID_WDT0           3
+#define TH1520_RESET_ID_WDT1           4
+
+#endif /* _DT_BINDINGS_TH1520_RESET_H */
diff --git a/include/dt-bindings/sound/cs48l32.h b/include/dt-bindings/sound/cs48l32.h
new file mode 100644 (file)
index 0000000..4e82260
--- /dev/null
@@ -0,0 +1,20 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * Device Tree defines for CS48L32 DSP.
+ *
+ * Copyright (C) 2016-2018, 2022, 2025 Cirrus Logic, Inc. and
+ *               Cirrus Logic International Semiconductor Ltd.
+ */
+
+#ifndef DT_BINDINGS_SOUND_CS48L32_H
+#define DT_BINDINGS_SOUND_CS48L32_H
+
+/* Values for cirrus,in-type */
+#define CS48L32_IN_TYPE_DIFF           0
+#define CS48L32_IN_TYPE_SE             1
+
+/* Values for cirrus,pdm-sup */
+#define CS48L32_PDM_SUP_VOUT_MIC       0
+#define CS48L32_PDM_SUP_MICBIAS1       1
+
+#endif
index 39f203256c4f6b96745f8200c0c806f5e22396c0..6d1ce7f5da51c684c028287dfb0ed06bebcf1fda 100644 (file)
 #define DISPLAY_PORT_RX_5      133
 #define DISPLAY_PORT_RX_6      134
 #define DISPLAY_PORT_RX_7      135
+#define USB_RX                 136
 
 #define LPASS_CLK_ID_PRI_MI2S_IBIT     1
 #define LPASS_CLK_ID_PRI_MI2S_EBIT     2
index 46ecf9db2324c13ceb843fc11643efdea4770089..d8b362c9661a3098419c57c8f8d35a4b3c098e22 100644 (file)
@@ -48,6 +48,7 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/leds/common.h>
 
 / {
        model = "LeMaker Banana Pi";
 &gmac_mdio {
        phy1: ethernet-phy@1 {
                reg = <1>;
+
+               leds {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       led@0 {
+                               reg = <0>;
+                               color = <LED_COLOR_ID_GREEN>;
+                               function = LED_FUNCTION_LAN;
+                               linux,default-trigger = "netdev";
+                       };
+
+                       led@1 {
+                               reg = <1>;
+                               color = <LED_COLOR_ID_AMBER>;
+                               function = LED_FUNCTION_LAN;
+                               linux,default-trigger = "netdev";
+                       };
+
+                       led@2 {
+                               reg = <2>;
+                               color = <LED_COLOR_ID_BLUE>;
+                               function = LED_FUNCTION_LAN;
+                               linux,default-trigger = "netdev";
+                       };
+               };
        };
 };
 
index addf0cb0f465d186ffac7d7c99da3b314d8fed51..6f88d8764e6a3007fd6c929e0436329992d3668f 100644 (file)
                        };
 
                        cooling-maps {
-                               cpu-hot-limit {
+                               map0 {
                                        trip = <&cpu0_hot>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                        };
 
                        cooling-maps {
-                               cpu-hot-limit {
+                               map0 {
                                        trip = <&cpu1_hot>;
                                        cooling-device = <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
index 6d85370e04f16bdeddd959aa9f0d058099a040ce..9a2742363cd01a04f3e6ccb2736234651e3c63fb 100644 (file)
@@ -94,7 +94,7 @@
        non-removable;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                interrupt-parent = <&pio>;
index eac2349a23809f6e9f24892e56b2eb20ac9ebf79..cfd039840b43899645a3c729abc7653902b0cd1b 100644 (file)
                        };
 
                        cooling-maps {
-                               cpu-hot-limit {
+                               map0 {
                                        trip = <&cpu_hot_trip>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
index a5b1f1e3900d4ebfbf59018134789513c28b1400..fa162f7fa9f01166cc59a74c366d4c1374afc958 100644 (file)
                        };
 
                        cooling-maps {
-                               cpu-hot-limit {
+                               map0 {
                                        trip = <&cpu_hot_trip>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
index f909b1d4dbca190ba8f50eb12fd3c84b79e30329..e82cf312da256ca4b9ef1af581f1946c02526822 100644 (file)
                        reg = <0x01cb4000 0x3000>;
                        interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&ccu CLK_BUS_CSI>,
-                                <&ccu CLK_CSI1_SCLK>,
+                                <&ccu CLK_CSI_SCLK>,
                                 <&ccu CLK_DRAM_CSI>;
                        clock-names = "bus", "mod", "ram";
                        resets = <&ccu RST_BUS_CSI>;
diff --git a/src/arm/amlogic/meson8-fernsehfee3.dts b/src/arm/amlogic/meson8-fernsehfee3.dts
new file mode 100644 (file)
index 0000000..4e52447
--- /dev/null
@@ -0,0 +1,306 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+// Copyright (C) 2025 J. Neuschäfer <j.ne@posteo.net>
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/linux-event-codes.h>
+#include <dt-bindings/leds/common.h>
+
+#include "meson8.dtsi"
+
+/ {
+       model = "Fernsehfee 3.0";
+       compatible = "tcu,fernsehfee3", "amlogic,meson8";
+
+       aliases {
+               serial0 = &uart_AO;
+               gpiochip0 = &gpio;
+               gpiochip1 = &gpio_ao;
+               i2c0 = &i2c_AO;
+               i2c1 = &i2c_B;
+               mmc0 = &sdhc;
+               mmc1 = &sdio;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x40000000>;  /* 1 GiB */
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys-polled";
+               poll-interval = <100>;
+
+               power-button {
+                       label = "Power button";
+                       linux,code = <KEY_POWER>;
+                       gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       /*
+                        * The power LED can be turned red, otherwise it is green.
+                        */
+                       gpios = <&gpio_ao GPIO_TEST_N GPIO_ACTIVE_LOW>;
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_RED>;
+               };
+       };
+
+       vcc_5v: regulator-5v {
+               /* 5V rail, always on as long as the system is running */
+               compatible = "regulator-fixed";
+               regulator-name = "5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       vcc_3v3: regulator-3v3 {
+               /* Chipown AP2420 step-down converter */
+               compatible = "regulator-fixed";
+               regulator-name = "3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_5v>;
+       };
+
+       wifi_3v3: regulator-wifi {
+               compatible = "regulator-fixed";
+               regulator-name = "3.3V-WIFI";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_3v3>;
+               gpio = <&gpio GPIOX_11 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vcck>;
+};
+
+&ethmac {
+       status = "okay";
+       pinctrl-0 = <&eth_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&eth_phy0>;
+       phy-mode = "rmii";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               eth_phy0: ethernet-phy@0 {
+                       /* IC Plus IP101A (0x02430c54) */
+                       reg = <0>;
+
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <10000>;
+                       reset-gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&i2c_AO {
+       status = "okay";
+       pinctrl-0 = <&i2c_ao_pins>;
+       pinctrl-names = "default";
+
+       pmic@32 {
+               compatible = "ricoh,rn5t618";
+               reg = <0x32>;
+               system-power-controller;
+
+               regulators {
+                       vcck: DCDC1 {
+                               regulator-name = "VCCK";
+                               regulator-min-microvolt = <825000>;
+                               regulator-max-microvolt = <1150000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vddee: DCDC2 {
+                               /* the output is also used as VDDAO */
+                               regulator-name = "VDD_EE";
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1150000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       DCDC3 {
+                               regulator-name = "VDD_DDR";
+                               regulator-min-microvolt = <1500000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       LDO1 {
+                               regulator-name = "VDDIO_AO28";
+                               regulator-min-microvolt = <2900000>;
+                               regulator-max-microvolt = <2900000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       LDO2 {
+                               regulator-name = "VDDIO_AO18";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vcc1v8_usb: LDO3 {
+                               regulator-name = "VCC1V8_USB";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                       };
+
+                       LDO4 {
+                               /* This one appears to be unused */
+                               regulator-name = "VCC2V8";
+                               regulator-min-microvolt = <2850000>;
+                               regulator-max-microvolt = <2850000>;
+                       };
+
+                       LDO5 {
+                               regulator-name = "AVDD1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       LDORTC1 {
+                               regulator-name = "VDD_LDO";
+                               regulator-min-microvolt = <2700000>;
+                               regulator-max-microvolt = <2700000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       LDORTC2 {
+                               regulator-name = "RTC_0V9";
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+
+       eeprom@50 {
+               /* Fairchild FM24C08A */
+               compatible = "atmel,24c08";
+               reg = <0x50>;
+               pagesize = <16>;
+               wp-gpios = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>;
+               num-addresses = <4>;
+       };
+};
+
+&i2c_B {
+       status = "okay";
+       pinctrl-0 = <&i2c_b_pins>;
+       pinctrl-names = "default";
+
+       /* TODO: SiI9293 HDMI receiver @ 0x39 */
+};
+
+&mali {
+       mali-supply = <&vddee>;
+};
+
+&sdhc {
+       status = "okay";
+       pinctrl-0 = <&sdxc_c_pins>;
+       pinctrl-names = "default";
+
+       /* eMMC */
+       bus-width = <8>;
+       max-frequency = <100000000>;
+
+       disable-wp;
+       cap-mmc-highspeed;
+       mmc-hs200-1_8v;
+       no-sdio;
+
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vcc_3v3>;
+};
+
+&sdio {
+       status = "okay";
+       pinctrl-0 = <&sd_b_pins>;
+
+       /* SD card */
+       slot@1 {
+               compatible = "mmc-slot";
+               reg = <1>;
+               status = "okay";
+
+               bus-width = <4>;
+               cap-mmc-highspeed;
+               cap-sd-highspeed;
+               disable-wp;
+
+               cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
+
+               vmmc-supply = <&vcc_3v3>;
+       };
+};
+
+&uart_AO {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_a_pins>;
+       pinctrl-names = "default";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+&usb0_phy {
+       status = "okay";
+       phy-supply = <&vcc1v8_usb>;
+};
+
+&usb1 {
+       status = "okay";
+       dr_mode = "host";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       wifi: wifi@1 {
+               /* Realtek RTL8188 2.4GHz WiFi module */
+               compatible = "usbbda,179";
+               reg = <1>;
+               vdd-supply = <&wifi_3v3>;
+       };
+};
+
+&usb1_phy {
+       status = "okay";
+       phy-supply = <&vcc1v8_usb>;
+};
+
+&ir_receiver {
+       status = "okay";
+       pinctrl-0 = <&ir_recv_pins>;
+       pinctrl-names = "default";
+};
index f785e0de0847b592e58182c46778e17b1d61e870..a609b5a0fda4c8eddd7a2b7d45a314a14a26115b 100644 (file)
                        mux {
                                groups = "uart_tx_ao_a", "uart_rx_ao_a";
                                function = "uart_ao";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                        gpio-ranges = <&pinctrl_cbus 0 0 120>;
                };
 
+               i2c_b_pins: i2c-b {
+                       mux {
+                               groups = "i2c_sda_b", "i2c_sck_b";
+                               function = "i2c_b";
+                               bias-disable;
+                       };
+               };
+
                sd_a_pins: sd-a {
                        mux {
                                groups = "sd_d0_a", "sd_d1_a", "sd_d2_a",
                        };
                };
 
+               sdxc_c_pins: sdxc-c {
+                       mux {
+                               groups = "sdxc_d0_c", "sdxc_d13_c",
+                                       "sdxc_clk_c", "sdxc_cmd_c",
+                                       "sdxc_d47_c";
+                               function = "sdxc_c";
+                               bias-pull-up;
+                       };
+               };
+
                spdif_out_pins: spdif-out {
                        mux {
                                groups = "spdif_out";
                                groups = "uart_tx_a1",
                                       "uart_rx_a1";
                                function = "uart_a";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
index fdb0abe23a0c8ba71eb2d931aa9582fe11ad7b62..2d77b9876bf4ce7e9368b8265f705b480f26af7b 100644 (file)
                        mux {
                                groups = "uart_tx_ao_a", "uart_rx_ao_a";
                                function = "uart_ao";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "uart_tx_b0",
                                       "uart_rx_b0";
                                function = "uart_b";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
index 87180b7fd695e65b52c52743e6315cbcca385fba..f535212cb52fec0668abfc06e7268bead70d958a 100644 (file)
                        interrupt-controller;
                };
 
+               pinctrl: pinctrl@1004800 {
+                       compatible = "brcm,bcm21664-pinctrl";
+                       reg = <0x01004800 0x7f4>;
+               };
+
                timer@1006000 {
                        compatible = "brcm,kona-timer";
                        reg = <0x01006000 0x1c>;
                };
        };
 };
+
+#include "bcm2166x-pinctrl.dtsi"
diff --git a/src/arm/broadcom/bcm2166x-pinctrl.dtsi b/src/arm/broadcom/bcm2166x-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..51b8730
--- /dev/null
@@ -0,0 +1,297 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Common pinmux configrations for BCM2166x (BCM21664/BCM23550).
+ *
+ * Copyright (C) 2025 Artur Weber <aweber.kernel@gmail.com>
+ */
+
+&pinctrl {
+       /* BSC1 */
+       bsc1_pins: bsc1-pins {
+               bsc1clk-grp0 {
+                       pins = "bsc1clk";
+                       function = "alt1"; /* BSC1CLK */
+               };
+
+               bsc1dat-grp0 {
+                       pins = "bsc1dat";
+                       function = "alt1"; /* BSC1DAT */
+               };
+       };
+
+       /* BSC2 */
+       bsc2_pins: bsc2-pins {
+               bsc2clk-grp0 {
+                       pins = "gpio16";
+                       function = "alt2"; /* BSC2CLK */
+               };
+
+               bsc2dat-grp0 {
+                       pins = "gpio17";
+                       function = "alt2"; /* BSC2DAT */
+               };
+       };
+
+       /* BSC3 */
+       bsc3_pins: bsc3-pins {
+               bsc3clk-grp0 {
+                       pins = "lcdscl";
+                       function = "alt1"; /* BSC3_CLK */
+               };
+
+               bsc3dat-grp0 {
+                       pins = "lcdsda";
+                       function = "alt1"; /* BSC3_SDA */
+               };
+       };
+
+       /* BSC4 */
+       bsc4_pins: bsc4-pins {
+               bsc4clk-grp0 {
+                       pins = "lcdres";
+                       function = "alt1"; /* BSC4_CLK */
+               };
+
+               bsc4dat-grp0 {
+                       pins = "lcdte";
+                       function = "alt1"; /* BSC4_SDA */
+               };
+       };
+
+       /* PMBSC */
+       pmbsc_pins: pmbsc-pins {
+               pmbscclk-grp0 {
+                       pins = "pmbscclk";
+                       function = "alt1"; /* PMBSCCLK */
+               };
+
+               pmbscdat-grp0 {
+                       pins = "pmbscdat";
+                       function = "alt1"; /* PMBSCDAT */
+               };
+       };
+
+       /* SD */
+       sd_width1_pins: sd-width1-pins {
+               sdck-grp0 {
+                       pins = "sdck";
+                       function = "alt1"; /* SDCK */
+                       bias-disable;
+               };
+
+               sdcmd-grp0 {
+                       pins = "sdcmd";
+                       function = "alt1"; /* SDCMD */
+                       bias-pull-up;
+               };
+
+               sddat-grp0 {
+                       pins = "sddat0";
+                       function = "alt1"; /* SDDATx */
+                       bias-pull-up;
+               };
+       };
+
+       sd_width4_pins: sd-width4-pins {
+               sdck-grp0 {
+                       pins = "sdck";
+                       function = "alt1"; /* SDCK */
+                       bias-disable;
+               };
+
+               sdcmd-grp0 {
+                       pins = "sdcmd";
+                       function = "alt1"; /* SDCMD */
+                       bias-pull-up;
+               };
+
+               sddat-grp0 {
+                       pins = "sddat0", "sddat1", "sddat2", "sddat3";
+                       function = "alt1"; /* SDDATx */
+                       bias-pull-up;
+               };
+       };
+
+       /* SD1 */
+       sd1_width1_pins: sd1-width1-pins {
+               sd1ck-grp0 {
+                       pins = "mmc1dat7";
+                       function = "alt6"; /* SD1CK */
+                       bias-disable;
+               };
+
+               sd1cmd-grp0 {
+                       pins = "spi0txd";
+                       function = "alt2"; /* SD1CMD */
+                       bias-pull-up;
+               };
+
+               sd1dat0-grp0 {
+                       pins = "mmc1dat5";
+                       function = "alt6"; /* SD1DAT0 */
+                       bias-pull-up;
+               };
+       };
+
+       sd1_width4_pins: sd1-width4-pins {
+               sd1ck-grp0 {
+                       pins = "mmc1dat7";
+                       function = "alt6"; /* SD1CK */
+                       bias-disable;
+               };
+
+               sd1cmd-grp0 {
+                       pins = "spi0txd";
+                       function = "alt2"; /* SD1CMD */
+                       bias-pull-up;
+               };
+
+               sd1dat0-grp0 {
+                       pins = "mmc1dat5";
+                       function = "alt6"; /* SD1DAT0 */
+                       bias-pull-up;
+               };
+
+               sd1dat1-grp0 {
+                       pins = "gpio93";
+                       function = "alt1"; /* SD1DAT1 */
+                       bias-pull-up;
+               };
+
+               sd1dat2-grp0 {
+                       pins = "gpio94";
+                       function = "alt1"; /* SD1DAT2 */
+                       bias-pull-up;
+               };
+
+               sd1dat3-grp0 {
+                       pins = "mmc1dat3";
+                       function = "alt6"; /* SD1DAT3 */
+                       bias-pull-up;
+               };
+       };
+
+       /* MMC0 */
+       mmc0_width1_pins: mmc0-width1-pins {
+               mmc0ck-grp0 {
+                       pins = "mmc0ck";
+                       function = "alt1"; /* MMC0CK */
+                       bias-disable;
+               };
+
+               mmc0cmd-grp0 {
+                       pins = "mmc0cmd";
+                       function = "alt1"; /* MMC0CMD */
+                       bias-pull-up;
+               };
+
+               mmc0dat-grp0 {
+                       pins = "mmc0dat0";
+                       function = "alt1"; /* MMC0DATx */
+                       bias-pull-up;
+               };
+       };
+
+       mmc0_width4_pins: mmc0-width4-pins {
+               mmc0ck-grp0 {
+                       pins = "mmc0ck";
+                       function = "alt1"; /* MMC0CK */
+                       bias-disable;
+               };
+
+               mmc0cmd-grp0 {
+                       pins = "mmc0cmd";
+                       function = "alt1"; /* MMC0CMD */
+                       bias-pull-up;
+               };
+
+               mmc0dat-grp0 {
+                       pins = "mmc0dat0", "mmc0dat1", "mmc0dat2", "mmc0dat3";
+                       function = "alt1"; /* MMC0DATx */
+                       bias-pull-up;
+               };
+       };
+
+       mmc0_width8_pins: mmc0-width8-pins {
+               mmc0ck-grp0 {
+                       pins = "mmc0ck";
+                       function = "alt1"; /* MMC0CK */
+                       bias-disable;
+               };
+
+               mmc0cmd-grp0 {
+                       pins = "mmc0cmd";
+                       function = "alt1"; /* MMC0CMD */
+                       bias-pull-up;
+               };
+
+               mmc0dat-grp0 {
+                       pins = "mmc0dat0", "mmc0dat1", "mmc0dat2", "mmc0dat3",
+                              "mmc0dat4", "mmc0dat5", "mmc0dat6", "mmc0dat7";
+                       function = "alt1"; /* MMC0DATx */
+                       bias-pull-up;
+               };
+       };
+
+       /* MMC1 */
+       mmc1_width1_pins: mmc1-width1-pins {
+               mmc1ck-grp0 {
+                       pins = "mmc1ck";
+                       function = "alt1"; /* MMC1CK */
+                       bias-disable;
+               };
+
+               mmc1cmd-grp0 {
+                       pins = "mmc1cmd";
+                       function = "alt1"; /* MMC1CMD */
+                       bias-pull-up;
+               };
+
+               mmc1dat-grp0 {
+                       pins = "mmc1dat0";
+                       function = "alt1"; /* MMC1DATx */
+                       bias-pull-up;
+               };
+       };
+
+       mmc1_width4_pins: mmc1-width4-pins {
+               mmc1ck-grp0 {
+                       pins = "mmc1ck";
+                       function = "alt1"; /* MMC1CK */
+                       bias-disable;
+               };
+
+               mmc1cmd-grp0 {
+                       pins = "mmc1cmd";
+                       function = "alt1"; /* MMC1CMD */
+                       bias-pull-up;
+               };
+
+               mmc1dat-grp0 {
+                       pins = "mmc1dat0", "mmc1dat1", "mmc1dat2", "mmc1dat3";
+                       function = "alt1"; /* MMC1DATx */
+                       bias-pull-up;
+               };
+       };
+
+       mmc1_width8_pins: mmc1-width8-pins {
+               mmc1ck-grp0 {
+                       pins = "mmc1ck";
+                       function = "alt1"; /* MMC1CK */
+                       bias-disable;
+               };
+
+               mmc1cmd-grp0 {
+                       pins = "mmc1cmd";
+                       function = "alt1"; /* MMC1CMD */
+                       bias-pull-up;
+               };
+
+               mmc1dat-grp0 {
+                       pins = "mmc1dat0", "mmc1dat1", "mmc1dat2", "mmc1dat3",
+                              "mmc1dat4", "mmc1dat5", "mmc1dat6", "mmc1dat7";
+                       function = "alt1"; /* MMC1DATx */
+                       bias-pull-up;
+               };
+       };
+};
index 2f3634545e64978888cd0b47fd5647a5e2eb8e07..cefaa9a3c45c9c90bffc08f739161d8ea21d98dd 100644 (file)
        status = "okay";
 
        pmu: pmu@8 {
+               compatible = "brcm,bcm59056";
+               interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
                reg = <0x08>;
+
+               regulators {
+                       camldo1_reg: camldo1 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       sdldo_reg: sdldo {
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                       };
+
+                       sdxldo_reg: sdxldo {
+                               regulator-min-microvolt = <2700000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       usbldo_reg: usbldo {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       iosr1_reg: iosr1 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+               };
        };
 };
 
 &usbphy {
        status = "okay";
 };
-
-#include "bcm59056.dtsi"
-
-&pmu {
-       compatible = "brcm,bcm59056";
-       interrupts = <GIC_SPI 215 IRQ_TYPE_LEVEL_HIGH>;
-       regulators {
-               camldo1_reg: camldo1 {
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       regulator-always-on;
-               };
-
-               sdldo_reg: sdldo {
-                       regulator-min-microvolt = <3000000>;
-                       regulator-max-microvolt = <3000000>;
-               };
-
-               sdxldo_reg: sdxldo {
-                       regulator-min-microvolt = <2700000>;
-                       regulator-max-microvolt = <3300000>;
-               };
-
-               usbldo_reg: usbldo {
-                       regulator-min-microvolt = <3300000>;
-                       regulator-max-microvolt = <3300000>;
-                       regulator-always-on;
-               };
-
-               iosr1_reg: iosr1 {
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-always-on;
-               };
-       };
-};
diff --git a/src/arm/broadcom/bcm2837-rpi-2-b.dts b/src/arm/broadcom/bcm2837-rpi-2-b.dts
new file mode 100644 (file)
index 0000000..1868cee
--- /dev/null
@@ -0,0 +1,130 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+#include "bcm2837.dtsi"
+#include "bcm2836-rpi.dtsi"
+#include "bcm283x-rpi-led-deprecated.dtsi"
+#include "bcm283x-rpi-smsc9514.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
+
+/ {
+       compatible = "raspberrypi,2-model-b-rev2", "brcm,bcm2837";
+       model = "Raspberry Pi 2 Model B rev 1.2";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0 0x40000000>;
+       };
+};
+
+&gpio {
+       /*
+        * Taken from rpi_SCH_2b_1p2_reduced.pdf and
+        * the official GPU firmware DT blob.
+        *
+        * Legend:
+        * "FOO" = GPIO line named "FOO" on the schematic
+        * "FOO_N" = GPIO line named "FOO" on schematic, active low
+        */
+       gpio-line-names = "ID_SDA",
+                         "ID_SCL",
+                         "GPIO2",
+                         "GPIO3",
+                         "GPIO4",
+                         "GPIO5",
+                         "GPIO6",
+                         "GPIO7",
+                         "GPIO8",
+                         "GPIO9",
+                         "GPIO10",
+                         "GPIO11",
+                         "GPIO12",
+                         "GPIO13",
+                         "GPIO14",
+                         "GPIO15",
+                         "GPIO16",
+                         "GPIO17",
+                         "GPIO18",
+                         "GPIO19",
+                         "GPIO20",
+                         "GPIO21",
+                         "GPIO22",
+                         "GPIO23",
+                         "GPIO24",
+                         "GPIO25",
+                         "GPIO26",
+                         "GPIO27",
+                         "SDA0",
+                         "SCL0",
+                         "", /* GPIO30 */
+                         "LAN_RUN",
+                         "CAM_GPIO1",
+                         "", /* GPIO33 */
+                         "", /* GPIO34 */
+                         "PWR_LOW_N",
+                         "", /* GPIO36 */
+                         "", /* GPIO37 */
+                         "USB_LIMIT",
+                         "", /* GPIO39 */
+                         "PWM0_OUT",
+                         "CAM_GPIO0",
+                         "SMPS_SCL",
+                         "SMPS_SDA",
+                         "ETH_CLK",
+                         "PWM1_OUT",
+                         "HDMI_HPD_N",
+                         "STATUS_LED",
+                         /* Used by SD Card */
+                         "SD_CLK_R",
+                         "SD_CMD_R",
+                         "SD_DATA0_R",
+                         "SD_DATA1_R",
+                         "SD_DATA2_R",
+                         "SD_DATA3_R";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
+
+       /* I2S interface */
+       i2s_alt0: i2s_alt0 {
+               brcm,pins = <18 19 20 21>;
+               brcm,function = <BCM2835_FSEL_ALT0>;
+       };
+};
+
+&hdmi {
+       hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
+       power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
+       status = "okay";
+};
+
+&led_act {
+       gpios = <&gpio 47 GPIO_ACTIVE_HIGH>;
+};
+
+&leds {
+       led-pwr {
+               label = "PWR";
+               gpios = <&gpio 35 GPIO_ACTIVE_HIGH>;
+               default-state = "keep";
+               linux,default-trigger = "default-on";
+       };
+};
+
+&pwm {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
+       status = "okay";
+};
+
+&sdhost {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdhost_gpio48>;
+       bus-width = <4>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_gpio14>;
+       status = "okay";
+};
diff --git a/src/arm/broadcom/bcm59056.dtsi b/src/arm/broadcom/bcm59056.dtsi
deleted file mode 100644 (file)
index a9bb7ad..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
-* Copyright 2014 Linaro Limited
-* Author: Matt Porter <mporter@linaro.org>
-*/
-
-&pmu {
-       compatible = "brcm,bcm59056";
-       regulators {
-               rfldo_reg: rfldo {
-               };
-
-               camldo1_reg: camldo1 {
-               };
-
-               camldo2_reg: camldo2 {
-               };
-
-               simldo1_reg: simldo1 {
-               };
-
-               simldo2_reg: simldo2 {
-               };
-
-               sdldo_reg: sdldo {
-               };
-
-               sdxldo_reg: sdxldo {
-               };
-
-               mmcldo1_reg: mmcldo1 {
-               };
-
-               mmcldo2_reg: mmcldo2 {
-               };
-
-               audldo_reg: audldo {
-               };
-
-               micldo_reg: micldo {
-               };
-
-               usbldo_reg: usbldo {
-               };
-
-               vibldo_reg: vibldo {
-               };
-
-               csr_reg: csr {
-               };
-
-               iosr1_reg: iosr1 {
-               };
-
-               iosr2_reg: iosr2 {
-               };
-
-               msr_reg: msr {
-               };
-
-               sdsr1_reg: sdsr1 {
-               };
-
-               sdsr2_reg: sdsr2 {
-               };
-
-               vsr_reg: vsr {
-               };
-
-               gpldo1_reg: gpldo1 {
-               };
-
-               gpldo2_reg: gpldo2 {
-               };
-
-               gpldo3_reg: gpldo3 {
-               };
-
-               gpldo4_reg: gpldo4 {
-               };
-
-               gpldo5_reg: gpldo5 {
-               };
-
-               gpldo6_reg: gpldo6 {
-               };
-
-               vbus_reg: vbus {
-               };
-       };
-};
diff --git a/src/arm/intel/socfpga/socfpga_cyclone5_de10nano.dts b/src/arm/intel/socfpga/socfpga_cyclone5_de10nano.dts
new file mode 100644 (file)
index 0000000..ec25106
--- /dev/null
@@ -0,0 +1,95 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2017, Intel Corporation
+ *
+ * based on socfpga_cyclone5_de0_nano_soc.dts
+ */
+/dts-v1/;
+
+#include "socfpga_cyclone5.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "Terasic DE10-Nano";
+       compatible = "terasic,de10-nano", "altr,socfpga-cyclone5", "altr,socfpga";
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@0 {
+               /* 1 GiB */
+               device_type = "memory";
+               reg = <0x0 0x40000000>;
+       };
+
+       soc {
+               fpga: bus@ff200000 {
+                       compatible = "simple-bus";
+                       reg = <0xff200000 0x00200000>;
+                       ranges = <0x00000000 0xff200000 0x00200000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       /*
+                        * Here the devices will appear if an FPGA image is
+                        * loaded. Their description is expected to be added
+                        * using a device tree overlay that matches the image.
+                        */
+               };
+       };
+};
+
+&gmac1 {
+       /* Uses a KSZ9031RNX phy */
+       phy-mode = "rgmii-id";
+       rxd0-skew-ps = <420>;
+       rxd1-skew-ps = <420>;
+       rxd2-skew-ps = <420>;
+       rxd3-skew-ps = <420>;
+       txen-skew-ps = <0>;
+       rxdv-skew-ps = <420>;
+       status = "okay";
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&gpio2 {
+       status = "okay";
+};
+
+&i2c0 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       accelerometer@53 {
+               compatible = "adi,adxl345";
+               reg = <0x53>;
+               /* HPS_GSENSOR_INT is routed to UART0_RX/CAN0_RX/SPIM0_SS1/HPS_GPIO61 */
+               interrupt-parent = <&portc>;
+               interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "INT1";
+       };
+};
+
+&mmc0 {
+       /* micro SD card socket J11 */
+       status = "okay";
+};
+
+&uart0 {
+       /*
+        * Accessible via USB (FT232R) on Mini-USB plug J4
+        * RX = TRACE_D0/SPIS0_CLK/UART0_RX/HPS_GPIO49
+        * TX = TRACE_D1/SPIS0_MOSI/UART0_TX/HPS_GPIO50
+        * no handshaking lines
+        */
+       clock-frequency = <100000000>;
+};
index 6fe2e31534afdcaa57f73258f7154687bb0218e3..8bacaeb4f4bd2fb12dcd8f6a46e529aef47a817d 100644 (file)
@@ -39,7 +39,7 @@
                        status = "okay";
                };
 
-               ehci@50000 {
+               usb@50000 {
                        status = "okay";
                };
 
index 2f6793f794cda6561f16062a45706901c6d57a11..36394d1ab3e297700479891b60514955f5c01deb 100644 (file)
                        status = "okay";
                };
 
-               ehci@50000 {
+               usb@50000 {
                        status = "okay";
                };
        };
index e3b41784c8762fc45b72adb5113c2b96b753caa5..051579fc36b8f4074bc112c778a9bea00699268f 100644 (file)
@@ -63,7 +63,7 @@
                        status = "okay";
                };
 
-               ehci@50000 {
+               usb@50000 {
                        status = "okay";
                };
        };
index 815ef7719d13c72159a2688eb2fe2c48875e03ba..8a1338e672b318cc0a6e338e499c31bfd43089d4 100644 (file)
                        status = "okay";
                };
 
-               usb0: ehci@50000 {
+               usb0: usb@50000 {
                        compatible = "marvell,orion-ehci";
                        reg = <0x50000 0x1000>;
                        interrupts = <19>;
index 2d41f5c166ee7309971c7f879a03d38c0253d782..939259c57e05b96fae593cbe858d73d894e4edc5 100644 (file)
                                status = "okay";
                        };
 
-                       ehci0: ehci@50000 {
+                       ehci0: usb@50000 {
                                compatible = "marvell,orion-ehci";
                                reg = <0x50000 0x1000>;
                                interrupts = <17>;
                                status = "okay";
                        };
 
-                       ehci1: ehci@a0000 {
+                       ehci1: usb@a0000 {
                                compatible = "marvell,orion-ehci";
                                reg = <0xa0000 0x1000>;
                                interrupts = <12>;
index 4c76366aa938b0923f1c62a0d1b20719a0ecbbab..e97dc37f716c48be3a0bdd43ce2e21fa577dbf7e 100644 (file)
@@ -50,6 +50,7 @@
 
        bt_sco_codec:bt_sco_codec {
                compatible = "linux,bt-sco";
+               #sound-dai-cells = <0>;
        };
 
        backlight_lcd: backlight_lcd {
index 30fdc4f55a3b095e59ef45e80180ac16c88e47ff..53a657cf4efba305225836e196d448ff0ea98044 100644 (file)
                device_type = "memory";
                reg = <0x60000000 0x40000000>;
        };
+
+       reg_5v: regulator-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "5V_MAIN";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
 };
 
 &dma0 {
        status = "okay";
 };
 
+&gmac0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gmac0_default
+                    &pinctrl_gmac0_mdio_default
+                    &pinctrl_gmac0_txck_default
+                    &pinctrl_gmac0_phy_irq>;
+       phy-mode = "rgmii-id";
+       nvmem-cells = <&eeprom0_eui48>;
+       nvmem-cell-names = "mac-address";
+       status = "okay";
+
+       ethernet-phy@7 {
+               reg = <0x7>;
+               interrupt-parent = <&pioa>;
+               interrupts = <PIN_PC1 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
 &i2c10 {
        dmas = <0>, <0>;
        i2c-analog-filter;
                        label = "VDDCPU";
                };
        };
+
+       pmic@5b {
+               compatible = "microchip,mcp16502";
+               reg = <0x5b>;
+               lvin-supply = <&reg_5v>;
+               pvin1-supply = <&reg_5v>;
+               pvin2-supply = <&reg_5v>;
+               pvin3-supply = <&reg_5v>;
+               pvin4-supply = <&reg_5v>;
+               status = "okay";
+
+               regulators {
+                       vdd_3v3: VDD_IO {
+                               regulator-name = "VDD_IO";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-initial-mode = <2>;
+                               regulator-allowed-modes = <2>, <4>;
+                               regulator-always-on;
+
+                               regulator-state-standby {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                                       regulator-mode = <4>;
+                               };
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-mode = <4>;
+                               };
+                       };
+
+                       vddioddr: VDD_DDR {
+                               regulator-name = "VDD_DDR";
+                               regulator-min-microvolt = <1350000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-initial-mode = <2>;
+                               regulator-allowed-modes = <2>, <4>;
+                               regulator-always-on;
+
+                               regulator-state-standby {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1350000>;
+                                       regulator-mode = <4>;
+                               };
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1350000>;
+                                       regulator-mode = <4>;
+                               };
+                       };
+
+                       vddcore: VDD_CORE {
+                               regulator-name = "VDD_CORE";
+                               regulator-min-microvolt = <1050000>;
+                               regulator-max-microvolt = <1050000>;
+                               regulator-initial-mode = <2>;
+                               regulator-allowed-modes = <2>, <4>;
+                               regulator-always-on;
+
+                               regulator-state-standby {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1050000>;
+                                       regulator-mode = <4>;
+                               };
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-mode = <4>;
+                               };
+                       };
+
+                       vddcpu: VDD_OTHER {
+                               regulator-name = "VDD_OTHER";
+                               regulator-min-microvolt = <1050000>;
+                               regulator-max-microvolt = <1250000>;
+                               regulator-initial-mode = <2>;
+                               regulator-allowed-modes = <2>, <4>;
+                               regulator-ramp-delay = <3125>;
+                               regulator-always-on;
+
+                               regulator-state-standby {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1050000>;
+                                       regulator-mode = <4>;
+                               };
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-mode = <4>;
+                               };
+                       };
+
+                       vldo1: LDO1 {
+                               regulator-name = "LDO1";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+
+                               regulator-state-standby {
+                                       regulator-suspend-microvolt = <1800000>;
+                                       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;
+                               };
+                       };
+               };
+       };
+
+       eeprom0: eeprom@51 {
+               compatible = "microchip,24aa025e48";
+               reg = <0x51>;
+               size = <256>;
+               pagesize = <16>;
+               vcc-supply = <&vdd_3v3>;
+
+               nvmem-layout {
+                       compatible = "fixed-layout";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       eeprom0_eui48: eui48@fa {
+                               reg = <0xfa 0x6>;
+                       };
+               };
+       };
 };
 
 &main_xtal {
 };
 
 &pioa {
+       pinctrl_gmac0_default: gmac0-default {
+               pinmux = <PIN_PA26__G0_TX0>,
+                        <PIN_PA27__G0_TX1>,
+                        <PIN_PB4__G0_TX2>,
+                        <PIN_PB5__G0_TX3>,
+                        <PIN_PA29__G0_RX0>,
+                        <PIN_PA30__G0_RX1>,
+                        <PIN_PB2__G0_RX2>,
+                        <PIN_PB6__G0_RX3>,
+                        <PIN_PA25__G0_TXCTL>,
+                        <PIN_PB3__G0_RXCK>,
+                        <PIN_PA28__G0_RXCTL>;
+               slew-rate = <0>;
+               bias-disable;
+       };
+
+       pinctrl_gmac0_mdio_default: gmac0-mdio-default {
+               pinmux = <PIN_PA31__G0_MDC>,
+                        <PIN_PB0__G0_MDIO>;
+               bias-disable;
+       };
+
+       pinctrl_gmac0_phy_irq: gmac0-phy-irq {
+               pinmux = <PIN_PC1__GPIO>;
+               bias-disable;
+       };
+
+       pinctrl_gmac0_txck_default: gmac0-txck-default {
+               pinmux = <PIN_PB1__G0_REFCK>;
+               slew-rate = <0>;
+               bias-pull-up;
+       };
+
        pinctrl_i2c10_default: i2c10-default{
                pinmux = <PIN_PB19__FLEXCOM10_IO1>,
                         <PIN_PB20__FLEXCOM10_IO0>;
        };
 };
 
+&rtt {
+       atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
+};
+
 &sdmmc1 {
        bus-width = <4>;
        pinctrl-names = "default";
index 2dec2218f32ce72b5b145e2cf12a2db1b706c72e..eb5f27ce19429879afd8b1cfa7c162c5a2f43fc7 100644 (file)
                spi-tx-bus-width = <4>;
                spi-rx-bus-width = <4>;
                m25p,fast-read;
+               label = "at91-qspi";
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       at91bootstrap@0 {
+                               label = "qspi1: at91bootstrap";
+                               reg = <0x0 0x40000>;
+                       };
+
+                       bootloader@40000 {
+                               label = "qspi1: u-boot";
+                               reg = <0x40000 0x100000>;
+                       };
+
+                       bootloaderenv@140000 {
+                               label = "qspi1: u-boot env";
+                               reg = <0x140000 0x40000>;
+                       };
+
+                       dtb@180000 {
+                               label = "qspi1: device tree";
+                               reg = <0x180000 0x80000>;
+                       };
+
+                       kernel@200000 {
+                               label = "qspi1: kernel";
+                               reg = <0x200000 0x600000>;
+                       };
+               };
        };
 };
 
index 471ea25296aa1497e0d8cc43d71ba74ddbf5011a..93c5268a0845d09c71a2476e91d2274d3d08bfe4 100644 (file)
                                nand@3 {
                                        reg = <0x3 0x0 0x800000>;
                                        rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>;
-                                       cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>;
+                                       cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>;
                                        nand-bus-width = <8>;
                                        nand-ecc-mode = "soft";
                                        nand-on-flash-bbt;
index b6710ccd4c360bdde1ecc05d4ac78cff501bcb2c..d08d773b1cc578fc6a713922497facac429c2c01 100644 (file)
                };
        };
 
+       ns_sram: sram@100000 {
+               compatible = "mmio-sram";
+               reg = <0x100000 0x20000>;
+               ranges;
+               #address-cells = <1>;
+               #size-cells = <1>;
+       };
+
        soc {
                compatible = "simple-bus";
                ranges;
                #address-cells = <1>;
                #size-cells = <1>;
 
+               securam: sram@e0000800 {
+                       compatible = "microchip,sama7d65-securam", "atmel,sama5d2-securam", "mmio-sram";
+                       reg = <0xe0000800 0x4000>;
+                       ranges = <0 0xe0000800 0x4000>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 17>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       no-memory-wc;
+               };
+
+               secumod: security-module@e0004000 {
+                       compatible = "microchip,sama7d65-secumod", "atmel,sama5d2-secumod", "syscon";
+                       reg = <0xe0004000 0x4000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+
                sfrbu: sfr@e0008000 {
                        compatible ="microchip,sama7d65-sfrbu", "atmel,sama5d2-sfrbu", "syscon";
                        reg = <0xe0008000 0x20>;
                        status = "disabled";
                };
 
+               rtt: rtc@e001d300 {
+                       compatible = "microchip,sama7d65-rtt", "atmel,at91sam9260-rtt";
+                       reg = <0xe001d300 0x30>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk32k 0>;
+               };
+
                clk32k: clock-controller@e001d500 {
                        compatible = "microchip,sama7d65-sckc", "microchip,sam9x60-sckc";
                        reg = <0xe001d500 0x4>;
                        #clock-cells = <1>;
                };
 
+               gpbr: syscon@e001d700 {
+                       compatible = "microchip,sama7d65-gpbr", "syscon";
+                       reg = <0xe001d700 0x48>;
+               };
+
                rtc: rtc@e001d800 {
                        compatible = "microchip,sama7d65-rtc", "microchip,sam9x60-rtc";
                        reg = <0xe001d800 0x30>;
                        status = "disabled";
                };
 
+               gmac0: ethernet@e1618000 {
+                       compatible = "microchip,sama7d65-gem", "microchip,sama7g5-gem";
+                       reg = <0xe1618000 0x2000>;
+                       interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 46>, <&pmc PMC_TYPE_PERIPHERAL 46>, <&pmc PMC_TYPE_GCK 46>, <&pmc PMC_TYPE_GCK 49>;
+                       clock-names = "pclk", "hclk", "tx_clk", "tsu_clk";
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 46>, <&pmc PMC_TYPE_GCK 49>;
+                       assigned-clock-rates = <125000000>, <200000000>;
+                       status = "disabled";
+               };
+
+               gmac1: ethernet@e161c000 {
+                       compatible = "microchip,sama7d65-gem", "microchip,sama7g5-gem";
+                       reg = <0xe161c000 0x2000>;
+                       interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 47>, <&pmc PMC_TYPE_PERIPHERAL 47>,<&pmc PMC_TYPE_GCK 47>, <&pmc PMC_TYPE_GCK 50>;
+                       clock-names = "pclk", "hclk", "tx_clk", "tsu_clk";
+                       assigned-clocks = <&pmc PMC_TYPE_GCK 47>, <&pmc PMC_TYPE_GCK 50>;
+                       assigned-clock-rates = <125000000>, <200000000>;
+                       status = "disabled";
+               };
+
                pit64b0: timer@e1800000 {
                        compatible = "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b";
                        reg = <0xe1800000 0x100>;
                        clock-names = "pclk", "gclk";
                };
 
+               flx0: flexcom@e1820000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe1820000 0x200>;
+                       ranges = <0x0 0xe1820000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 34>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       uart0: serial@200 {
+                               compatible = "microchip,sama7d65-usart", "atmel,at91sam9260-usart";
+                               reg = <0x200 0x200>;
+                               interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 34>;
+                               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;
+                               atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
+                               status = "disabled";
+                       };
+
+                       i2c0: i2c@600 {
+                               compatible = "microchip,sama7d65-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 34>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               atmel,fifo-size = <32>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(6)>,
+                                      <&dma0 AT91_XDMAC_DT_PERID(5)>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+               };
+
+               flx1: flexcom@e1824000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe1824000 0x200>;
+                       ranges = <0x0 0xe1824000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 35>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       spi1: spi@400 {
+                               compatible = "microchip,sama7d65-spi", "atmel,at91rm9200-spi";
+                               reg = <0x400 0x200>;
+                               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 35>;
+                               clock-names = "spi_clk";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(8)>,
+                                      <&dma0 AT91_XDMAC_DT_PERID(7)>;
+                               dma-names = "tx", "rx";
+                               atmel,fifo-size = <32>;
+                               status = "disabled";
+                       };
+
+                       i2c1: i2c@600 {
+                               compatible = "microchip,sama7d65-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 35>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(8)>,
+                                      <&dma0 AT91_XDMAC_DT_PERID(7)>;
+                               dma-names = "tx", "rx";
+                               atmel,fifo-size = <32>;
+                               status = "disabled";
+                       };
+               };
+
+               flx2: flexcom@e1828000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe1828000 0x200>;
+                       ranges = <0x0 0xe1828000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 36>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       uart2: serial@200 {
+                               compatible = "microchip,sama7d65-usart", "atmel,at91sam9260-usart";
+                               reg = <0x200 0x200>;
+                               interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 36>;
+                               clock-names = "usart";
+                               dmas = <&dma1 AT91_XDMAC_DT_PERID(10)>,
+                                      <&dma1 AT91_XDMAC_DT_PERID(9)>;
+                               dma-names = "tx", "rx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
+                               status = "disabled";
+                       };
+               };
+
+               flx3: flexcom@e182c000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe182c000 0x200>;
+                       ranges = <0x0 0xe182c000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 37>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       i2c3: i2c@600 {
+                               compatible = "microchip,sama7d65-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 37>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(12)>,
+                                      <&dma0 AT91_XDMAC_DT_PERID(11)>;
+                               dma-names = "tx", "rx";
+                               atmel,fifo-size = <32>;
+                               status = "disabled";
+                       };
+
+               };
+
+               flx4: flexcom@e2018000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe2018000 0x200>;
+                       ranges = <0x0 0xe2018000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 38>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       uart4: serial@200 {
+                               compatible = "microchip,sama7d65-usart", "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(14)>,
+                                      <&dma1 AT91_XDMAC_DT_PERID(13)>;
+                               dma-names = "tx", "rx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               atmel,fifo-size = <16>;
+                               atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
+                               status = "disabled";
+                       };
+
+                       spi4: spi@400 {
+                               compatible = "microchip,sama7d65-spi", "atmel,at91rm9200-spi";
+                               reg = <0x400 0x200>;
+                               interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 38>;
+                               clock-names = "spi_clk";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(14)>,
+                                      <&dma0 AT91_XDMAC_DT_PERID(13)>;
+                               dma-names = "tx", "rx";
+                               atmel,fifo-size = <32>;
+                               status = "disabled";
+                       };
+               };
+
+               flx5: flexcom@e201c000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe201c000 0x200>;
+                       ranges = <0x0 0xe201c000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 39>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       i2c5: i2c@600 {
+                               compatible = "microchip,sama7d65-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 39>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(16)>,
+                                      <&dma0 AT91_XDMAC_DT_PERID(15)>;
+                               dma-names = "tx", "rx";
+                               atmel,fifo-size = <32>;
+                               status = "disabled";
+                       };
+               };
+
                flx6: flexcom@e2020000 {
                        compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
                        reg = <0xe2020000 0x200>;
                        };
                };
 
+               flx7: flexcom@e2024000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe2024000 0x200>;
+                       ranges = <0x0 0xe2024000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 41>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       uart7: serial@200 {
+                               compatible = "microchip,sama7d65-usart", "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(20)>,
+                                      <&dma1 AT91_XDMAC_DT_PERID(19)>;
+                               dma-names = "tx", "rx";
+                               atmel,use-dma-rx;
+                               atmel,use-dma-tx;
+                               atmel,fifo-size = <16>;
+                               atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
+                               status = "disabled";
+                       };
+               };
+
+               flx8: flexcom@e281c000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe281c000 0x200>;
+                       ranges = <0x0 0xe281c000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 42>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       i2c8: i2c@600 {
+                               compatible = "microchip,sama7d65-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 42>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(22)>,
+                                      <&dma0 AT91_XDMAC_DT_PERID(21)>;
+                               dma-names = "tx", "rx";
+                               atmel,fifo-size = <32>;
+                               status = "disabled";
+                       };
+               };
+
+               flx9: flexcom@e2820000 {
+                       compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
+                       reg = <0xe2820000 0x200>;
+                       ranges = <0x0 0xe281c000 0x800>;
+                       clocks = <&pmc PMC_TYPE_PERIPHERAL 43>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+
+                       i2c9: i2c@600 {
+                               compatible = "microchip,sama7d65-i2c", "microchip,sam9x60-i2c";
+                               reg = <0x600 0x200>;
+                               interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 43>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               dmas = <&dma0 AT91_XDMAC_DT_PERID(24)>,
+                                      <&dma0 AT91_XDMAC_DT_PERID(23)>;
+                               dma-names = "tx", "rx";
+                               atmel,fifo-size = <32>;
+                               status = "disabled";
+                       };
+               };
+
                flx10: flexcom@e2824000 {
                        compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom";
                        reg = <0xe2824000 0x200>;
                        };
                };
 
+               uddrc: uddrc@e3800000 {
+                       compatible = "microchip,sama7d65-uddrc", "microchip,sama7g5-uddrc";
+                       reg = <0xe3800000 0x4000>;
+               };
+
+               ddr3phy: ddr3phy@e3804000 {
+                       compatible = "microchip,sama7d65-ddr3phy", "microchip,sama7g5-ddr3phy";
+                       reg = <0xe3804000 0x1000>;
+               };
+
                gic: interrupt-controller@e8c11000 {
                        compatible = "arm,cortex-a7-gic";
                        reg = <0xe8c11000 0x1000>,
index 3dd48b3e06da57b0cb1e9763455d9172761ac9d6..fd8244b56e0593feb6aab28a661fbd2e16f0e220 100644 (file)
@@ -64,7 +64,7 @@
                                nand@3 {
                                        reg = <0x3 0x0 0x800000>;
                                        rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>;
-                                       cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>;
+                                       cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>;
                                        nand-bus-width = <8>;
                                        nand-ecc-mode = "soft";
                                        nand-on-flash-bbt;
index e7f7b259ccf3a670db253d0e046ce4785b24d64a..3b61e71450600439868236099be51555c2351c34 100644 (file)
        model = "Calao USB A9260";
        compatible = "calao,usb-a9260", "atmel,at91sam9260", "atmel,at91sam9";
 
-       chosen {
-               bootargs = "mem=64M console=ttyS0,115200 root=/dev/mtdblock5 rw rootfstype=ubifs";
-       };
-
-       memory@20000000 {
-               reg = <0x20000000 0x4000000>;
-       };
-
        ahb {
                apb {
                        shdwc: poweroff@fffffd10 {
index 8c3530638c6d70dc58ab1780ab12463e3ac504d0..da32c5fdcc477b4bbf3f1d40706e64f3b04b3be0 100644 (file)
@@ -6,6 +6,11 @@
  */
 
 / {
+       chosen {
+               bootargs = "mem=64M root=/dev/mtdblock5 rw rootfstype=ubifs";
+               stdout-path = "serial0:115200n8";
+       };
+
        clocks {
                slow_xtal {
                        clock-frequency = <32768>;
                };
        };
 
+       memory@20000000 {
+               reg = <0x20000000 0x4000000>;
+       };
+
        ahb {
                apb {
                        dbgu: serial@fffff200 {
index 60d7936dc56274c42aadaa0bf2a006b60f654dbe..8e1a3fb61087cac887b0bd5eaf1c328f21b36004 100644 (file)
@@ -58,7 +58,7 @@
                        };
 
                        spi0: spi@fffa4000 {
-                               cs-gpios = <&pioB 15 GPIO_ACTIVE_HIGH>;
+                               cs-gpios = <&pioA 5 GPIO_ACTIVE_LOW>;
                                status = "okay";
                                flash@0 {
                                        compatible = "atmel,at45", "atmel,dataflash";
@@ -84,7 +84,7 @@
                                nand@3 {
                                        reg = <0x3 0x0 0x800000>;
                                        rb-gpios = <&pioA 22 GPIO_ACTIVE_HIGH>;
-                                       cs-gpios = <&pioA 15 GPIO_ACTIVE_HIGH>;
+                                       cs-gpios = <&pioD 15 GPIO_ACTIVE_HIGH>;
                                        nand-bus-width = <8>;
                                        nand-ecc-mode = "soft";
                                        nand-on-flash-bbt;
index a2f748141d4b514b28f8c9d44b16b487fccdeda5..555291cd30b3bf9e8eb5151e9f9630bbe25d6197 100644 (file)
@@ -5,9 +5,24 @@
  *  Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
 /dts-v1/;
-#include "usb_a9g20_common.dtsi"
+#include "at91sam9g20.dtsi"
+#include "usb_a9260_common.dtsi"
 
 / {
        model = "Calao USB A9G20";
        compatible = "calao,usb-a9g20", "atmel,at91sam9g20", "atmel,at91sam9";
 };
+
+&spi0 {
+       cs-gpios = <&pioC 11 GPIO_ACTIVE_LOW>;
+       status = "okay";
+       /* TODO: Some revisions might have a dataflash here instead of an EEPROM */
+       eeprom@0 {
+               compatible = "st,m95640", "atmel,at25";
+               reg = <0>;
+               spi-max-frequency = <2000000>;
+               size = <8192>;
+               pagesize = <32>;
+               address-width = <16>;
+       };
+};
diff --git a/src/arm/microchip/usb_a9g20_common.dtsi b/src/arm/microchip/usb_a9g20_common.dtsi
deleted file mode 100644 (file)
index f1946e0..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * usb_a9g20.dts - Device Tree file for Calao USB A9G20 board
- *
- *  Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
- */
-
-#include "at91sam9g20.dtsi"
-#include "usb_a9260_common.dtsi"
-
-/ {
-       chosen {
-               bootargs = "mem=64M root=/dev/mtdblock5 rw rootfstype=ubifs";
-               stdout-path = "serial0:115200n8";
-       };
-
-       memory@20000000 {
-               reg = <0x20000000 0x4000000>;
-       };
-
-       i2c-gpio-0 {
-               rtc@56 {
-                       compatible = "microcrystal,rv3029";
-                       reg = <0x56>;
-               };
-       };
-};
index 4d104797176c2c7f85716e12ae1738a475211e4c..2eda00477bc531b368767c5c438bf1cf04ee4073 100644 (file)
@@ -5,7 +5,8 @@
  *  Copyright (C) 2013 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
  */
 /dts-v1/;
-#include "usb_a9g20_common.dtsi"
+#include "at91sam9g20.dtsi"
+#include "usb_a9260_common.dtsi"
 
 / {
        model = "Calao USB A9G20 Low Power";
                        };
                };
        };
+
+       i2c-gpio-0 {
+               rtc@56 {
+                       compatible = "microcrystal,rv3029";
+                       reg = <0x56>;
+               };
+       };
 };
index 868454ae6bde728d4529534aaf1f184716e83c82..791090f54d8b7026315be31d5fede7740405e341 100644 (file)
                };
        };
 
+       udc0_phy: usb-phy {
+               compatible = "usb-nop-xceiv";
+               #phy-cells = <0>;
+       };
+
        ahb {
                #address-cells = <1>;
                #size-cells = <1>;
                        clocks = <&clk_refclk>, <&clk_sysbypck>, <&clk_mcbypck>;
                };
 
+               mc: memory-controller@f0824000 {
+                       compatible = "nuvoton,npcm750-memory-controller";
+                       reg = <0xf0824000 0x1000>;
+                       interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
                gmac0: eth@f0802000 {
                        device_type = "network";
                        compatible = "snps,dwmac";
                        status = "disabled";
                };
 
+               sdmmc: mmc@f0842000 {
+                       compatible = "nuvoton,npcm750-sdhci";
+                       status = "disabled";
+                       reg = <0xf0842000 0x200>;
+                       interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks =  <&clk NPCM7XX_CLK_AHB>;
+                       clock-names = "clk_mmc";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc8_pins
+                                       &mmc_pins>;
+               };
+
+               sdhci: mmc@f0840000 {
+                       compatible = "nuvoton,npcm750-sdhci";
+                       status = "disabled";
+                       reg = <0xf0840000 0x200>;
+                       interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks =  <&clk NPCM7XX_CLK_AHB>;
+                       clock-names = "clk_sdhc";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sd1_pins>;
+               };
+
                ehci1: usb@f0806000 {
                        compatible = "nuvoton,npcm750-ehci";
                        reg = <0xf0806000 0x1000>;
                        status = "disabled";
                };
 
+               ohci1: usb@f0807000 {
+                       compatible = "generic-ohci";
+                       reg = <0xf0807000 0x1000>;
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
                fiu0: spi@fb000000 {
                        compatible = "nuvoton,npcm750-fiu";
                        #address-cells = <1>;
                        status = "disabled";
                };
 
+               udc5: usb@f0835000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0835000 0x1000
+                              0xfffd2800 0x800>;
+                       interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
+               udc6: usb@f0836000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0836000 0x1000
+                              0xfffd3000 0x800>;
+                       interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
+               udc7: usb@f0837000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0837000 0x1000
+                              0xfffd3800 0x800>;
+                       interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
+               udc8: usb@f0838000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0838000 0x1000
+                              0xfffd4000 0x800>;
+                       interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
+               udc9: usb@f0839000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0839000 0x1000
+                              0xfffd4800 0x800>;
+                       interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       nuvoton,sysgcr = <&gcr>;
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
                apb {
                        #address-cells = <1>;
                        #size-cells = <1>;
index c3501786d600c8a2abd8dc6bc43d1f95cd4d2e79..231228842e630d08991ee243b27916729722a5b9 100644 (file)
                "","","","SIO_POWER_GOOD","","","","";
        };
        gpio2: gpio@f0012000 {
-               bmc_usb_mux_oe_n {
+               bmc-usb-mux-oe-n-hog {
                        gpio-hog;
                        gpios = <25 GPIO_ACTIVE_HIGH>;
                        output-low;
                        line-name = "bmc-usb-mux-oe-n";
                };
-               bmc_usb_mux_sel {
+               bmc-usb-mux-sel-hog {
                        gpio-hog;
                        gpios = <26 GPIO_ACTIVE_HIGH>;
                        output-low;
                        line-name = "bmc-usb-mux-sel";
                };
-               bmc_usb2517_reset_n {
+               bmc-usb2517-reset-n-hog {
                        gpio-hog;
                        gpios = <27 GPIO_ACTIVE_LOW>;
                        output-low;
                };
        };
        gpio3: gpio@f0013000 {
-               assert_cpu0_reset {
+               assert-cpu0-reset-hog {
                        gpio-hog;
                        gpios = <14 GPIO_ACTIVE_HIGH>;
                        output-low;
                        line-name = "assert-cpu0-reset";
                };
-               assert_pwrok_cpu0_n {
+               assert-pwrok-cpu0-n-hog {
                        gpio-hog;
                        gpios = <15 GPIO_ACTIVE_HIGH>;
                        output-low;
                        line-name = "assert-pwrok-cpu0-n";
                };
-               assert_cpu0_prochot {
+               assert-cpu0-prochot-hog {
                        gpio-hog;
                        gpios = <16 GPIO_ACTIVE_HIGH>;
                        output-low;
index f67ede14820926199b119bbebe0ac0477ad1c5aa..0c94e14d40e83ef03fb182085ef982fed0d99323 100644 (file)
                gpio-controller;
                #gpio-cells = <2>;
                reset-gpios = <&gpio7 4 GPIO_ACTIVE_LOW>;
-               G1A_P0_0 {
+               g1a-p0-0-hog {
                        gpio-hog;
                        gpios = <0 0>;
                        output-high;
                        line-name = "TPM_BMC_ALERT_N";
                };
-               G1A_P0_1 {
+               g1a-p0-1-hog {
                        gpio-hog;
                        gpios = <1 0>;
                        input;
                        line-name = "FM_BIOS_TOP_SWAP";
                };
-               G1A_P0_2 {
+               g1a-p0-2-hog {
                        gpio-hog;
                        gpios = <2 0>;
                        input;
                        line-name = "FM_BIOS_PREFRB2_GOOD";
                };
-               G1A_P0_3 {
+               g1a-p0-3-hog {
                        gpio-hog;
                        gpios = <3 0>;
                        input;
                        line-name = "BMC_SATAXPCIE_0TO3_SEL";
                };
-               G1A_P0_4 {
+               g1a-p0-4-hog {
                        gpio-hog;
                        gpios = <4 0>;
                        input;
                        line-name = "BMC_SATAXPCIE_4TO7_SEL";
                };
-               G1A_P0_5 {
+               g1a-p0-5-hog {
                        gpio-hog;
                        gpios = <5 0>;
                        output-low;
                        line-name = "FM_UV_ADR_TRIGGER_EN_N";
                };
-               G1A_P0_6 {
+               g1a-p0-6-hog {
                        gpio-hog;
                        gpios = <6 0>;
                        input;
                        line-name = "RM_THROTTLE_EN_N";
                };
-               G1A_P1_0 {
+               g1a-p1-0-hog {
                        gpio-hog;
                        gpios = <8 0>;
                        input;
                        line-name = "FM_BMC_TPM_PRES_N";
                };
-               G1A_P1_1 {
+               g1a-p1-1-hog {
                        gpio-hog;
                        gpios = <9 0>;
                        input;
                        line-name = "FM_CPU0_SKTOCC_LVT3_N";
                };
-               G1A_P1_2 {
+               g1a-p1-2-hog {
                        gpio-hog;
                        gpios = <10 0>;
                        input;
                        line-name = "FM_CPU1_SKTOCC_LVT3_N";
                };
-               G1A_P1_3 {
+               g1a-p1-3-hog {
                        gpio-hog;
                        gpios = <11 0>;
                        input;
                        line-name = "PSU1_ALERT_N";
                };
-               G1A_P1_4 {
+               g1a-p1-4-hog {
                        gpio-hog;
                        gpios = <12 0>;
                        input;
                        line-name = "PSU2_ALERT_N";
                };
-               G1A_P1_5 {
+               g1a-p1-5-hog {
                        gpio-hog;
                        gpios = <13 0>;
                        input;
                        line-name = "H_CPU0_FAST_WAKE_LVT3_N";
                };
-               G1A_P1_6 {
+               g1a-p1-6-hog {
                        gpio-hog;
                        gpios = <14 0>;
                        output-high;
                        line-name = "I2C_MUX1_RESET_N";
                };
-               G1A_P1_7 {
+               g1a-p1-7-hog {
                        gpio-hog;
                        gpios = <15 0>;
                        input;
                reg = <0x75>;
                gpio-controller;
                #gpio-cells = <2>;
-               G1B_P0_0 {
+               g1b-p0-0-hog {
                        gpio-hog;
                        gpios = <0 0>;
                        input;
                        line-name = "PVDDQ_ABC_PINALERT_N";
                };
-               G1B_P0_1 {
+               g1b-p0-1-hog {
                        gpio-hog;
                        gpios = <1 0>;
                        input;
                        line-name = "PVDDQ_DEF_PINALERT_N";
                };
-               G1B_P0_2 {
+               g1b-p0-2-hog {
                        gpio-hog;
                        gpios = <2 0>;
                        input;
                        line-name = "PVDDQ_GHJ_PINALERT_N";
                };
-               G1B_P0_3 {
+               g1b-p0-3-hog {
                        gpio-hog;
                        gpios = <3 0>;
                        input;
                        line-name = "PVDDQ_KLM_PINALERT_N";
                };
-               G1B_P0_5 {
+               g1b-p0-5-hog {
                        gpio-hog;
                        gpios = <5 0>;
                        input;
                        line-name = "FM_BOARD_REV_ID0";
                };
-               G1B_P0_6 {
+               g1b-p0-6-hog {
                        gpio-hog;
                        gpios = <6 0>;
                        input;
                        line-name = "FM_BOARD_REV_ID1";
                };
-               G1B_P0_7 {
+               g1b-p0-7-hog {
                        gpio-hog;
                        gpios = <7 0>;
                        input;
                        line-name = "FM_BOARD_REV_ID2";
                };
-               G1B_P1_0 {
+               g1b-p1-0-hog {
                        gpio-hog;
                        gpios = <8 0>;
                        input;
                        line-name = "FM_OC_DETECT_EN_N";
                };
-               G1B_P1_1 {
+               g1b-p1-1-hog {
                        gpio-hog;
                        gpios = <9 0>;
                        input;
                        line-name = "FM_FLASH_DESC_OVERRIDE";
                };
-               G1B_P1_2 {
+               g1b-p1-2-hog {
                        gpio-hog;
                        gpios = <10 0>;
                        output-low;
                        line-name = "FP_PWR_ID_LED_N";
                };
-               G1B_P1_3 {
+               g1b-p1-3-hog {
                        gpio-hog;
                        gpios = <11 0>;
                        output-low;
                        line-name = "BMC_LED_PWR_GRN";
                };
-               G1B_P1_4 {
+               g1b-p1-4-hog {
                        gpio-hog;
                        gpios = <12 0>;
                        output-low;
                        line-name = "BMC_LED_PWR_AMBER";
                };
-               G1B_P1_5 {
+               g1b-p1-5-hog {
                        gpio-hog;
                        gpios = <13 0>;
                        output-high;
                        line-name = "FM_BMC_FAULT_LED_N";
                };
-               G1B_P1_6 {
+               g1b-p1-6-hog {
                        gpio-hog;
                        gpios = <14 0>;
                        output-high;
                        line-name = "FM_CPLD_BMC_PWRDN_N";
                };
-               G1B_P1_7 {
+               g1b-p1-7-hog {
                        gpio-hog;
                        gpios = <15 0>;
                        output-high;
                gpio-controller;
                #gpio-cells = <2>;
                reset-gpios = <&gpio5 28 GPIO_ACTIVE_LOW>;
-               G2A_P0_0 {
+               g2a-p0-0-hog {
                        gpio-hog;
                        gpios = <0 0>;
                        output-high;
                        line-name = "BMC_PON_RST_REQ_N";
                };
-               G2A_P0_1 {
+               g2a-p0-1-hog {
                        gpio-hog;
                        gpios = <1 0>;
                        output-high;
                        line-name = "BMC_RST_IND_REQ_N";
                };
-               G2A_P0_2 {
+               g2a-p0-2-hog {
                        gpio-hog;
                        gpios = <2 0>;
                        input;
                        line-name = "RST_BMC_RTCRST";
                };
-               G2A_P0_3 {
+               g2a-p0-3-hog {
                        gpio-hog;
                        gpios = <3 0>;
                        output-high;
                        line-name = "FM_BMC_PWRBTN_OUT_N";
                };
-               G2A_P0_4 {
+               g2a-p0-4-hog {
                        gpio-hog;
                        gpios = <4 0>;
                        output-high;
                        line-name = "RST_BMC_SYSRST_BTN_OUT_N";
                };
-               G2A_P0_5 {
+               g2a-p0-5-hog {
                        gpio-hog;
                        gpios = <5 0>;
                        output-high;
                        line-name = "FM_BATTERY_SENSE_EN_N";
                };
-               G2A_P0_6 {
+               g2a-p0-6-hog {
                        gpio-hog;
                        gpios = <6 0>;
                        output-high;
                        line-name = "FM_BMC_READY_N";
                };
-               G2A_P0_7 {
+               g2a-p0-7-hog {
                        gpio-hog;
                        gpios = <7 0>;
                        input;
                        line-name = "IRQ_BMC_PCH_SMI_LPC_N";
                };
-               G2A_P1_0 {
+               g2a-p1-0-hog {
                        gpio-hog;
                        gpios = <8 0>;
                        input;
                        line-name = "FM_SLOT4_CFG0";
                };
-               G2A_P1_1 {
+               g2a-p1-1-hog {
                        gpio-hog;
                        gpios = <9 0>;
                        input;
                        line-name = "FM_SLOT4_CFG1";
                };
-               G2A_P1_2 {
+               g2a-p1-2-hog {
                        gpio-hog;
                        gpios = <10 0>;
                        input;
                        line-name = "FM_NVDIMM_EVENT_N";
                };
-               G2A_P1_3 {
+               g2a-p1-3-hog {
                        gpio-hog;
                        gpios = <11 0>;
                        input;
                        line-name = "PSU1_BLADE_EN_N";
                };
-               G2A_P1_4 {
+               g2a-p1-4-hog {
                        gpio-hog;
                        gpios = <12 0>;
                        input;
                        line-name = "BMC_PCH_FNM";
                };
-               G2A_P1_5 {
+               g2a-p1-5-hog {
                        gpio-hog;
                        gpios = <13 0>;
                        input;
                        line-name = "FM_SOL_UART_CH_SEL";
                };
-               G2A_P1_6 {
+               g2a-p1-6-hog {
                        gpio-hog;
                        gpios = <14 0>;
                        input;
                reg = <0x75>;
                gpio-controller;
                #gpio-cells = <2>;
-               G2B_P0_0 {
+               g2b-p0-0-hog {
                        gpio-hog;
                        gpios = <0 0>;
                        input;
                        line-name = "FM_CPU_MSMI_LVT3_N";
                };
-               G2B_P0_1 {
+               g2b-p0-1-hog {
                        gpio-hog;
                        gpios = <1 0>;
                        input;
                        line-name = "FM_BIOS_MRC_DEBUG_MSG_DIS";
                };
-               G2B_P0_2 {
+               g2b-p0-2-hog {
                        gpio-hog;
                        gpios = <2 0>;
                        input;
                        line-name = "FM_CPU1_DISABLE_BMC_N";
                };
-               G2B_P0_3 {
+               g2b-p0-3-hog {
                        gpio-hog;
                        gpios = <3 0>;
                        output-low;
                        line-name = "BMC_JTAG_SELECT";
                };
-               G2B_P0_4 {
+               g2b-p0-4-hog {
                        gpio-hog;
                        gpios = <4 0>;
                        output-high;
                        line-name = "PECI_MUX_SELECT";
                };
-               G2B_P0_5 {
+               g2b-p0-5-hog {
                        gpio-hog;
                        gpios = <5 0>;
                        output-high;
                        line-name = "I2C_MUX2_RESET_N";
                };
-               G2B_P0_6 {
+               g2b-p0-6-hog {
                        gpio-hog;
                        gpios = <6 0>;
                        input;
                        line-name = "FM_BMC_CPLD_PSU2_ON";
                };
-               G2B_P0_7 {
+               g2b-p0-7-hog {
                        gpio-hog;
                        gpios = <7 0>;
                        output-high;
                        line-name = "PSU2_ALERT_EN_N";
                };
-               G2B_P1_0 {
+               g2b-p1-0-hog {
                        gpio-hog;
                        gpios = <8 0>;
                        output-high;
                        line-name = "FM_CPU_BMC_INIT";
                };
-               G2B_P1_1 {
+               g2b-p1-1-hog {
                        gpio-hog;
                        gpios = <9 0>;
                        output-high;
                        line-name = "IRQ_BMC_PCH_SCI_LPC_N";
                };
-               G2B_P1_2 {
+               g2b-p1-2-hog {
                        gpio-hog;
                        gpios = <10 0>;
                        output-low;
                        line-name = "PMB_ALERT_EN_N";
                };
-               G2B_P1_3 {
+               g2b-p1-3-hog {
                        gpio-hog;
                        gpios = <11 0>;
                        output-high;
                        line-name = "FM_FAST_PROCHOT_EN_N";
                };
-               G2B_P1_4 {
+               g2b-p1-4-hog {
                        gpio-hog;
                        gpios = <12 0>;
                        output-high;
                        line-name = "BMC_NVDIMM_PRSNT_N";
                };
-               G2B_P1_5 {
+               g2b-p1-5-hog {
                        gpio-hog;
                        gpios = <13 0>;
                        output-low;
                        line-name = "FM_BACKUP_BIOS_SEL_H_BMC";
                };
-               G2B_P1_6 {
+               g2b-p1-6-hog {
                        gpio-hog;
                        gpios = <14 0>;
                        output-high;
index 30eed40b89b5c2292550604cddf98f9daf95dde8..f42ad259636c21a718bdb203b20c67399f702781 100644 (file)
                                        &rg2mdio_pins>;
                        status = "disabled";
                };
+
+               udc0: usb@f0830000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0830000 0x1000
+                              0xfffd0000 0x800>;
+                       interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
+               udc1: usb@f0831000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0831000 0x1000
+                              0xfffd0800 0x800>;
+                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
+               udc2: usb@f0832000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0832000 0x1000
+                              0xfffd1000 0x800>;
+                       interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
+               udc3: usb@f0833000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0833000 0x1000
+                              0xfffd1800 0x800>;
+                       interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
+
+               udc4: usb@f0834000 {
+                       compatible = "nuvoton,npcm750-udc";
+                       reg = <0xf0834000 0x1000
+                              0xfffd2000 0x800>;
+                       interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk NPCM7XX_CLK_SU>;
+                       clock-names = "clk_usb_bridge";
+                       phys = <&udc0_phy>;
+                       phy_type = "utmi_wide";
+                       dr_mode = "peripheral";
+                       status = "disabled";
+               };
        };
 };
index 0f3debeb294b704cd81d790a8b21f3c46df9448a..1aa7265554d9919bd34a7b90dcb435ec83f0f52f 100644 (file)
                status = "okay";
                clock-frequency = <400000>;
 
-               pcie-switch@58 {
-                       compatible = "plx,pex8605";
-                       reg = <0x58>;
-               };
-
                /* M41T0M6 real time clock on carrier board */
                rtc@68 {
                        compatible = "st,m41t0";
index d13b8d25ca6a9c9255d4ee2c12c7bdde535a8ae9..23158bb821731a56043cb1a1bd979332c47de751 100644 (file)
                status = "okay";
                clock-frequency = <400000>;
 
-               pcie-switch@58 {
-                       compatible = "plx,pex8605";
-                       reg = <0x58>;
-               };
-
                /* M41T0M6 real time clock on carrier board */
                rtc@68 {
                        compatible = "st,m41t0";
index 8da75ccc44025bf2978141082332b78bf94c38a9..882adb7f2f26392db2be386b0a936453fc839049 100644 (file)
                reg = <0x60007000 0x1000>;
        };
 
-       apbdma: dma@6000a000 {
+       apbdma: dma-controller@6000a000 {
                compatible = "nvidia,tegra20-apbdma";
                reg = <0x6000a000 0x1200>;
                interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
index fc284155cd764c40c76e192deb18316a5b7f52ea..ccb9f29c5de38f5dabbe1efc647f165b96182d66 100644 (file)
                status = "okay";
                clock-frequency = <400000>;
 
-               pcie-switch@58 {
-                       compatible = "plx,pex8605";
-                       reg = <0x58>;
-               };
-
                /* M41T0M6 real time clock on carrier board */
                rtc@68 {
                        compatible = "st,m41t0";
index 9d08e2b094b415bbca76764df55f4a30ce27edb5..bc353324df4385aae578c31f9695242a9d68c99c 100644 (file)
                status = "okay";
                clock-frequency = <400000>;
 
-               pcie-switch@58 {
-                       compatible = "plx,pex8605";
-                       reg = <0x58>;
-               };
-
                /* M41T0M6 real time clock on carrier board */
                rtc@68 {
                        compatible = "st,m41t0";
diff --git a/src/arm/nvidia/tegra30-asus-tf300tl.dts b/src/arm/nvidia/tegra30-asus-tf300tl.dts
new file mode 100644 (file)
index 0000000..2ef9d87
--- /dev/null
@@ -0,0 +1,857 @@
+// SPDX-License-Identifier: GPL-2.0
+/dts-v1/;
+
+#include "tegra30-asus-transformer-common.dtsi"
+#include "tegra30-asus-lvds-display.dtsi"
+
+/ {
+       model = "Asus Transformer Pad LTE TF300TL";
+       compatible = "asus,tf300tl", "nvidia,tegra30";
+
+       gpio@6000d000 {
+               tf300tl-init-hog {
+                       gpio-hog;
+                       gpios = <TEGRA_GPIO(C, 6) GPIO_ACTIVE_HIGH>;
+                       output-low;
+               };
+       };
+
+       pinmux@70000868 {
+               state_default: pinmux {
+                       lcd_pwr2_pc6 {
+                               nvidia,pins = "lcd_pwr2_pc6",
+                                             "lcd_dc1_pd2";
+                               nvidia,function = "displaya";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       pbb3 {
+                               nvidia,pins = "pbb3";
+                               nvidia,function = "vgp3";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       pbb7 {
+                               nvidia,pins = "pbb7";
+                               nvidia,function = "i2s4";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       kb_row7_pr7 {
+                               nvidia,pins = "kb_row7_pr7";
+                               nvidia,function = "kbc";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       gmi_cs4_n_pk2 {
+                               nvidia,pins = "gmi_cs4_n_pk2";
+                               nvidia,function = "gmi";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       ulpi_data5_po6 {
+                               nvidia,pins = "ulpi_data5_po6";
+                               nvidia,function = "uarta";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       dap3_din_pp1 {
+                               nvidia,pins = "dap3_din_pp1";
+                               nvidia,function = "i2s2";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       crt_hsync_pv6 {
+                               nvidia,pins = "crt_hsync_pv6";
+                               nvidia,function = "crt";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       crt_vsync_pv7 {
+                               nvidia,pins = "crt_vsync_pv7";
+                               nvidia,function = "crt";
+                               nvidia,pull = <TEGRA_PIN_PULL_NONE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       pu5 {
+                               nvidia,pins = "pu5";
+                               nvidia,function = "pwm2";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       clk3_out_pee0 {
+                               nvidia,pins = "clk3_out_pee0";
+                               nvidia,function = "extperiph3";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       clk3_req_pee1 {
+                               nvidia,pins = "clk3_req_pee1";
+                               nvidia,function = "dev3";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       dap1_fs_pn0 {
+                               nvidia,pins = "dap1_fs_pn0",
+                                               "dap1_sclk_pn3";
+                               nvidia,function = "i2s0";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       dap1_din_pn1 {
+                               nvidia,pins = "dap1_din_pn1";
+                               nvidia,function = "i2s0";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       dap1_dout_pn2 {
+                               nvidia,pins = "dap1_dout_pn2";
+                               nvidia,function = "i2s0";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       clk1_req_pee2 {
+                               nvidia,pins = "clk1_req_pee2";
+                               nvidia,function = "dap";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
+                       };
+
+                       spi2_mosi_px0 {
+                               nvidia,pins = "spi2_mosi_px0";
+                               nvidia,function = "spi2";
+                       };
+
+                       spi1_sck_px5 {
+                               nvidia,pins = "spi1_sck_px5";
+                               nvidia,function = "spi1";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       spi1_miso_px7 {
+                               nvidia,pins = "spi1_miso_px7";
+                               nvidia,function = "spi1";
+                               nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                       };
+
+                       spi2_cs2_n_pw3 {
+                               nvidia,pins = "spi2_cs2_n_pw3";
+                               nvidia,function = "spi2";
+                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                       };
+               };
+       };
+
+       serial@70006200 {
+               /* Azurewave AW-NH615 BCM4329B1 */
+               bluetooth {
+                       compatible = "brcm,bcm4329-bt";
+               };
+       };
+
+       i2c@7000c400 {
+               /* Elantech EKTH1036 touchscreen */
+               touchscreen@10 {
+                       compatible = "elan,ektf3624";
+                       reg = <0x10>;
+
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(H, 4) IRQ_TYPE_EDGE_FALLING>;
+                       reset-gpios = <&gpio TEGRA_GPIO(H, 6) GPIO_ACTIVE_LOW>;
+
+                       vcc33-supply = <&vdd_3v3_sys>;
+                       vccio-supply = <&vdd_3v3_sys>;
+
+                       touchscreen-size-x = <2240>;
+                       touchscreen-size-y = <1408>;
+                       touchscreen-inverted-y;
+               };
+       };
+
+       i2c@7000c500 {
+               clock-frequency = <400000>;
+
+               magnetometer@e {
+                       mount-matrix =  "-1",  "0",  "0",
+                                        "0", "-1",  "0",
+                                        "0",  "0",  "1";
+               };
+
+               gyroscope@68 {
+                       mount-matrix =   "-1",  "0",  "0",
+                                         "0",  "1",  "0",
+                                         "0",  "0", "-1";
+
+                       /* External I2C interface */
+                       i2c-gate {
+                               accelerometer@f {
+                                       mount-matrix =   "0", "-1",  "0",
+                                                       "-1",  "0",  "0",
+                                                        "0",  "0",  "1";
+                               };
+                       };
+               };
+       };
+
+       i2c@7000d000 {
+               /* Realtek ALC5631 audio codec */
+               rt5631: audio-codec@1a {
+                       compatible = "realtek,rt5631";
+                       reg = <0x1a>;
+               };
+       };
+
+       memory-controller@7000f000 {
+               emc-timings-0 {
+                       /* Elpida 1GB 667MHZ */
+                       nvidia,ram-code = <0>;
+
+                       timing-25500000 {
+                               clock-frequency = <25500000>;
+
+                               nvidia,emem-configuration = < 0x00020001 0xc0000020
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x74830303 0x001f0000 >;
+                       };
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emem-configuration = < 0x00010001 0xc0000020
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x73430303 0x001f0000 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = < 0x00000001 0xc0000030
+                                       0x00000001 0x00000001 0x00000003 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0503 0x72830504 0x001f0000 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = < 0x00000003 0xc0000025
+                                       0x00000001 0x00000001 0x00000005 0x00000002
+                                       0x00000003 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0505 0x72440a06 0x001f0000 >;
+                       };
+
+                       timing-333500000 {
+                               clock-frequency = <333500000>;
+
+                               nvidia,emem-configuration = < 0x00000005 0xc000003d
+                                       0x00000001 0x00000002 0x00000008 0x00000004
+                                       0x00000004 0x00000001 0x00000002 0x00000007
+                                       0x00000002 0x00000002 0x00000003 0x00000006
+                                       0x06030202 0x000b0608 0x70850f09 0x001f0000 >;
+                       };
+
+                       timing-667000000 {
+                               clock-frequency = <667000000>;
+
+                               nvidia,emem-configuration = < 0x0000000a 0xc0000079
+                                       0x00000003 0x00000004 0x00000010 0x0000000b
+                                       0x0000000a 0x00000001 0x00000003 0x0000000b
+                                       0x00000002 0x00000002 0x00000004 0x00000008
+                                       0x08040202 0x00130b10 0x70ea1f11 0x001f0000 >;
+                       };
+               };
+
+               emc-timings-1 {
+                       /* Hynix 1GB 667MHZ */
+                       nvidia,ram-code = <1>;
+
+                       timing-25500000 {
+                               clock-frequency = <25500000>;
+
+                               nvidia,emem-configuration = < 0x00020001 0xc0000020
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x74830303 0x001f0000 >;
+                       };
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emem-configuration = < 0x00010001 0xc0000020
+                                       0x00000001 0x00000001 0x00000002 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0502 0x73430303 0x001f0000 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emem-configuration = < 0x00000001 0xc0000030
+                                       0x00000001 0x00000001 0x00000003 0x00000000
+                                       0x00000001 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0503 0x72830504 0x001f0000 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emem-configuration = < 0x00000003 0xc0000025
+                                       0x00000001 0x00000001 0x00000005 0x00000002
+                                       0x00000003 0x00000001 0x00000003 0x00000008
+                                       0x00000002 0x00000001 0x00000002 0x00000006
+                                       0x06020102 0x000a0505 0x72440a06 0x001f0000 >;
+                       };
+
+                       timing-333500000 {
+                               clock-frequency = <333500000>;
+
+                               nvidia,emem-configuration = < 0x00000005 0xc000003d
+                                       0x00000001 0x00000002 0x00000008 0x00000004
+                                       0x00000004 0x00000001 0x00000002 0x00000007
+                                       0x00000002 0x00000002 0x00000003 0x00000006
+                                       0x06030202 0x000b0608 0x70850f09 0x001f0000 >;
+                       };
+
+                       timing-667000000 {
+                               clock-frequency = <667000000>;
+
+                               nvidia,emem-configuration = < 0x0000000a 0xc0000079
+                                       0x00000003 0x00000004 0x00000010 0x0000000b
+                                       0x0000000a 0x00000001 0x00000003 0x0000000b
+                                       0x00000002 0x00000002 0x00000004 0x00000008
+                                       0x08040202 0x00130b10 0x70ea1f11 0x001f0000 >;
+                       };
+               };
+       };
+
+       memory-controller@7000f400 {
+               emc-timings-0 {
+                       /* Elpida 1GB 667MHZ */
+                       nvidia,ram-code = <0>;
+
+                       timing-25500000 {
+                               clock-frequency = <25500000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000001
+                                       0x00000004 0x00000000 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x000000c0 0x00000000 0x00000030
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000005 0x00000005
+                                       0x00000004 0x00000001 0x00000000 0x00000004
+                                       0x00000005 0x000000c7 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000287 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000002
+                                       0x00000008 0x00000001 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000181 0x00000000 0x00000060
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000009 0x00000009
+                                       0x00000004 0x00000002 0x00000000 0x00000004
+                                       0x00000005 0x0000018e 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000040b 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000005
+                                       0x00000010 0x00000003 0x00000001 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000001
+                                       0x00000001 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000303 0x00000000 0x000000c0
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000012 0x00000012
+                                       0x00000004 0x00000004 0x00000000 0x00000004
+                                       0x00000005 0x0000031c 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000713 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x0000000a
+                                       0x00000020 0x00000007 0x00000002 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000002
+                                       0x00000002 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000006 0x00000004 0x0000000a
+                                       0x0000000b 0x00000607 0x00000000 0x00000181
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000023 0x00000023
+                                       0x00000004 0x00000007 0x00000000 0x00000004
+                                       0x00000005 0x00000638 0x00000007 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x004400a4
+                                       0x00008000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00020000
+                                       0x00000100 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000d22 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-333500000 {
+                               clock-frequency = <333500000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200040>;
+                               nvidia,emc-mode-reset = <0x80000321>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+
+                               nvidia,emc-configuration =  < 0x0000000f
+                                       0x00000034 0x0000000a 0x00000003 0x00000003
+                                       0x00000008 0x00000002 0x00000009 0x00000003
+                                       0x00000003 0x00000002 0x00000001 0x00000000
+                                       0x00000004 0x00000006 0x00000004 0x0000000a
+                                       0x0000000c 0x000009e9 0x00000000 0x0000027a
+                                       0x00000001 0x00000008 0x00000001 0x00000000
+                                       0x00000007 0x0000000e 0x00000039 0x00000200
+                                       0x00000004 0x0000000a 0x00000000 0x00000004
+                                       0x00000005 0x00000a2a 0x00000000 0x00000004
+                                       0x00000000 0x00000000 0x00007088 0x002600a4
+                                       0x00008000 0x0003c000 0x0003c000 0x0003c000
+                                       0x0003c000 0x00014000 0x00014000 0x00014000
+                                       0x00014000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00050000 0x00050000 0x00050000
+                                       0x00050000 0x000002a0 0x0800013d 0x00000000
+                                       0x77fff884 0x01f1f508 0x05057404 0x54000007
+                                       0x080001e8 0x08000021 0x00000802 0x00020000
+                                       0x00000100 0x018b000c 0xa0f10000 0x00000000
+                                       0x00000000 0x800014d4 0xe8000000 0xff00ff89 >;
+                       };
+
+                       timing-667000000 {
+                               clock-frequency = <667000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200058>;
+                               nvidia,emc-mode-reset = <0x80000b71>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x0000001f
+                                       0x00000069 0x00000017 0x00000007 0x00000005
+                                       0x0000000c 0x00000003 0x00000011 0x00000007
+                                       0x00000007 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000b 0x00000009 0x0000000b
+                                       0x00000011 0x00001412 0x00000000 0x00000504
+                                       0x00000002 0x0000000e 0x00000001 0x00000000
+                                       0x0000000c 0x00000016 0x00000072 0x00000200
+                                       0x00000005 0x00000015 0x00000000 0x00000006
+                                       0x00000007 0x00001453 0x0000000c 0x00000004
+                                       0x00000000 0x00000000 0x00005088 0xf00b0191
+                                       0x00008000 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x00018000 0x00018000 0x00018000
+                                       0x00018000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x0000000c 0x0000000c 0x0000000c
+                                       0x0000000c 0x000002a0 0x0800013d 0x22220000
+                                       0x77fff884 0x01f1f501 0x07077404 0x54000000
+                                       0x080001e8 0x0a000021 0x00000802 0x00020000
+                                       0x00000100 0x0156000c 0xa0f10000 0x00000000
+                                       0x00000000 0x800028a5 0xe8000000 0xff00ff49 >;
+                       };
+               };
+
+               emc-timings-1 {
+                       /* Hynix 1GB 667MHZ */
+                       nvidia,ram-code = <1>;
+
+                       timing-25500000 {
+                               clock-frequency = <25500000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000001
+                                       0x00000004 0x00000000 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x000000c0 0x00000000 0x00000030
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000005 0x00000005
+                                       0x00000004 0x00000001 0x00000000 0x00000004
+                                       0x00000005 0x000000c7 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000287 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-51000000 {
+                               clock-frequency = <51000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000002
+                                       0x00000008 0x00000001 0x00000000 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000000
+                                       0x00000000 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000181 0x00000000 0x00000060
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000009 0x00000009
+                                       0x00000004 0x00000002 0x00000000 0x00000004
+                                       0x00000005 0x0000018e 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x8000040b 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-102000000 {
+                               clock-frequency = <102000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000005
+                                       0x00000010 0x00000003 0x00000001 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000001
+                                       0x00000001 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000005 0x00000004 0x0000000a
+                                       0x0000000b 0x00000303 0x00000000 0x000000c0
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000012 0x00000012
+                                       0x00000004 0x00000004 0x00000000 0x00000004
+                                       0x00000005 0x0000031c 0x00000006 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x007800a4
+                                       0x00008000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x000fc000 0x000fc000 0x000fc000
+                                       0x000fc000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00000000
+                                       0x00000040 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000713 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-204000000 {
+                               clock-frequency = <204000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100003>;
+                               nvidia,emc-mode-2 = <0x80200048>;
+                               nvidia,emc-mode-reset = <0x80001221>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-dyn-self-ref;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x0000000a
+                                       0x00000020 0x00000007 0x00000002 0x00000002
+                                       0x0000000a 0x00000005 0x0000000b 0x00000002
+                                       0x00000002 0x00000003 0x00000001 0x00000000
+                                       0x00000005 0x00000006 0x00000004 0x0000000a
+                                       0x0000000b 0x00000607 0x00000000 0x00000181
+                                       0x00000002 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000f 0x00000023 0x00000023
+                                       0x00000004 0x00000007 0x00000000 0x00000004
+                                       0x00000005 0x00000638 0x00000007 0x00000004
+                                       0x00000000 0x00000000 0x00004288 0x004400a4
+                                       0x00008000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00080000 0x00080000 0x00080000
+                                       0x00080000 0x000002a0 0x0800211c 0x00000000
+                                       0x77fff884 0x01f1f108 0x05057404 0x54000007
+                                       0x08000168 0x08000000 0x00000802 0x00020000
+                                       0x00000100 0x000c000c 0xa0f10000 0x00000000
+                                       0x00000000 0x80000d22 0xe8000000 0xff00ff00 >;
+                       };
+
+                       timing-333500000 {
+                               clock-frequency = <333500000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200040>;
+                               nvidia,emc-mode-reset = <0x80000321>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+
+                               nvidia,emc-configuration =  < 0x0000000f
+                                       0x00000034 0x0000000a 0x00000003 0x00000003
+                                       0x00000008 0x00000002 0x00000009 0x00000003
+                                       0x00000003 0x00000002 0x00000001 0x00000000
+                                       0x00000004 0x00000006 0x00000004 0x0000000a
+                                       0x0000000c 0x000009e9 0x00000000 0x0000027a
+                                       0x00000001 0x00000008 0x00000001 0x00000000
+                                       0x00000007 0x0000000e 0x00000039 0x00000200
+                                       0x00000004 0x0000000a 0x00000000 0x00000004
+                                       0x00000005 0x00000a2a 0x00000000 0x00000004
+                                       0x00000000 0x00000000 0x00007088 0x002600a4
+                                       0x00008000 0x0003c000 0x0003c000 0x0003c000
+                                       0x0003c000 0x00014000 0x00014000 0x00014000
+                                       0x00014000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00048000 0x00048000 0x00048000
+                                       0x00048000 0x000002a0 0x0800013d 0x00000000
+                                       0x77fff884 0x01f1f508 0x05057404 0x54000007
+                                       0x080001e8 0x08000021 0x00000802 0x00020000
+                                       0x00000100 0x018b000c 0xa0f10000 0x00000000
+                                       0x00000000 0x800014d4 0xe8000000 0xff00ff89 >;
+                       };
+
+                       timing-667000000 {
+                               clock-frequency = <667000000>;
+
+                               nvidia,emc-auto-cal-interval = <0x001fffff>;
+                               nvidia,emc-mode-1 = <0x80100002>;
+                               nvidia,emc-mode-2 = <0x80200058>;
+                               nvidia,emc-mode-reset = <0x80000b71>;
+                               nvidia,emc-zcal-cnt-long = <0x00000040>;
+                               nvidia,emc-cfg-periodic-qrst;
+
+                               nvidia,emc-configuration =  < 0x00000020
+                                       0x00000069 0x00000017 0x00000007 0x00000005
+                                       0x0000000c 0x00000003 0x00000011 0x00000007
+                                       0x00000007 0x00000002 0x00000001 0x00000000
+                                       0x00000007 0x0000000b 0x00000009 0x0000000b
+                                       0x00000011 0x00001412 0x00000000 0x00000504
+                                       0x00000002 0x0000000e 0x00000001 0x00000000
+                                       0x0000000c 0x00000016 0x00000072 0x00000200
+                                       0x00000005 0x00000015 0x00000000 0x00000006
+                                       0x00000007 0x00001453 0x0000000c 0x00000004
+                                       0x00000000 0x00000000 0x00005088 0xf00b0191
+                                       0x00008000 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x0000000a 0x0000000a 0x0000000a
+                                       0x0000000a 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x00000000 0x00000000 0x00000000
+                                       0x00000000 0x0000000c 0x0000000c 0x0000000c
+                                       0x0000000c 0x000002a0 0x0600013d 0x22220000
+                                       0x77fff884 0x01f1f501 0x07077404 0x54000000
+                                       0x080001e8 0x08000021 0x00000802 0x00020000
+                                       0x00000100 0x0156000c 0xa0f10000 0x00000000
+                                       0x00000000 0x800028a5 0xf8000000 0xff00ff49 >;
+                       };
+               };
+       };
+
+       pad_battery: battery-pad {
+               compatible = "simple-battery";
+               device-chemistry = "lithium-ion-polymer";
+               charge-full-design-microamp-hours = <2940000>;
+               energy-full-design-microwatt-hours = <22000000>;
+               operating-range-celsius = <0 45>;
+       };
+
+       dock_battery: battery-dock {
+               compatible = "simple-battery";
+               device-chemistry = "lithium-ion-polymer";
+               charge-full-design-microamp-hours = <2260000>;
+               energy-full-design-microwatt-hours = <16000000>;
+               operating-range-celsius = <0 45>;
+       };
+
+       display-panel {
+               compatible = "innolux,g101ice-l01";
+       };
+
+       opp-table-emc {
+               /delete-node/ opp-750000000-1300;
+               /delete-node/ opp-800000000-1300;
+               /delete-node/ opp-900000000-1350;
+       };
+
+       opp-table-actmon {
+               /delete-node/ opp-750000000;
+               /delete-node/ opp-800000000;
+               /delete-node/ opp-900000000;
+       };
+
+       sound {
+               compatible = "asus,tegra-audio-rt5631-tf300tl",
+                            "nvidia,tegra-audio-rt5631";
+               nvidia,model = "Asus Transformer Pad TF300TL RT5631";
+
+               nvidia,audio-routing =
+                       "Headphone Jack", "HPOL",
+                       "Headphone Jack", "HPOR",
+                       "Int Spk", "SPOL",
+                       "Int Spk", "SPOR",
+                       "MIC1", "MIC Bias1",
+                       "MIC Bias1", "Mic Jack",
+                       "DMIC", "Int Mic";
+
+               nvidia,audio-codec = <&rt5631>;
+       };
+};
index f866fa7b55a509a0f66d3e49456565df0d74a678..2a4d93db81347e3e1dd942e6c10a1ff5683402e7 100644 (file)
                reg = <0x60007000 0x1000>;
        };
 
-       apbdma: dma@6000a000 {
+       apbdma: dma-controller@6000a000 {
                compatible = "nvidia,tegra30-apbdma", "nvidia,tegra20-apbdma";
                reg = <0x6000a000 0x1400>;
                interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
index 9cfff2151b7edc9fc5eb6dc390dc35286aed332c..82601a4b7b4b5a90d744217beda68b19fbbb6767 100644 (file)
                        reg = <0x80000000 0x3b002000>;
                        ranges;
 
-                       nfc: nand@bb000000 {
+                       nfc: nand-controller@bb000000 {
                                #address-cells = <1>;
                                #size-cells = <1>;
 
index d17abdfb6330c1f6ea919f5d224c782e9df8267e..630f8fa69ba8771722c997156a203a0092ab192e 100644 (file)
 &weim {
        status = "okay";
 
-       nor@0,0 {
+       flash@0,0 {
                compatible = "cfi-flash";
                reg = <0 0x0 0x200000>;
                bank-width = <2>;
index 813a81558c404188ae726b249d8290ca0610114f..8541a666747a94f4bc64ca4b48c709ed64375a9d 100644 (file)
                        };
 
                        iim: efuse@5001c000 {
-                               compatible = "fsl,imx31-iim", "fsl,imx27-iim";
+                               compatible = "fsl,imx31-iim";
                                reg = <0x5001c000 0x1000>;
                                interrupts = <19>;
                                clocks = <&clks 25>;
index 30beb39e0162ca15720adf2f87f33c1be0a7cc0c..111d7c0331f504723ef160235eca1381eab0524f 100644 (file)
                        reg = <0x80000000 0x40000000>;
                        ranges;
 
-                       nfc: nand@bb000000 {
+                       nfc: nand-controller@bb000000 {
                                #address-cells = <1>;
                                #size-cells = <1>;
                                compatible = "fsl,imx35-nand", "fsl,imx25-nand";
index dc72a2d14960feb7758e5debe5fc3b816a963fde..1980f751f161b28acdbdc6a91b0dfe4d8c305ae9 100644 (file)
        mma7455l@1d {
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_mma7455l>;
-               compatible = "fsl,mma7455l";
+               compatible = "fsl,mma7455";
                reg = <0x1d>;
                interrupt-parent = <&gpio1>;
                interrupts = <7 IRQ_TYPE_LEVEL_HIGH>, <6 IRQ_TYPE_LEVEL_HIGH>;
index 8323e3a56a1f61c32d899fc3a352d1a36144599a..c8698a9af1a7e6fa0da4d9329415043acbf0300e 100644 (file)
                        };
 
                        iim: efuse@83f98000 {
-                               compatible = "fsl,imx51-iim", "fsl,imx27-iim", "syscon";
+                               compatible = "fsl,imx51-iim";
                                reg = <0x83f98000 0x4000>;
                                interrupts = <69>;
                                clocks = <&clks IMX5_CLK_IIM_GATE>;
                                status = "disabled";
                        };
 
-                       nfc: nand@83fdb000 {
+                       nfc: nand-controller@83fdb000 {
                                #address-cells = <1>;
                                #size-cells = <1>;
                                compatible = "fsl,imx51-nand";
index faac7cc249d0ac0bc2b24241c5249612d0150591..93225a56896f9e790ddda6ba8711e3172304dd09 100644 (file)
                        };
 
                        iim: efuse@63f98000 {
-                               compatible = "fsl,imx53-iim", "fsl,imx27-iim", "syscon";
+                               compatible = "fsl,imx53-iim";
                                reg = <0x63f98000 0x4000>;
                                interrupts = <69>;
                                clocks = <&clks IMX5_CLK_IIM_GATE>;
                                status = "disabled";
                        };
 
-                       nfc: nand@63fdb000 {
+                       nfc: nand-controller@63fdb000 {
                                compatible = "fsl,imx53-nand";
                                reg = <0x63fdb000 0x1000 0xf7ff0000 0x10000>;
                                interrupts = <8>;
index e1077e2da5f42652f5ec07c29174f34e21fd7231..1f2200f500596676753f230548aaa512089e6692 100644 (file)
        status = "okay";
 };
 
-/* I2C1_SDA/SCL on MXM3 209/211 (e.g. RTC on carrier board) */
-&i2c1 {
-       /* PCIe Switch */
-       pcie-switch@58 {
-               compatible = "plx,pex8605";
-               reg = <0x58>;
-       };
-};
-
 &pcie {
        vpcie-supply = <&reg_pcie_switch>;
        status = "okay";
index f08b3701029156b0e6e253cd2dac7ee8db8409bb..bba82126aaaa56642dffdbab4770b07cd87cefa5 100644 (file)
        ranges = <0 0 0x08000000 0x08000000>;
        status = "okay";
 
-       nor@0,0 {
+       flash@0,0 {
                compatible = "cfi-flash";
                reg = <0 0 0x02000000>;
                #address-cells = <1>;
index a381cb224c1e2103d97216ae3ac7e99922a62767..2587d17c5918573cb103361234194a1b585b6548 100644 (file)
        ranges = <0 0 0x08000000 0x08000000>;
        status = "disabled"; /* pin conflict with SPI NOR */
 
-       nor@0,0 {
+       flash@0,0 {
                compatible = "cfi-flash";
                reg = <0 0 0x02000000>;
                #address-cells = <1>;
index fbe260c9872e36e0a326e81b5930480001e13611..cad985e341a1093ba0335936d69a9400c3f92b05 100644 (file)
        #address-cells = <1>;
        #size-cells = <0>;
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
index eec526a9631118387895c0894b31540071e6a792..ff9d5094288484ee88e403ceab3517fbadc40b19 100644 (file)
        cap-power-off-card;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
index 0484e349e064e4de58162c61efb09e6f2e5ed9f4..d961c61a93af5f0f7600286a61f65afcdf899c59 100644 (file)
@@ -48,7 +48,7 @@
 
                opp-792000000 {
                        opp-hz = /bits/ 64 <792000000>;
-                       opp-microvolt = <1000000>;
+                       opp-microvolt = <1000000 950000 1250000>;
                        clock-latency-ns = <150000>;
                        opp-supported-hw = <0xd>, <0x7>;
                        opp-suspend;
@@ -56,7 +56,7 @@
 
                opp-996000000 {
                        opp-hz = /bits/ 64 <996000000>;
-                       opp-microvolt = <1100000>;
+                       opp-microvolt = <1100000 1045000 1250000>;
                        clock-latency-ns = <150000>;
                        opp-supported-hw = <0xc>, <0x7>;
                        opp-suspend;
@@ -64,7 +64,7 @@
 
                opp-1200000000 {
                        opp-hz = /bits/ 64 <1200000000>;
-                       opp-microvolt = <1225000>;
+                       opp-microvolt = <1225000 1200000 1250000>;
                        clock-latency-ns = <150000>;
                        opp-supported-hw = <0x8>, <0x3>;
                        opp-suspend;
index 2629968001a746dccf69dfae58db3d6b5aeb3238..9235dd7e93bb7b5ba6206a8753b2d8645537ed8b 100644 (file)
@@ -73,7 +73,6 @@
                        device_type = "cpu";
                        reg = <0>;
                        clock-frequency = <792000000>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clks IMX7D_CLK_ARM>;
                        cpu-idle-states = <&cpu_sleep_wait>;
                        operating-points-v2 = <&cpu0_opp_table>;
index 974410918f35b62770d20192dba041887db547d9..41f41a786f9dcc05eb896085a670ef762444e02e 100644 (file)
@@ -94,7 +94,7 @@
                        /*
                         * Enable either ohci or usbd (gadget)!
                         */
-                       ohci: ohci@0 {
+                       ohci: usb@0 {
                                compatible = "nxp,ohci-nxp", "usb-ohci";
                                reg = <0x0 0x300>;
                                interrupt-parent = <&sic1>;
diff --git a/src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-hdmi.dtso b/src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-hdmi.dtso
new file mode 100644 (file)
index 0000000..e713a2e
--- /dev/null
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright 2013-2014 Freescale Semiconductor, Inc.
+ * Copyright 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+/dts-v1/;
+/plugin/;
+
+&dcu {
+       status = "okay";
+
+       port {
+               dcu_out: endpoint {
+                       remote-endpoint = <&sii9022a_in>;
+               };
+       };
+};
+
+&hdmi_out {
+       status = "okay";
+};
+
+&sii9022a {
+       status = "okay";
+};
+
+&sii9022a_in {
+       remote-endpoint = <&dcu_out>;
+};
diff --git a/src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-lvds-tm070jvhg33.dtso b/src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-lvds-tm070jvhg33.dtso
new file mode 100644 (file)
index 0000000..e9708f3
--- /dev/null
@@ -0,0 +1,47 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright 2013-2014 Freescale Semiconductor, Inc.
+ * Copyright 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+
+/dts-v1/;
+/plugin/;
+
+&backlight_dcu {
+       status = "okay";
+};
+
+&dcu {
+       status = "okay";
+
+       port {
+               dcu_out: endpoint {
+                       remote-endpoint = <&lvds_encoder_in>;
+               };
+       };
+};
+
+&display {
+       compatible = "tianma,tm070jvhg33";
+       status = "okay";
+};
+
+&lvds_encoder {
+       status = "okay";
+};
+
+&lvds_encoder_in {
+       remote-endpoint = <&dcu_out>;
+};
+
+&lvds_encoder_out {
+       remote-endpoint = <&panel_in>;
+};
+
+&panel_in {
+       remote-endpoint = <&lvds_encoder_out>;
+};
diff --git a/src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-rgb-cdtech-dc44.dtso b/src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-rgb-cdtech-dc44.dtso
new file mode 100644 (file)
index 0000000..146d456
--- /dev/null
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright 2013-2014 Freescale Semiconductor, Inc.
+ * Copyright 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/dts-v1/;
+/plugin/;
+
+&backlight_dcu {
+       status = "okay";
+};
+
+&dcu {
+       status = "okay";
+
+       port {
+               dcu_out: endpoint {
+                       remote-endpoint = <&panel_in>;
+               };
+       };
+};
+
+&display {
+       compatible = "cdtech,s070swv29hg-dc44";
+       status = "okay";
+};
+
+&i2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       polytouch: touchscreen@38 {
+               compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
+               reg = <0x38>;
+               interrupt-parent = <&pca9554_0>;
+               interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
+               /* LCD_PWR_EN -> TSC_WAKE */
+               wake-gpios = <&pca9554_1 4 GPIO_ACTIVE_HIGH>;
+               iovcc-supply = <&reg_3p3v>;
+               vcc-supply = <&reg_3p3v>;
+               gain = <20>;
+               touchscreen-size-x = <800>;
+               touchscreen-size-y = <480>;
+       };
+};
+
+&panel_in {
+       remote-endpoint = <&dcu_out>;
+};
diff --git a/src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-rgb-cdtech-fc21.dtso b/src/arm/nxp/ls/ls1021a-tqmls1021a-mbls1021a-rgb-cdtech-fc21.dtso
new file mode 100644 (file)
index 0000000..db66831
--- /dev/null
@@ -0,0 +1,55 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright 2013-2014 Freescale Semiconductor, Inc.
+ * Copyright 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/dts-v1/;
+/plugin/;
+
+&backlight_dcu {
+       status = "okay";
+};
+
+&dcu {
+       status = "okay";
+
+       port {
+               dcu_out: endpoint {
+                       remote-endpoint = <&panel_in>;
+               };
+       };
+};
+
+&display {
+       compatible = "cdtech,s070pws19hp-fc21";
+       status = "okay";
+};
+
+&i2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       polytouch: touchscreen@38 {
+               compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
+               reg = <0x38>;
+               interrupt-parent = <&pca9554_0>;
+               interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
+               /* LCD_PWR_EN -> TSC_WAKE */
+               wake-gpios = <&pca9554_1 4 GPIO_ACTIVE_HIGH>;
+               iovcc-supply = <&reg_3p3v>;
+               vcc-supply = <&reg_3p3v>;
+               gain = <20>;
+               touchscreen-size-x = <800>;
+               touchscreen-size-y = <480>;
+       };
+};
+
+&panel_in {
+       remote-endpoint = <&dcu_out>;
+};
index 34636fcdfd6ad7ef4b21d008814e7c3f0ad74b84..5606585dd560744bee4cf1e3895d26c57a774083 100644 (file)
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0-or-later OR X11)
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
 /*
  * Copyright 2013-2014 Freescale Semiconductor, Inc.
  * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>,
        display: panel {
                backlight = <&backlight_dcu>;
                enable-gpios = <&pca9554_1 3 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_3p3v>;
                status = "disabled";
 
                port {
 
        sound {
                compatible = "fsl,imx-audio-tlv320aic32x4";
-               model = "ls1021a-mbls1021a-tlv320aic32";
+               model = "tqm-tlv320aic32";
                ssi-controller = <&sai1>;
                audio-codec = <&tlv320aic32x4>;
        };
index 1b13851ad997001f0294ae5c642c258fa3c49780..271001eb5ad7f8929e1f2401ffbe417497fd5d45 100644 (file)
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: (GPL-2.0-or-later OR X11)
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
 /*
  * Copyright 2013-2014 Freescale Semiconductor, Inc.
  * Copyright 2018-2023 TQ-Systems GmbH <linux@ew.tq-group.com>,
@@ -72,6 +72,7 @@
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <4>;
                reg = <0>;
+               vcc-supply = <&reg_3p3v_som>;
 
                partitions {
                        compatible = "fixed-partitions";
index cb661bf2d1578f7b048d821060d7efd7163b2a4d..613f13b6c8a8beaad1c5bf721e4973df720fd47e 100644 (file)
@@ -93,9 +93,9 @@
                                                MX23_PAD_LCD_HSYNC__GPIO_1_24
                                                MX23_PAD_PWM3__GPIO_1_29
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
                };
index 0b088c8ab6b6466046453fc01e7ad7470db83031..fad08f6c008f6f6d5cf7e26cca9539c4f68525cb 100644 (file)
@@ -83,9 +83,9 @@
                                        fsl,pinmux-ids = <
                                                MX23_PAD_GPMI_D07__GPIO_0_7
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                key_pins_a: keys@0 {
@@ -94,9 +94,9 @@
                                                MX23_PAD_ROTARYA__GPIO_2_7
                                                MX23_PAD_ROTARYB__GPIO_2_8
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
                        };
                };
index 2c52e67e5c1435aca5ef4a51dbff45c3785c4a4a..a6903ef2b09343f225e22f6715be84097688c18b 100644 (file)
        keep-power-in-suspend;
        status = "okay";
 
-       wlan@1 {
+       wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
index d004b1cbb4ae15d1557cbfb4b134ece6fef82398..f170df37b3f887d931c3b59562e698c1fccdc226 100644 (file)
                        0x31c3 /*
                        MX28_PAD_PWM3__GPIO_3_28 */
                >;
-               fsl,drive-strength = <0>;
-               fsl,voltage = <1>;
-               fsl,pull-up = <0>;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
        };
 };
 
index 5dbca83f22309776e63b1b1f158a335def03461f..e6392f7d14c759fb01df17cf3a8120d13d270795 100644 (file)
                        vsp-supply = <&reg_lcd_pos>;
                        vsn-supply = <&reg_lcd_neg>;
                        vddio-supply = <&vddio_disp_vreg>;
+                       clocks = <&mmcc MDSS_AHB_CLK>,
+                                <&mmcc MDSS_AXI_CLK>,
+                                <&mmcc MDSS_BYTE0_CLK>,
+                                <&mmcc MDSS_ESC0_CLK>,
+                                <&mmcc MDSS_MDP_CLK>,
+                                <&mmcc MMSS_MISC_AHB_CLK>,
+                                <&mmcc MDSS_PCLK0_CLK>,
+                                <&mmcc MDSS_VSYNC_CLK>;
+                       power-domains = <&mmcc MDSS_GDSC>;
                };
        };
 
                };
        };
 
+       /* TI TPS22902 */
        vddio_disp_vreg: regulator-vddio-disp {
                compatible = "regulator-fixed";
                regulator-name = "vddio_disp";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
                gpio = <&tlmm 34 GPIO_ACTIVE_HIGH>;
                vin-supply = <&pm8226_l8>;
                startup-delay-us = <300>;
 };
 
 &blsp1_i2c2 {
+       clock-frequency = <100000>;
        status = "okay";
 
        magnetometer@c {
 };
 
 &blsp1_i2c3 {
+       clock-frequency = <400000>;
        status = "okay";
 
        regulator@3e {
 
                reg_lcd_pos: outp {
                        regulator-name = "outp";
-                       regulator-min-microvolt = <4000000>;
-                       regulator-max-microvolt = <6000000>;
+                       regulator-min-microvolt = <5400000>;
+                       regulator-max-microvolt = <5400000>;
                        regulator-active-discharge = <1>;
                        regulator-boot-on;
                        enable-gpios = <&tlmm 31 GPIO_ACTIVE_HIGH>;
 
                reg_lcd_neg: outn {
                        regulator-name = "outn";
-                       regulator-min-microvolt = <4000000>;
-                       regulator-max-microvolt = <6000000>;
+                       regulator-min-microvolt = <5400000>;
+                       regulator-max-microvolt = <5400000>;
                        regulator-active-discharge = <1>;
                        regulator-boot-on;
                        enable-gpios = <&tlmm 33 GPIO_ACTIVE_HIGH>;
diff --git a/src/arm/qcom/msm8926.dtsi b/src/arm/qcom/msm8926.dtsi
new file mode 100644 (file)
index 0000000..629654c
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025, Luca Weiss <luca@lucaweiss.eu>
+ */
+
+#include "qcom-msm8226.dtsi"
+
+&modem {
+       compatible = "qcom,msm8926-mss-pil";
+       /delete-property/ qcom,ext-bhs-reg;
+};
index da3be658e822fb6408738e7e79453b87c39478e1..4546fa8beba46d31345da1ee3eded20e8a853f6b 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 
+#include "qcom-msm8226.dtsi"
 #include "qcom-msm8226-samsung-matisse-common.dtsi"
 
 / {
index 7d519156d91d156d801c477711751aba66cc3224..a8543ca7b5569549418683b6be320784eba1768c 100644 (file)
@@ -12,6 +12,8 @@
 #include "pm8226.dtsi"
 
 /delete-node/ &adsp_region;
+/delete-node/ &mba_region;
+/delete-node/ &mpss_region;
 /delete-node/ &smem_region;
 
 / {
index b3ff8010b14985c55c580e0083a5c8ea23c03962..717bfd74edb75b278eaf5ab37954fcede1f7ffb0 100644 (file)
 
 &hdmi {
        core-vdda-supply = <&pm8921_hdmi_switch>;
-       hpd-gpios = <&tlmm_pinmux 72 GPIO_ACTIVE_HIGH>;
        status = "okay";
 };
 
diff --git a/src/arm/qcom/qcom-apq8064-lg-nexus4-mako.dts b/src/arm/qcom/qcom-apq8064-lg-nexus4-mako.dts
new file mode 100644 (file)
index 0000000..c187c68
--- /dev/null
@@ -0,0 +1,359 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/mfd/qcom-rpm.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+
+#include "qcom-apq8064-v2.0.dtsi"
+#include "pm8821.dtsi"
+#include "pm8921.dtsi"
+
+/ {
+       model = "LG Nexus 4 (mako)";
+       compatible = "lg,nexus4-mako", "qcom,apq8064";
+       chassis-type = "handset";
+
+       aliases {
+               serial0 = &gsbi7_serial;
+               serial1 = &gsbi6_serial;
+               serial2 = &gsbi4_serial;
+       };
+
+       chosen {
+               stdout-path = "serial2:115200n8";
+       };
+
+       battery_cell: battery-cell {
+               compatible = "simple-battery";
+               constant-charge-current-max-microamp = <900000>;
+               operating-range-celsius = <0 45>;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               ramoops@88d00000{
+                       compatible = "ramoops";
+                       reg = <0x88d00000 0x100000>;
+                       record-size = <0x20000>;
+                       console-size = <0x20000>;
+                       ftrace-size = <0x20000>;
+               };
+       };
+};
+
+&gsbi1 {
+       qcom,mode = <GSBI_PROT_I2C>;
+
+       status = "okay";
+};
+
+&gsbi1_i2c {
+       clock-frequency = <200000>;
+
+       status = "okay";
+};
+
+&gsbi4 {
+       qcom,mode = <GSBI_PROT_I2C_UART>;
+
+       status = "okay";
+};
+
+&gsbi4_serial {
+       status = "okay";
+};
+
+&pm8821 {
+       interrupts-extended = <&tlmm_pinmux 76 IRQ_TYPE_LEVEL_LOW>;
+};
+
+&pm8921 {
+       interrupts-extended = <&tlmm_pinmux 74 IRQ_TYPE_LEVEL_LOW>;
+};
+
+&pm8921_keypad {
+       linux,keymap = <
+               MATRIX_KEY(0, 0, KEY_VOLUMEDOWN)
+               MATRIX_KEY(0, 1, KEY_VOLUMEUP)
+       >;
+
+       keypad,num-rows = <1>;
+       keypad,num-columns = <5>;
+
+       status = "okay";
+};
+
+&riva {
+       pinctrl-names = "default";
+       pinctrl-0 = <&riva_wlan_pin_a>, <&riva_bt_pin_a>, <&riva_fm_pin_a>;
+
+       vddcx-supply = <&pm8921_s3>;
+       vddmx-supply = <&pm8921_l24>;
+       vddpx-supply = <&pm8921_s4>;
+
+       status = "okay";
+
+       iris {
+               vddxo-supply = <&pm8921_l4>;
+               vddrfa-supply = <&pm8921_s2>;
+               vddpa-supply = <&pm8921_l10>;
+               vdddig-supply = <&pm8921_lvs2>;
+       };
+};
+
+&rpm {
+       regulators {
+               compatible = "qcom,rpm-pm8921-regulators";
+
+               vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
+               vdd_l24-supply = <&pm8921_s1>;
+               vdd_l25-supply = <&pm8921_s1>;
+               vdd_l26-supply = <&pm8921_s7>;
+               vdd_l27-supply = <&pm8921_s7>;
+               vdd_l28-supply = <&pm8921_s7>;
+               vin_lvs1_3_6-supply = <&pm8921_s4>;
+               vin_lvs2-supply = <&pm8921_s1>;
+               vin_lvs4_5_7-supply = <&pm8921_s4>;
+
+               pm8921_l1: l1 {
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1100000>;
+                       regulator-always-on;
+                       bias-pull-down;
+               };
+
+               /* mipi_dsi.1-dsi1_pll_vdda */
+               pm8921_l2: l2 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       bias-pull-down;
+               };
+
+               /* msm_otg-HSUSB_3p3 */
+               pm8921_l3: l3 {
+                       regulator-min-microvolt = <3075000>;
+                       regulator-max-microvolt = <3500000>;
+                       bias-pull-down;
+               };
+
+               /* msm_otg-HSUSB_1p8 */
+               pm8921_l4: l4 {
+                       regulator-always-on;
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
+
+               /* msm_sdcc.1-sdc_vdd */
+               pm8921_l5: l5 {
+                       regulator-min-microvolt = <2950000>;
+                       regulator-max-microvolt = <2950000>;
+                       bias-pull-down;
+               };
+
+               /* earjack_debug */
+               pm8921_l6: l6 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+                       bias-pull-down;
+               };
+
+               /* mipi_dsi.1-dsi_vci */
+               pm8921_l8: l8 {
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <3000000>;
+                       bias-pull-down;
+               };
+
+               /* wcnss_wlan.0-iris_vddpa */
+               pm8921_l10: l10 {
+                       regulator-min-microvolt = <2900000>;
+                       regulator-max-microvolt = <2900000>;
+                       bias-pull-down;
+               };
+
+               /* mipi_dsi.1-dsi1_avdd */
+               pm8921_l11: l11 {
+                       regulator-min-microvolt = <2850000>;
+                       regulator-max-microvolt = <2850000>;
+                       bias-pull-down;
+               };
+
+               /* touch_vdd */
+               pm8921_l15: l15 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2950000>;
+                       bias-pull-down;
+               };
+
+               /* slimport_dvdd */
+               pm8921_l18: l18 {
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1100000>;
+                       bias-pull-down;
+               };
+
+               /* touch_io */
+               pm8921_l22: l22 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       bias-pull-down;
+               };
+
+               /*
+                * mipi_dsi.1-dsi_vddio
+                * pil_qdsp6v4.1-pll_vdd
+                * pil_qdsp6v4.2-pll_vdd
+                * msm_ehci_host.0-HSUSB_1p8
+                * msm_ehci_host.1-HSUSB_1p8
+                */
+               pm8921_l23: l23 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       bias-pull-down;
+               };
+
+               /*
+                * tabla2x-slim-CDC_VDDA_A_1P2V
+                * tabla2x-slim-VDDD_CDC_D
+                */
+               pm8921_l24: l24 {
+                       regulator-min-microvolt = <750000>;
+                       regulator-max-microvolt = <1150000>;
+                       bias-pull-down;
+               };
+
+               pm8921_l25: l25 {
+                       regulator-min-microvolt = <1250000>;
+                       regulator-max-microvolt = <1250000>;
+                       regulator-always-on;
+                       bias-pull-down;
+               };
+
+               pm8921_l26: l26 {
+                       regulator-min-microvolt = <375000>;
+                       regulator-max-microvolt = <1050000>;
+                       regulator-always-on;
+                       bias-pull-down;
+               };
+
+               pm8921_l27: l27 {
+                       regulator-min-microvolt = <1100000>;
+                       regulator-max-microvolt = <1100000>;
+               };
+
+               pm8921_l28: l28 {
+                       regulator-min-microvolt = <1050000>;
+                       regulator-max-microvolt = <1050000>;
+                       bias-pull-down;
+               };
+
+               /* wcnss_wlan.0-iris_vddio */
+               pm8921_lvs1: lvs1 {
+                       bias-pull-down;
+               };
+
+               /* wcnss_wlan.0-iris_vdddig */
+               pm8921_lvs2: lvs2 {
+                       bias-pull-down;
+               };
+
+               pm8921_lvs3: lvs3 {
+                       bias-pull-down;
+               };
+
+               pm8921_lvs4: lvs4 {
+                       bias-pull-down;
+               };
+
+               pm8921_lvs5: lvs5 {
+                       bias-pull-down;
+               };
+
+               /* mipi_dsi.1-dsi_iovcc */
+               pm8921_lvs6: lvs6 {
+                       bias-pull-down;
+               };
+
+               /*
+                * pil_riva-pll_vdd
+                * lvds.0-lvds_vdda
+                * mipi_dsi.1-dsi1_vddio
+                * hdmi_msm.0-hdmi_vdda
+                */
+               pm8921_lvs7: lvs7 {
+                       bias-pull-down;
+               };
+
+               pm8921_ncp: ncp {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       qcom,switch-mode-frequency = <1600000>;
+               };
+
+               /* Buck SMPS */
+               pm8921_s1: s1 {
+                       regulator-always-on;
+                       regulator-min-microvolt = <1225000>;
+                       regulator-max-microvolt = <1225000>;
+                       qcom,switch-mode-frequency = <3200000>;
+                       bias-pull-down;
+               };
+
+               pm8921_s2: s2 {
+                       regulator-min-microvolt = <1300000>;
+                       regulator-max-microvolt = <1300000>;
+                       qcom,switch-mode-frequency = <1600000>;
+                       bias-pull-down;
+               };
+
+               /* msm otg HSUSB_VDDCX */
+               pm8921_s3: s3 {
+                       regulator-min-microvolt = <500000>;
+                       regulator-max-microvolt = <1150000>;
+                       qcom,switch-mode-frequency = <4800000>;
+                       bias-pull-down;
+               };
+
+               /*
+                * msm_sdcc.1-sdc-vdd_io
+                * tabla2x-slim-CDC_VDDA_RX
+                * tabla2x-slim-CDC_VDDA_TX
+                * tabla2x-slim-CDC_VDD_CP
+                * tabla2x-slim-VDDIO_CDC
+                */
+               pm8921_s4: s4 {
+                       regulator-always-on;
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       qcom,switch-mode-frequency = <1600000>;
+                       bias-pull-down;
+                       qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
+               };
+
+               /*
+                * supply vdd_l26, vdd_l27, vdd_l28
+                */
+               pm8921_s7: s7 {
+                       regulator-min-microvolt = <1300000>;
+                       regulator-max-microvolt = <1300000>;
+                       qcom,switch-mode-frequency = <3200000>;
+               };
+
+               pm8921_s8: s8 {
+                       regulator-min-microvolt = <2200000>;
+                       regulator-max-microvolt = <2200000>;
+                       qcom,switch-mode-frequency = <1600000>;
+               };
+       };
+};
+
+/* eMMC */
+&sdcc1 {
+       vmmc-supply = <&pm8921_l5>;
+       vqmmc-supply = <&pm8921_s4>;
+
+       status = "okay";
+};
index 5f1a6b4b764492486df1a2610979f56c0a37b64a..17e506ca2438b33675477b65584c2b15bc1ae11d 100644 (file)
                };
        };
 
-       sfpb_mutex: hwmutex {
-               compatible = "qcom,sfpb-mutex";
-               syscon = <&sfpb_wrapper_mutex 0x604 0x4>;
-               #hwlock-cells = <1>;
-       };
-
        smem {
                compatible = "qcom,smem";
                memory-region = <&smem_region>;
                };
        };
 
+       replicator {
+               compatible = "arm,coresight-static-replicator";
+
+               clocks = <&rpmcc RPM_QDSS_CLK>;
+               clock-names = "apb_pclk";
+
+               in-ports {
+                       port {
+                               replicator_in: endpoint {
+                                       remote-endpoint = <&funnel_out>;
+                               };
+                       };
+               };
+
+               out-ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               replicator_out0: endpoint {
+                                       remote-endpoint = <&etb_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               replicator_out1: endpoint {
+                                       remote-endpoint = <&tpiu_in>;
+                               };
+                       };
+               };
+       };
+
        soc: soc {
                #address-cells = <1>;
                #size-cells = <1>;
                        pinctrl-0 = <&ps_hold_default_state>;
                };
 
-               sfpb_wrapper_mutex: syscon@1200000 {
-                       compatible = "syscon";
-                       reg = <0x01200000 0x8000>;
+               sfpb_mutex: hwmutex@1200600 {
+                       compatible = "qcom,sfpb-mutex";
+                       reg = <0x01200600 0x100>;
+                       #hwlock-cells = <1>;
                };
 
                intc: interrupt-controller@2000000 {
                                     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_EDGE_RISING)>;
                        reg = <0x0200a000 0x100>;
                        clock-frequency = <27000000>;
+                       clocks = <&sleep_clk>;
+                       clock-names = "sleep";
                        cpu-offset = <0x80000>;
                };
 
                        };
                };
 
-               sps_sic_non_secure: sps-sic-non-secure@12100000 {
-                       compatible = "syscon";
+               sps_sic_non_secure: interrupt-controller@12100000 {
+                       compatible = "qcom,apq8064-sps-sic", "syscon";
                        reg = <0x12100000 0x10000>;
                };
 
                                 <&dsi0_phy 0>,
                                 <&dsi1_phy 1>,
                                 <&dsi1_phy 0>,
-                                <&hdmi_phy>;
+                                <&hdmi_phy>,
+                                <&mdp>;
                        clock-names = "pxo",
                                      "pll3",
                                      "pll8_vote",
                                      "dsi1pllbyte",
                                      "dsi2pll",
                                      "dsi2pllbyte",
-                                     "hdmipll";
+                                     "hdmipll",
+                                     "lvdspll";
                };
 
                l2cc: clock-controller@2011000 {
                };
 
                mmss_sfpb: syscon@5700000 {
-                       compatible = "syscon";
+                       compatible = "qcom,apq8064-mmss-sfpb", "syscon";
                        reg = <0x5700000 0x70>;
                };
 
                                 <&mmcc MDP_AXI_CLK>,
                                 <&mmcc MDP_LUT_CLK>,
                                 <&mmcc HDMI_TV_CLK>,
-                                <&mmcc MDP_TV_CLK>;
+                                <&mmcc MDP_TV_CLK>,
+                                <&mmcc LVDS_CLK>,
+                                <&rpmcc RPM_PXO_CLK>;
                        clock-names = "core_clk",
                                      "iface_clk",
                                      "bus_clk",
                                      "lut_clk",
                                      "hdmi_clk",
-                                     "tv_clk";
+                                     "tv_clk",
+                                     "lcdc_clk",
+                                     "pxo";
+
+                       #clock-cells = <0>;
 
                        iommus = <&mdp_port0 0
                                  &mdp_port0 2
                        };
                };
 
-               replicator {
-                       compatible = "arm,coresight-static-replicator";
-
-                       clocks = <&rpmcc RPM_QDSS_CLK>;
-                       clock-names = "apb_pclk";
-
-                       out-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@0 {
-                                       reg = <0>;
-                                       replicator_out0: endpoint {
-                                               remote-endpoint = <&etb_in>;
-                                       };
-                               };
-                               port@1 {
-                                       reg = <1>;
-                                       replicator_out1: endpoint {
-                                               remote-endpoint = <&tpiu_in>;
-                                       };
-                               };
-                       };
-
-                       in-ports {
-                               port {
-                                       replicator_in: endpoint {
-                                               remote-endpoint = <&funnel_out>;
-                                       };
-                               };
-                       };
-               };
-
                funnel@1a04000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
                        reg = <0x1a04000 0x1000>;
index 6fce0112361f891eae4f1061a261add9176f024a..34b0cf35fdac8b0bc34ffd27f70f900878a15ff7 100644 (file)
 };
 
 &pm8941_gpios {
-        msm_keys_default: pm8941-gpio-keys-state {
+       msm_keys_default: pm8941-gpio-keys-state {
                pins = "gpio5", "gpio23";
                function = "normal";
                input-enable;
                bias-pull-up;
                qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
                power-source = <PM8941_GPIO_S3>; /* 1.8V */
-        };
+       };
 };
 
 &pm8941_lpg {
index a6d4390efa7c394398b9b6b067c9e64b21334cc0..be76bc39ac2774fc5eb3c0e92844eb609b01dba6 100644 (file)
        status = "okay";
        nvmem-cell-names = "pre-calibration";
        nvmem-cells = <&precal_art_5000>;
-       qcom,ath10k-calibration-variant = "ALFA-Network-AP120C-AC";
+       qcom,calibration-variant = "ALFA-Network-AP120C-AC";
 };
 
 &usb3_hs_phy {
index 6640ea7b6acb2f1d3002b52b25ef327cdc8a5bdd..15baaf0d1529875a804bf3662fc66bb517bc1f11 100644 (file)
 &wifi0 {
        status = "okay";
 
-       qcom,ath10k-calibration-variant = "8devices-Jalapeno";
+       qcom,calibration-variant = "8devices-Jalapeno";
 };
 
 &wifi1 {
        status = "okay";
 
-       qcom,ath10k-calibration-variant = "8devices-Jalapeno";
+       qcom,calibration-variant = "8devices-Jalapeno";
 };
 
 &usb3_ss_phy {
index cc88cf5f0d9bae86460947f7f72614a6ecd68044..5a95a2d03c4291dda9a1b174b5e1403f8eb99d47 100644 (file)
@@ -43,7 +43,7 @@
                                       "gpio64", "gpio65", "gpio66",
                                       "gpio67", "gpio68", "gpio69";
                                function = "qpic";
-                        };
+                       };
                };
 
                serial@78af000 {
index 06b20c196faf3fe35983d7ee2abebd2066f83b02..f77542fb3d4fc2fe5998aaea092d62f482af1672 100644 (file)
@@ -53,7 +53,6 @@
                        reg = <0x0>;
                        clocks = <&gcc GCC_APPS_CLK_SRC>;
                        clock-frequency = <0>;
-                       clock-latency = <256000>;
                        operating-points-v2 = <&cpu0_opp_table>;
                };
 
@@ -67,7 +66,6 @@
                        reg = <0x1>;
                        clocks = <&gcc GCC_APPS_CLK_SRC>;
                        clock-frequency = <0>;
-                       clock-latency = <256000>;
                        operating-points-v2 = <&cpu0_opp_table>;
                };
 
@@ -81,7 +79,6 @@
                        reg = <0x2>;
                        clocks = <&gcc GCC_APPS_CLK_SRC>;
                        clock-frequency = <0>;
-                       clock-latency = <256000>;
                        operating-points-v2 = <&cpu0_opp_table>;
                };
 
@@ -95,7 +92,6 @@
                        reg = <0x3>;
                        clocks = <&gcc GCC_APPS_CLK_SRC>;
                        clock-frequency = <0>;
-                       clock-latency = <256000>;
                        operating-points-v2 = <&cpu0_opp_table>;
                };
 
                opp-716000000 {
                        opp-hz = /bits/ 64 <716000000>;
                        clock-latency-ns = <256000>;
-               };
+               };
        };
 
        memory {
index ca76bf8af75e463bc3a2a5cfc1c2b574f0ac17f5..d4a32af0ef8f1ca6c0926261d7756a4d6bfba23f 100644 (file)
@@ -8,7 +8,11 @@
  * Copyright (c) 2023, Rayyan Ansari <rayyan@ansari.sh>
  */
 
-#include "qcom-msm8226.dtsi"
+/*
+ * The .dts should first include qcom-msm8226.dtsi or msm8926.dtsi depending on
+ * the SoC on the given device.
+ */
+
 #include "pm8226.dtsi"
 #include <dt-bindings/input/input.h>
 
index 2c664b5934ec54b7d53a2e3a8d86a1df864d33a9..f448c908841610bc53cccccb431d5ce50d205fc1 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 
+#include "qcom-msm8226.dtsi"
 #include "qcom-msm8226-microsoft-common.dtsi"
 
 / {
index 731c5c3756784677580f09fad31ba28b0533145d..94bf3b1ad1bd1fb926ac5bb7174394965d52609c 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 
+#include "qcom-msm8226.dtsi"
 #include "qcom-msm8226-microsoft-common.dtsi"
 
 / {
index a28a83cb534055a36a55f907094b34f48b6266be..d8cdb75dfbb8bdafd8bb8fecfe3b9ab3f42b41e4 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 
+#include "qcom-msm8226.dtsi"
 #include "qcom-msm8226-microsoft-common.dtsi"
 
 /* This device has no magnetometer */
index a15a44fc0181bf23e7531ecdc8978505ca48189d..f1544a7e8369c329360e235c48291a5d4c261fdc 100644 (file)
@@ -3,11 +3,17 @@
  * Copyright (c) 2022, Matti Lehtimäki <matti.lehtimaki@gmail.com>
  */
 
+/*
+ * The .dts should first include qcom-msm8226.dtsi or msm8926.dtsi depending on
+ * the SoC on the given device.
+ */
+
 #include <dt-bindings/input/input.h>
-#include "qcom-msm8226.dtsi"
 #include "pm8226.dtsi"
 
 /delete-node/ &adsp_region;
+/delete-node/ &mba_region;
+/delete-node/ &mpss_region;
 /delete-node/ &smem_region;
 
 / {
                        no-map;
                };
 
-               mpss@8400000 {
+               mpss_region: mpss@8400000 {
                        reg = <0x08400000 0x1f00000>;
                        no-map;
                };
 
-               mba@a300000 {
+               mba_region: mba@a300000 {
                        reg = <0x0a300000 0x100000>;
                        no-map;
                };
        status = "okay";
 };
 
+&modem {
+       mx-supply = <&pm8226_l3>;
+       pll-supply = <&pm8226_l8>;
+
+       status = "okay";
+};
+
 &rpm_requests {
        regulators {
                compatible = "qcom,rpm-pm8226-regulators";
index 64c8ac94f352e46dc4a18f902d2c30114ecd91d2..51a7a3fb36d88eeb8dbccefbab672aceb1e46428 100644 (file)
@@ -6,6 +6,7 @@
 /dts-v1/;
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8974.h>
 #include <dt-bindings/clock/qcom,mmcc-msm8974.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
                        no-map;
                };
 
+               mpss_region: mpss@8000000 {
+                       reg = <0x08000000 0x5100000>;
+                       no-map;
+                       status = "disabled";
+               };
+
+               mba_region: mba@d100000 {
+                       reg = <0x0d100000 0x100000>;
+                       no-map;
+                       status = "disabled";
+               };
+
                adsp_region: adsp@dc00000 {
                        reg = <0x0dc00000 0x1900000>;
                        no-map;
                };
        };
 
+       smp2p-modem {
+               compatible = "qcom,smp2p";
+               qcom,smem = <435>, <428>;
+
+               interrupt-parent = <&intc>;
+               interrupts = <GIC_SPI 27 IRQ_TYPE_EDGE_RISING>;
+
+               mboxes = <&apcs 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>;
+               };
+       };
+
+       smsm {
+               compatible = "qcom,smsm";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               mboxes = <0>, <&apcs 13>, <&apcs 9>, <&apcs 19>;
+
+               apps_smsm: apps@0 {
+                       reg = <0>;
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               modem_smsm: modem@1 {
+                       reg = <1>;
+                       interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               adsp_smsm: adsp@2 {
+                       reg = <2>;
+                       interrupts = <GIC_SPI 157 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               wcnss_smsm: wcnss@7 {
+                       reg = <7>;
+                       interrupts = <GIC_SPI 144 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
        soc: soc {
                compatible = "simple-bus";
                #address-cells = <1>;
                        #interrupt-cells = <4>;
                };
 
+               bam_dmux_dma: dma-controller@fc834000 {
+                       compatible = "qcom,bam-v1.4.0";
+                       reg = <0xfc834000 0x7000>;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+
+                       num-channels = <6>;
+                       qcom,num-ees = <1>;
+                       qcom,powered-remotely;
+               };
+
+               modem: remoteproc@fc880000 {
+                       compatible = "qcom,msm8226-mss-pil";
+                       reg = <0xfc880000 0x4040>,
+                             <0xfc820000 0x10000>;
+                       reg-names = "qdsp6",
+                                   "rmb";
+
+                       interrupts-extended = <&intc GIC_SPI 24 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog",
+                                         "fatal",
+                                         "ready",
+                                         "handover",
+                                         "stop-ack";
+
+                       clocks = <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
+                                <&gcc GCC_MSS_CFG_AHB_CLK>,
+                                <&gcc GCC_BOOT_ROM_AHB_CLK>,
+                                <&rpmcc RPM_SMD_XO_CLK_SRC>;
+                       clock-names = "iface",
+                                     "bus",
+                                     "mem",
+                                     "xo";
+
+                       resets = <&gcc GCC_MSS_RESTART>;
+                       reset-names = "mss_restart";
+
+                       power-domains = <&rpmpd MSM8226_VDDCX>;
+                       power-domain-names = "cx";
+
+                       qcom,ext-bhs-reg = <&tcsr_regs_1 0x194>;
+                       qcom,halt-regs = <&tcsr_regs_1 0x180 0x200 0x280>;
+
+                       qcom,smem-states = <&modem_smp2p_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       memory-region = <&mba_region>, <&mpss_region>;
+
+                       status = "disabled";
+
+                       bam_dmux: bam-dmux {
+                               compatible = "qcom,bam-dmux";
+
+                               interrupt-parent = <&modem_smsm>;
+                               interrupts = <1 IRQ_TYPE_EDGE_BOTH>, <11 IRQ_TYPE_EDGE_BOTH>;
+                               interrupt-names = "pc", "pc-ack";
+
+                               qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 11>;
+                               qcom,smem-state-names = "pc", "pc-ack";
+
+                               dmas = <&bam_dmux_dma 4>, <&bam_dmux_dma 5>;
+                               dma-names = "tx", "rx";
+                       };
+
+                       smd-edge {
+                               interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
+
+                               mboxes = <&apcs 12>;
+                               qcom,smd-edge = <0>;
+
+                               label = "modem";
+                       };
+               };
+
                tcsr_mutex: hwlock@fd484000 {
                        compatible = "qcom,msm8226-tcsr-mutex", "qcom,tcsr-mutex";
                        reg = <0xfd484000 0x1000>;
                        #hwlock-cells = <1>;
                };
 
+               tcsr_regs_1: syscon@fd485000 {
+                       compatible = "qcom,tcsr-msm8226", "syscon";
+                       reg = <0xfd485000 0x1000>;
+               };
+
                tlmm: pinctrl@fd510000 {
                        compatible = "qcom,msm8226-pinctrl";
                        reg = <0xfd510000 0x4000>;
                                 <&gcc GPLL0_VOTE>,
                                 <&gcc GPLL1_VOTE>,
                                 <&rpmcc RPM_SMD_GFX3D_CLK_SRC>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>;
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>;
                        clock-names = "xo",
                                      "mmss_gpll0_vote",
                                      "gpll0_vote",
 
                                assigned-clocks = <&mmcc BYTE0_CLK_SRC>,
                                                  <&mmcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                clocks = <&mmcc MDSS_MDP_CLK>,
                                         <&mmcc MDSS_AHB_CLK>,
index 3037344eb24055071cc77c9cfce0f1d0f95de921..cb571aa13c11598182dc020f064fe8268bcc061f 100644 (file)
@@ -5,10 +5,12 @@
 
 /dts-v1/;
 
-#include "qcom-msm8226.dtsi"
+#include "msm8926.dtsi"
 #include "pm8226.dtsi"
 
 /delete-node/ &adsp_region;
+/delete-node/ &mba_region;
+/delete-node/ &mpss_region;
 /delete-node/ &smem_region;
 
 / {
        /* TPS61310 Flash/Torch @ 33 */
 };
 
+&modem {
+       mx-supply = <&pm8226_l3>;
+       pll-supply = <&pm8226_l8>;
+       mss-supply = <&pm8226_s5>;
+
+       firmware-name = "qcom/msm8926/memul/mba.b00", "qcom/msm8926/memul/modem.mdt";
+
+       status = "okay";
+};
+
 &pm8226_vib {
        status = "okay";
 };
index 9b48661d69c53829c30ece8544ffff97f3032a59..eea4fd8cd9725f1ef629aae446ff7aa6c49fb2fa 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 
+#include "msm8926.dtsi"
 #include "qcom-msm8226-microsoft-common.dtsi"
 
 /* This device has touchscreen on i2c3 instead */
index 55077a5f2e34f84857ee35d22157362759151c5a..f23bbb94cc5e4343f667e53d66bc289228a85134 100644 (file)
@@ -8,6 +8,7 @@
 
 /dts-v1/;
 
+#include "msm8926.dtsi"
 #include "qcom-msm8226-microsoft-common.dtsi"
 
 /* This device has touchscreen on i2c1 instead */
index 376a33125941028a3977e76373ee96959b08ee3e..db3273c755c2b5480b9c00336314b63900a74cbd 100644 (file)
@@ -2,7 +2,7 @@
 
 /dts-v1/;
 
-#include "qcom-msm8226.dtsi"
+#include "msm8926.dtsi"
 #include "pm8226.dtsi"
 
 /delete-node/ &smem_region;
index d0e1bc39f8ef700aa648148ac070f59062d049d7..73e19176eb97af569d99580c6b28fb2e0ec7f1b3 100644 (file)
@@ -6,6 +6,7 @@
 
 /dts-v1/;
 
+#include "msm8926.dtsi"
 #include "qcom-msm8226-samsung-matisse-common.dtsi"
 
 / {
        };
 };
 
+&modem {
+       mss-supply = <&pm8226_s5>;
+};
+
 &tlmm {
        tsp_en1_default_state: tsp-en1-default-state {
                pins = "gpio32";
index 865fe7cc39511d7cb9ec5c4b12100404f77e2989..4babd0bbe5d638b228e05cdfe6b068b4ea16335f 100644 (file)
                reg = <0x80000000 0>;
        };
 
+       thermal-zones {
+               cpu0-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&tsens 0>;
+
+                       trips {
+                               cpu_alert0: trip0 {
+                                       temperature = <60000>;
+                                       hysteresis = <10000>;
+                                       type = "passive";
+                               };
+
+                               cpu_crit0: trip1 {
+                                       temperature = <95000>;
+                                       hysteresis = <10000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu1-thermal {
+                       polling-delay-passive = <250>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&tsens 1>;
+
+                       trips {
+                               cpu_alert1: trip0 {
+                                       temperature = <60000>;
+                                       hysteresis = <10000>;
+                                       type = "passive";
+                               };
+
+                               cpu_crit1: trip1 {
+                                       temperature = <95000>;
+                                       hysteresis = <10000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
+
        cpu-pmu {
                compatible = "qcom,krait-pmu";
                interrupts = <GIC_PPI 10 0x304>;
                                     <GIC_PPI 3 0x301>;
                        reg = <0x0200a000 0x100>;
                        clock-frequency = <27000000>;
+                       clocks = <&sleep_clk>;
+                       clock-names = "sleep";
                        cpu-offset = <0x80000>;
                };
 
+               qfprom: efuse@700000 {
+                       compatible = "qcom,msm8960-qfprom", "qcom,qfprom";
+                       reg = <0x00700000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       tsens_calib: calib@404 {
+                               reg = <0x404 0x10>;
+                       };
+
+                       tsens_backup: backup-calib@414 {
+                               reg = <0x414 0x10>;
+                       };
+               };
+
                msmgpio: pinctrl@800000 {
                        compatible = "qcom,msm8960-pinctrl";
                        gpio-controller;
                };
 
                gcc: clock-controller@900000 {
-                       compatible = "qcom,gcc-msm8960";
+                       compatible = "qcom,gcc-msm8960", "syscon";
                        #clock-cells = <1>;
                        #reset-cells = <1>;
                        reg = <0x900000 0x4000>;
                                 <&pxo_board>,
                                 <&lcc PLL4>;
                        clock-names = "cxo", "pxo", "pll4";
+
+                       tsens: thermal-sensor {
+                               compatible = "qcom,msm8960-tsens";
+
+                               nvmem-cells = <&tsens_calib>, <&tsens_backup>;
+                               nvmem-cell-names = "calib", "calib_backup";
+                               interrupts = <GIC_SPI 178 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "uplow";
+
+                               #qcom,sensors = <5>;
+                               #thermal-sensor-cells = <1>;
+                       };
                };
 
                lcc: clock-controller@28000000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        arm,primecell-periphid = <0x00051180>;
                        status = "disabled";
-                       reg = <0x12180000 0x8000>;
+                       reg = <0x12180000 0x2000>;
                        interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&gcc SDC3_CLK>, <&gcc SDC3_H_CLK>;
                        clock-names = "mclk", "apb_pclk";
                        max-frequency = <192000000>;
                        no-1-8-v;
                        vmmc-supply = <&vsdcc_fixed>;
+                       dmas = <&sdcc3bam 2>, <&sdcc3bam 1>;
+                       dma-names = "tx", "rx";
+               };
+
+               sdcc3bam: dma-controller@12182000 {
+                       compatible = "qcom,bam-v1.3.0";
+                       reg = <0x12182000 0x4000>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc SDC3_H_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
                };
 
                sdcc1: mmc@12400000 {
                        status = "disabled";
                        compatible = "arm,pl18x", "arm,primecell";
                        arm,primecell-periphid = <0x00051180>;
-                       reg = <0x12400000 0x8000>;
+                       reg = <0x12400000 0x2000>;
                        interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&gcc SDC1_CLK>, <&gcc SDC1_H_CLK>;
                        clock-names = "mclk", "apb_pclk";
                        cap-sd-highspeed;
                        cap-mmc-highspeed;
                        vmmc-supply = <&vsdcc_fixed>;
+                       dmas = <&sdcc1bam 2>, <&sdcc1bam 1>;
+                       dma-names = "tx", "rx";
+               };
+
+               sdcc1bam: dma-controller@12402000 {
+                       compatible = "qcom,bam-v1.3.0";
+                       reg = <0x12402000 0x4000>;
+                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc SDC1_H_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
                };
 
                tcsr: syscon@1a400000 {
index e3f9c56a778cf8c64735ede1e85286bde12c1c87..7e119370f3375573e284587d48aef6dca3ed707f 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <dt-bindings/interconnect/qcom,msm8974.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8974.h>
 #include <dt-bindings/clock/qcom,mmcc-msm8974.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
                                 <&gcc GPLL0_VOTE>,
                                 <&gcc GPLL1_VOTE>,
                                 <&rpmcc RPM_SMD_GFX3D_CLK_SRC>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi1_phy 1>,
-                                <&mdss_dsi1_phy 0>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
                                 <0>,
                                 <0>,
                                 <0>;
                                interrupt-parent = <&mdss>;
                                interrupts = <4>;
 
-                               assigned-clocks = <&mmcc BYTE0_CLK_SRC>, <&mmcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clocks = <&mmcc BYTE0_CLK_SRC>,
+                                                 <&mmcc PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                clocks = <&mmcc MDSS_MDP_CLK>,
                                         <&mmcc MDSS_AHB_CLK>,
                                interrupt-parent = <&mdss>;
                                interrupts = <4>;
 
-                               assigned-clocks = <&mmcc BYTE1_CLK_SRC>, <&mmcc PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
+                               assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
+                                                 <&mmcc PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                clocks = <&mmcc MDSS_MDP_CLK>,
                                         <&mmcc MDSS_AHB_CLK>,
index 39530eb580ea10fff46c571359d1df6aec658528..20fdae9825e0c709596b88c1cf710fcd8d339341 100644 (file)
@@ -57,7 +57,7 @@
                        enable-method = "psci";
                        clocks = <&apcs>;
                        power-domains = <&rpmhpd SDX55_CX>;
-                       power-domain-names = "rpmhpd";
+                       power-domain-names = "perf";
                        operating-points-v2 = <&cpu_opp_table>;
                };
        };
index 6b23ee676c9ecb0939a3891cb86c190f9235fba4..c8e312dcd26b0b378e42cd7f8773398a92558971 100644 (file)
@@ -58,7 +58,7 @@
                        enable-method = "psci";
                        clocks = <&apcs>;
                        power-domains = <&rpmhpd SDX65_CX_AO>;
-                       power-domain-names = "rpmhpd";
+                       power-domain-names = "perf";
                        operating-points-v2 = <&cpu_opp_table>;
                };
        };
index 31cdca3e623cde58da4a64292ec4fdb55e484580..2de047393652c7ccc7112d068aec74dc2065dda2 100644 (file)
@@ -8,8 +8,10 @@
 
 /dts-v1/;
 
-#include <dt-bindings/pinctrl/rzn1-pinctrl.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
 #include <dt-bindings/net/pcs-rzn1-miic.h>
+#include <dt-bindings/pinctrl/rzn1-pinctrl.h>
 
 #include "r9a06g032.dtsi"
 
        aliases {
                serial0 = &uart0;
        };
+
+       keyboard {
+               compatible = "gpio-keys-polled";
+               poll-interval = <100>;
+
+               switch-1 {
+                       linux,code = <KEY_1>;
+                       label = "SW1-1";
+                       debounce-interval = <20>;
+                       gpios = <&pca9698 8 GPIO_ACTIVE_LOW>;
+               };
+
+               switch-2 {
+                       linux,code = <KEY_2>;
+                       label = "SW1-2";
+                       debounce-interval = <20>;
+                       gpios = <&pca9698 9 GPIO_ACTIVE_LOW>;
+               };
+
+               switch-3 {
+                       linux,code = <KEY_3>;
+                       label = "SW1-3";
+                       debounce-interval = <20>;
+                       gpios = <&pca9698 10 GPIO_ACTIVE_LOW>;
+               };
+
+               switch-4 {
+                       linux,code = <KEY_4>;
+                       label = "SW1-4";
+                       debounce-interval = <20>;
+                       gpios = <&pca9698 11 GPIO_ACTIVE_LOW>;
+               };
+
+               switch-5 {
+                       linux,code = <KEY_5>;
+                       label = "SW1-5";
+                       debounce-interval = <20>;
+                       gpios = <&pca9698 12 GPIO_ACTIVE_LOW>;
+               };
+
+               switch-6 {
+                       linux,code = <KEY_6>;
+                       label = "SW1-6";
+                       debounce-interval = <20>;
+                       gpios = <&pca9698 13 GPIO_ACTIVE_LOW>;
+               };
+
+               switch-7 {
+                       linux,code = <KEY_7>;
+                       label = "SW1-7";
+                       debounce-interval = <20>;
+                       gpios = <&pca9698 14 GPIO_ACTIVE_LOW>;
+               };
+
+               switch-8 {
+                       linux,code = <KEY_8>;
+                       label = "SW1-8";
+                       debounce-interval = <20>;
+                       gpios = <&pca9698 15 GPIO_ACTIVE_LOW>;
+               };
+
+       };
 };
 
 &can0 {
        };
 };
 
+&i2c2 {
+       pinctrl-0 = <&pins_i2c2>;
+       pinctrl-names = "default";
+       status = "okay";
+       clock-frequency = <400000>;
+
+       pca9698: gpio@20 {
+               compatible = "nxp,pca9698";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               /* configure the analog switch to let i2c2 access the eeprom */
+               max4662-in1-hog {
+                       gpio-hog;
+                       gpios = <16 0>;
+                       output-high;
+               };
+               max4662-in2-hog {
+                       gpio-hog;
+                       gpios = <17 0>;
+                       output-low;
+               };
+               max4662-in3-hog {
+                       gpio-hog;
+                       gpios = <18 0>;
+                       output-low;
+               };
+       };
+
+       /* Some revisions may have a 24cs64 at address 0x58 */
+       eeprom@50 {
+               compatible = "atmel,24c64";
+               pagesize = <32>;
+               reg = <0x50>;
+       };
+};
+
 &mii_conv4 {
        renesas,miic-input = <MIIC_SWITCH_PORTB>;
        status = "okay";
 };
 
 &pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pins_cpld>;
+
        pins_can0: pins_can0 {
                pinmux = <RZN1_PINMUX(162, RZN1_FUNC_CAN)>,     /* CAN0_TXD */
                         <RZN1_PINMUX(163, RZN1_FUNC_CAN)>;     /* CAN0_RXD */
                drive-strength = <6>;
        };
 
+       pins_cpld: pins-cpld {
+               pinmux = <RZN1_PINMUX(119, RZN1_FUNC_USB)>,
+                        <RZN1_PINMUX(120, RZN1_FUNC_USB)>,
+                        <RZN1_PINMUX(121, RZN1_FUNC_USB)>,
+                        <RZN1_PINMUX(122, RZN1_FUNC_USB)>;
+       };
+
        pins_eth3: pins_eth3 {
                pinmux = <RZN1_PINMUX(36, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
                         <RZN1_PINMUX(37, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
                bias-disable;
        };
 
+       pins_i2c2: pins_i2c2 {
+               pinmux = <RZN1_PINMUX(115, RZN1_FUNC_I2C)>,
+                        <RZN1_PINMUX(116, RZN1_FUNC_I2C)>;
+               drive-strength = <12>;
+       };
+
        pins_mdio1: pins_mdio1 {
                pinmux = <RZN1_PINMUX(152, RZN1_FUNC_MDIO1_SWITCH)>,
                         <RZN1_PINMUX(153, RZN1_FUNC_MDIO1_SWITCH)>;
        status = "okay";
 };
 
+&udc {
+       status = "okay";
+};
+
 &wdt0 {
        timeout-sec = <60>;
        status = "okay";
diff --git a/src/arm/renesas/r9a06g032-rzn1d400-eb.dts b/src/arm/renesas/r9a06g032-rzn1d400-eb.dts
new file mode 100644 (file)
index 0000000..97a339b
--- /dev/null
@@ -0,0 +1,244 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Device Tree Source for the RZN1D-EB Board
+ *
+ * Copyright (C) 2023 Schneider-Electric
+ *
+ */
+
+#include <dt-bindings/leds/common.h>
+#include "r9a06g032-rzn1d400-db.dts"
+
+/ {
+       model = "RZN1D-EB Board";
+       compatible = "renesas,rzn1d400-eb", "renesas,rzn1d400-db",
+                    "renesas,r9a06g032";
+};
+
+&gmac1 {
+       pinctrl-0 = <&pins_eth0>, <&pins_mdio0>;
+       pinctrl-names = "default";
+
+       status = "okay";
+       phy-mode = "rgmii-id";
+       phy-handle = <&phy_mii0>;
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "snps,dwmac-mdio";
+
+               phy_mii0: ethernet-phy@8 {
+                       reg = <8>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_ORANGE>;
+                                       function = LED_FUNCTION_ACTIVITY;
+                                       default-state = "keep";
+                               };
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       /* Sensors are different across revisions. All are LM75B compatible */
+       sensor@49 {
+               compatible = "national,lm75b";
+               reg = <0x49>;
+       };
+};
+
+&mii_conv1 {
+       renesas,miic-input = <MIIC_GMAC1_PORT>;
+       status = "okay";
+};
+
+&mii_conv2 {
+       renesas,miic-input = <MIIC_SWITCH_PORTD>;
+       status = "okay";
+};
+
+&mii_conv3 {
+       renesas,miic-input = <MIIC_SWITCH_PORTC>;
+       status = "okay";
+};
+
+&pci_usb {
+       status = "okay";
+};
+
+&pinctrl {
+       pins_eth0: pins-eth0 {
+               pinmux = <RZN1_PINMUX(0, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(1, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(2, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(3, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(4, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(5, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(6, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(7, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(8, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(9, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(10, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(11, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>;
+               drive-strength = <6>;
+               bias-disable;
+       };
+
+       pins_eth1: pins-eth1 {
+               pinmux = <RZN1_PINMUX(12, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(13, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(14, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(15, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(16, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(17, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(18, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(19, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(20, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(21, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(22, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(23, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>;
+               drive-strength = <6>;
+               bias-disable;
+       };
+
+       pins_eth2: pins-eth2 {
+               pinmux = <RZN1_PINMUX(24, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(25, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(26, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(27, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(28, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(29, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(30, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(31, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(32, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(33, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(34, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>,
+                        <RZN1_PINMUX(35, RZN1_FUNC_CLK_ETH_MII_RGMII_RMII)>;
+               drive-strength = <6>;
+               bias-disable;
+       };
+
+       pins_mdio0: pins-mdio0 {
+               pinmux = <RZN1_PINMUX(150, RZN1_FUNC_MDIO0_GMAC0)>,
+                        <RZN1_PINMUX(151, RZN1_FUNC_MDIO0_GMAC0)>;
+       };
+
+       pins_sdio1: pins-sdio1 {
+               pinmux = <RZN1_PINMUX(95, RZN1_FUNC_SDIO)>,
+                        <RZN1_PINMUX(97, RZN1_FUNC_SDIO)>,
+                        <RZN1_PINMUX(98, RZN1_FUNC_SDIO)>,
+                        <RZN1_PINMUX(99, RZN1_FUNC_SDIO)>,
+                        <RZN1_PINMUX(100, RZN1_FUNC_SDIO)>,
+                        <RZN1_PINMUX(101, RZN1_FUNC_SDIO_E)>,
+                        <RZN1_PINMUX(102, RZN1_FUNC_SDIO_E)>;
+       };
+
+       pins_sdio1_clk: pins-sdio1-clk {
+               pinmux = <RZN1_PINMUX(96, RZN1_FUNC_SDIO)>;
+               drive-strength = <12>;
+       };
+
+       pins_uart2: pins-uart2 {
+               pinmux = <RZN1_PINMUX(105, RZN1_FUNC_UART2)>,
+                        <RZN1_PINMUX(106, RZN1_FUNC_UART2)>,
+                        <RZN1_PINMUX(107, RZN1_FUNC_UART2)>,
+                        <RZN1_PINMUX(108, RZN1_FUNC_UART2)>;
+               bias-disable;
+       };
+};
+
+&sdio1 {
+       pinctrl-0 = <&pins_sdio1>, <&pins_sdio1_clk>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&switch {
+       pinctrl-0 = <&pins_eth1>, <&pins_eth2>, <&pins_eth3>, <&pins_eth4>,
+                   <&pins_mdio1>;
+
+       mdio {
+               /* CN15 and CN16 switches must be configured in MDIO2 mode */
+               switch0phy1: ethernet-phy@1 {
+                       reg = <1>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_ORANGE>;
+                                       function = LED_FUNCTION_ACTIVITY;
+                                       default-state = "keep";
+                               };
+                       };
+               };
+
+               switch0phy10: ethernet-phy@10 {
+                       reg = <10>;
+
+                       leds {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               led@0 {
+                                       reg = <0>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                                       function = LED_FUNCTION_LAN;
+                                       default-state = "keep";
+                               };
+
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_ORANGE>;
+                                       function = LED_FUNCTION_ACTIVITY;
+                                       default-state = "keep";
+                               };
+                       };
+               };
+       };
+};
+
+&switch_port2 {
+       label = "lan2";
+       phy-mode = "rgmii-id";
+       phy-handle = <&switch0phy10>;
+       status = "okay";
+};
+
+&switch_port3 {
+       label = "lan3";
+       phy-mode = "rgmii-id";
+       phy-handle = <&switch0phy1>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-0 = <&pins_uart2>;
+       pinctrl-names = "default";
+       status = "okay";
+       uart-has-rtscts;
+};
index 87e03446fb4de705e9d3e7f4a141e4c2392c95d8..80ad1fdc77a068ef343aeee8d7abeab565ef8e30 100644 (file)
                        status = "disabled";
                };
 
+               i2c1: i2c@40063000 {
+                       compatible = "renesas,r9a06g032-i2c", "renesas,rzn1-i2c", "snps,designware-i2c";
+                       reg = <0x40063000 0x100>;
+                       interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&sysctrl R9A06G032_HCLK_I2C0>, <&sysctrl R9A06G032_CLK_I2C0>;
+                       clock-names = "ref", "pclk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@40064000 {
+                       compatible = "renesas,r9a06g032-i2c", "renesas,rzn1-i2c", "snps,designware-i2c";
+                       reg = <0x40064000 0x100>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&sysctrl R9A06G032_HCLK_I2C1>, <&sysctrl R9A06G032_CLK_I2C1>;
+                       clock-names = "ref", "pclk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                pinctrl: pinctrl@40067000 {
                        compatible = "renesas,r9a06g032-pinctrl", "renesas,rzn1-pinctrl";
                        reg = <0x40067000 0x1000>, <0x51000000 0x480>;
                        status = "okay";
                };
 
+               sdio1: mmc@40100000 {
+                       compatible = "renesas,r9a06g032-sdhci", "renesas,rzn1-sdhci", "arasan,sdhci-8.9a";
+                       reg = <0x40100000 0x1000>;
+                       interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int", "wakeup";
+                       clocks = <&sysctrl R9A06G032_CLK_SDIO0>, <&sysctrl R9A06G032_HCLK_SDIO0>;
+                       clock-names = "clk_xin", "clk_ahb";
+                       no-1-8-v;
+                       status = "disabled";
+               };
+
+               sdio2: mmc@40101000 {
+                       compatible = "renesas,r9a06g032-sdhci", "renesas,rzn1-sdhci", "arasan,sdhci-8.9a";
+                       reg = <0x40101000 0x1000>;
+                       interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "int", "wakeup";
+                       clocks = <&sysctrl R9A06G032_CLK_SDIO1>, <&sysctrl R9A06G032_HCLK_SDIO1>;
+                       clock-names = "clk_xin", "clk_ahb";
+                       no-1-8-v;
+                       status = "disabled";
+               };
+
                nand_controller: nand-controller@40102000 {
                        compatible = "renesas,r9a06g032-nandc", "renesas,rzn1-nandc";
                        reg = <0x40102000 0x2000>;
index 4f928c7898e90a5d4264c7bb01698a63e2c1144c..ae2f84a4e922a746973823dd0b8bb56b6be77b0c 100644 (file)
@@ -8,6 +8,12 @@
        model = "Rockchip RK3036 KylinBoard";
        compatible = "rockchip,rk3036-kylin", "rockchip,rk3036";
 
+       aliases {
+               mmc0 = &emmc;
+               mmc1 = &sdmmc;
+               mmc2 = &sdio;
+       };
+
        chosen {
                stdout-path = "serial2:115200n8";
        };
        status = "okay";
 };
 
+&usb2phy {
+       status = "okay";
+};
+
+&usb2phy_host {
+       status = "okay";
+};
+
+&usb2phy_otg {
+       status = "okay";
+};
+
 &vop {
        status = "okay";
 };
index 63b9912be06a7c53ef83783a1c84ad745515c6c4..fca21ebb224b5feeb25452514130fd45c3bcff6d 100644 (file)
                g-np-tx-fifo-size = <16>;
                g-rx-fifo-size = <275>;
                g-tx-fifo-size = <256 128 128 64 64 32>;
+               phys = <&usb2phy_otg>;
+               phy-names = "usb2-phy";
                status = "disabled";
        };
 
                clocks = <&cru HCLK_OTG1>;
                clock-names = "otg";
                dr_mode = "host";
+               phys = <&usb2phy_host>;
+               phy-names = "usb2-phy";
                status = "disabled";
        };
 
        grf: syscon@20008000 {
                compatible = "rockchip,rk3036-grf", "syscon", "simple-mfd";
                reg = <0x20008000 0x1000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               usb2phy: usb2phy@17c {
+                       compatible = "rockchip,rk3036-usb2phy";
+                       reg = <0x017c 0x20>;
+                       clocks = <&cru SCLK_OTGPHY0>;
+                       clock-names = "phyclk";
+                       clock-output-names = "usb480m_phy";
+                       assigned-clocks = <&cru SCLK_USB480M>;
+                       assigned-clock-parents = <&usb2phy>;
+                       #clock-cells = <0>;
+                       status = "disabled";
+
+                       usb2phy_host: host-port {
+                               interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "linestate";
+                               #phy-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       usb2phy_otg: otg-port {
+                               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupt-names = "otg-bvalid", "otg-id",
+                                                 "linestate";
+                               #phy-cells = <0>;
+                               status = "disabled";
+                       };
+               };
 
                power: power-controller {
                        compatible = "rockchip,rk3036-power-controller";
                compatible = "rockchip,rk3036-inno-hdmi";
                reg = <0x20034000 0x4000>;
                interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
-               clocks = <&cru  PCLK_HDMI>;
-               clock-names = "pclk";
+               clocks = <&cru PCLK_HDMI>, <&cru SCLK_LCDC>;
+               clock-names = "pclk", "ref";
+               rockchip,grf = <&grf>;
                pinctrl-names = "default";
                pinctrl-0 = <&hdmi_ctl>;
                #sound-dai-cells = <0>;
index ada7dbfc06a56b431caaaaa59d2a22db637b5ce2..de42d1855121cba774243dafafe8ee4291d6cba4 100644 (file)
                reg = <0x60000000 0x40000000>;
        };
 
+       hdmi_con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
        vdd_log: regulator-vdd-log {
                compatible = "pwm-regulator";
                pwms = <&pwm3 0 1000>;
        cpu-supply = <&vdd_arm>;
 };
 
+&gpu {
+       status = "okay";
+};
+
+&hdmi {
+       status = "okay";
+};
+
+&hdmi_in_vop1 {
+       status = "disabled";
+};
+
+&hdmi_out {
+       hdmi_out_con: endpoint {
+               remote-endpoint = <&hdmi_con_in>;
+       };
+};
+
+&hdmi_sound {
+       status = "okay";
+};
+
 &i2c1 {
        status = "okay";
        clock-frequency = <400000>;
        status = "okay";
 };
 
+&vop0 {
+       status = "okay";
+};
+
 &wdt {
        status = "okay";
 };
index d4572146d135d9ae0fd1222c745cf64496ed5c86..c49099954c2818d556fad41b31e880c9ff28d913 100644 (file)
@@ -48,7 +48,6 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf00>;
-                       clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                        resets = <&cru SRST_CORE0>;
                        operating-points-v2 = <&cpu_opp_table>;
                opp-216000000 {
                        opp-hz = /bits/ 64 <216000000>;
                        opp-microvolt = <950000 950000 1325000>;
+                       clock-latency-ns = <40000>;
                };
                opp-408000000 {
                        opp-hz = /bits/ 64 <408000000>;
                        opp-microvolt = <950000 950000 1325000>;
+                       clock-latency-ns = <40000>;
                };
                opp-600000000 {
                        opp-hz = /bits/ 64 <600000000>;
                        opp-microvolt = <950000 950000 1325000>;
+                       clock-latency-ns = <40000>;
                };
                opp-696000000 {
                        opp-hz = /bits/ 64 <696000000>;
                        opp-microvolt = <975000 975000 1325000>;
+                       clock-latency-ns = <40000>;
                };
                opp-816000000 {
                        opp-hz = /bits/ 64 <816000000>;
                        opp-microvolt = <1075000 1075000 1325000>;
                        opp-suspend;
+                       clock-latency-ns = <40000>;
                };
                opp-1008000000 {
                        opp-hz = /bits/ 64 <1008000000>;
                        opp-microvolt = <1200000 1200000 1325000>;
+                       clock-latency-ns = <40000>;
                };
                opp-1200000000 {
                        opp-hz = /bits/ 64 <1200000000>;
                        opp-microvolt = <1325000 1325000 1325000>;
+                       clock-latency-ns = <40000>;
                };
        };
 
index 44b54af0bbf9fa328b1c1917474945cc09b1102d..850bd6e678954331e138f3d34d282e1803cbe38f 100644 (file)
@@ -23,7 +23,6 @@
                        compatible = "arm,cortex-a9";
                        next-level-cache = <&L2>;
                        reg = <0x0>;
-                       clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                        operating-points-v2 = <&cpu0_opp_table>;
                        resets = <&cru SRST_CORE0>;
index 96421355c2746a0ed9f589e5936e15934fd4bf13..cd11a018105b170e7ca2897bec408d44334a754a 100644 (file)
@@ -36,7 +36,6 @@
                        resets = <&cru SRST_CORE0>;
                        operating-points-v2 = <&cpu0_opp_table>;
                        #cooling-cells = <2>; /* min followed by max */
-                       clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                        enable-method = "psci";
                };
index 3f1d640afafaed7e79e15d38910c86129eff7eae..42d705b544ecb6cb4bb97f11d43c34d6a4677bc6 100644 (file)
@@ -70,7 +70,6 @@
                        resets = <&cru SRST_CORE0>;
                        operating-points-v2 = <&cpu_opp_table>;
                        #cooling-cells = <2>; /* min followed by max */
-                       clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                        dynamic-power-coefficient = <370>;
                };
@@ -81,7 +80,6 @@
                        resets = <&cru SRST_CORE1>;
                        operating-points-v2 = <&cpu_opp_table>;
                        #cooling-cells = <2>; /* min followed by max */
-                       clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                        dynamic-power-coefficient = <370>;
                };
@@ -92,7 +90,6 @@
                        resets = <&cru SRST_CORE2>;
                        operating-points-v2 = <&cpu_opp_table>;
                        #cooling-cells = <2>; /* min followed by max */
-                       clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                        dynamic-power-coefficient = <370>;
                };
                        resets = <&cru SRST_CORE3>;
                        operating-points-v2 = <&cpu_opp_table>;
                        #cooling-cells = <2>; /* min followed by max */
-                       clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                        dynamic-power-coefficient = <370>;
                };
                opp-126000000 {
                        opp-hz = /bits/ 64 <126000000>;
                        opp-microvolt = <900000>;
+                       clock-latency-ns = <40000>;
                };
                opp-216000000 {
                        opp-hz = /bits/ 64 <216000000>;
index f3291f3bbc6fd2b480e975632847f9310c082225..42a4d72597a5e0c0c2b424a1a39e2de28c8f99fd 100644 (file)
@@ -32,7 +32,6 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0xf00>;
-                       clock-latency = <40000>;
                        clocks = <&cru ARMCLK>;
                        #cooling-cells = <2>; /* min followed by max */
                        dynamic-power-coefficient = <75>;
index 9a87dc0d5f66b67da3fec0bba8820845a2f7b1ce..1aedcd3a2167da99d734a79dc1803d58b44d6fe2 100644 (file)
 };
 
 &pmu_io_domains {
-       pmuio0-supply = <&vcc1v8_pmu>;
+       pmuio0-supply = <&vcc3v3_sys>;
        pmuio1-supply = <&vcc3v3_sys>;
        vccio1-supply = <&vcc_1v8>;
        vccio2-supply = <&vccio_sd>;
        vccio3-supply = <&vcc3v3_sd>;
-       vccio4-supply = <&vcc_dovdd>;
-       vccio5-supply = <&vcc_1v8>;
-       vccio6-supply = <&vcc_1v8>;
-       vccio7-supply = <&vcc_dovdd>;
+       vccio4-supply = <&vcc_3v3>;
+       vccio5-supply = <&vcc_3v3>;
+       vccio6-supply = <&vcc_3v3>;
+       vccio7-supply = <&vcc_1v8>;
        status = "okay";
 };
 
 
 &sdio {
        bus-width = <4>;
-       cap-sd-highspeed;
        cap-sdio-irq;
        keep-power-in-suspend;
-       max-frequency = <50000000>;
+       max-frequency = <25000000>;
        mmc-pwrseq = <&sdio_pwrseq>;
        non-removable;
        pinctrl-names = "default";
        pinctrl-0 = <&sdmmc1_clk &sdmmc1_cmd &sdmmc1_bus4>;
        rockchip,default-sample-phase = <90>;
-       sd-uhs-sdr50;
        vmmc-supply = <&vcc3v3_sd>;
        vqmmc-supply = <&vcc_1v8>;
        status = "okay";
index f628d36604938984603947ab434450416203c8ec..153514e80c9a14ab1fdc69fb11fc09b8a6c333b4 100644 (file)
        assigned-clock-rates = <0>, <50000000>;
        assigned-clock-parents = <&clocks MOUT_MPLL>;
 
-       wlan@1 {
+       wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                interrupt-parent = <&gph2>;
index ad216571ba5797b50434131f63a4b512e2e2eab6..089bd7db55c739d6332f02d8a1863d11aa647b5b 100644 (file)
                        };
                };
 
-               ehci@e4800000 {
+               usb@e4800000 {
                        status = "okay";
                };
 
-               ehci@e5800000 {
+               usb@e5800000 {
                        status = "okay";
                };
 
-               ohci@e4000000 {
+               usb@e4000000 {
                        status = "okay";
                };
 
-               ohci@e5000000 {
+               usb@e5000000 {
                        status = "okay";
                };
 
index 9b515b21a633bc37f1800a2203be20aa5427412d..d24146c3c9e8a04d9e66037d7396e4ffe7c45d18 100644 (file)
                        };
                };
 
-               ehci@e4800000 {
+               usb@e4800000 {
                        status = "okay";
                };
 
                        };
                };
 
-               ehci@e5800000 {
+               usb@e5800000 {
                        status = "okay";
                };
 
                        status = "okay";
                };
 
-               ohci@e4000000 {
+               usb@e4000000 {
                        status = "okay";
                };
 
-               ohci@e5000000 {
+               usb@e5000000 {
                        status = "okay";
                };
 
index 3b6897084e2634fde11641eaeffb87d651ad1a97..76749992394d674a1dc796811d9aad9860c5c37b 100644 (file)
                        status = "disabled";
                };
 
-               ehci@e4800000 {
+               usb@e4800000 {
                        compatible = "st,spear600-ehci", "usb-ehci";
                        reg = <0xe4800000 0x1000>;
                        interrupts = <0 64 0x4>;
                        status = "disabled";
                };
 
-               ehci@e5800000 {
+               usb@e5800000 {
                        compatible = "st,spear600-ehci", "usb-ehci";
                        reg = <0xe5800000 0x1000>;
                        interrupts = <0 66 0x4>;
                        status = "disabled";
                };
 
-               ohci@e4000000 {
+               usb@e4000000 {
                        compatible = "st,spear600-ohci", "usb-ohci";
                        reg = <0xe4000000 0x1000>;
                        interrupts = <0 65 0x4>;
                        status = "disabled";
                };
 
-               ohci@e5000000 {
+               usb@e5000000 {
                        compatible = "st,spear600-ohci", "usb-ohci";
                        reg = <0xe5000000 0x1000>;
                        interrupts = <0 67 0x4>;
index 303ef29fb805c8983bcdcc0e02a8c98be6aedd12..7d4e6412d5582e43eec8f694ff078530ff395d59 100644 (file)
                        status = "okay";
                };
 
-               ehci@e1800000 {
+               usb@e1800000 {
                        status = "okay";
                };
 
-               ohci@e1900000 {
+               usb@e1900000 {
                        status = "okay";
                };
 
-               ohci@e2100000 {
+               usb@e2100000 {
                        status = "okay";
                };
 
index ea0b53036f7b479a7081b8212219cb3030bdd671..459182210825d43ad8598166465d757362862f0b 100644 (file)
                        status = "okay";
                };
 
-               ehci@e1800000 {
+               usb@e1800000 {
                        status = "okay";
                };
 
-               ohci@e1900000 {
+               usb@e1900000 {
                        status = "okay";
                };
 
-               ohci@e2100000 {
+               usb@e2100000 {
                        status = "okay";
                };
 
index 3c026d021c92445e8bfa2b896ad4402bc8ef4216..6ac53d993cf315b0381b1a2e23ae5cc663c569b2 100644 (file)
                        status = "okay";
                };
 
-               ehci@e1800000 {
+               usb@e1800000 {
                        status = "okay";
                };
 
-               ohci@e1900000 {
+               usb@e1900000 {
                        status = "okay";
                };
 
-               ohci@e2100000 {
+               usb@e2100000 {
                        status = "okay";
                };
 
index 721e5ee7b6803e6d306a8a1c94cc52944e336edf..8010918e5257b1c7f8ce444fea502e6da3ed7a46 100644 (file)
@@ -92,7 +92,7 @@
                        status = "okay";
                };
 
-               ehci@e1800000 {
+               usb@e1800000 {
                        status = "okay";
                };
 
                        };
                };
 
-               ohci@e1900000 {
+               usb@e1900000 {
                        status = "okay";
                };
 
-               ohci@e2100000 {
+               usb@e2100000 {
                        status = "okay";
                };
 
index cc88ebe7a60ced1725da1f3939f2fa0e462ef918..f54bb80ba28a6e8005a3b25da5f16bad58a1246b 100644 (file)
                        status = "disabled";
                };
 
-               ehci@e1800000 {
+               usb@e1800000 {
                        compatible = "st,spear600-ehci", "usb-ehci";
                        reg = <0xe1800000 0x1000>;
                        interrupts = <26>;
                        status = "disabled";
                };
 
-               ohci@e1900000 {
+               usb@e1900000 {
                        compatible = "st,spear600-ohci", "usb-ohci";
                        reg = <0xe1900000 0x1000>;
                        interrupts = <25>;
                        status = "disabled";
                };
 
-               ohci@e2100000 {
+               usb@e2100000 {
                        compatible = "st,spear600-ohci", "usb-ohci";
                        reg = <0xe2100000 0x1000>;
                        interrupts = <27>;
index 6b67c0ceaed9d2836d9b25ac922f69eb6841400f..9a93367445ca8d61c1e05b16b7bfbc2fab1e04c5 100644 (file)
@@ -91,7 +91,7 @@
                        status = "disabled";
                };
 
-               ehci_usb0: ehci@e1800000 {
+               ehci_usb0: usb@e1800000 {
                        compatible = "st,spear600-ehci", "usb-ehci";
                        reg = <0xe1800000 0x1000>;
                        interrupt-parent = <&vic1>;
@@ -99,7 +99,7 @@
                        status = "disabled";
                };
 
-               ehci_usb1: ehci@e2000000 {
+               ehci_usb1: usb@e2000000 {
                        compatible = "st,spear600-ehci", "usb-ehci";
                        reg = <0xe2000000 0x1000>;
                        interrupt-parent = <&vic1>;
                        status = "disabled";
                };
 
-               ohci_usb0: ohci@e1900000 {
+               ohci_usb0: usb@e1900000 {
                        compatible = "st,spear600-ohci", "usb-ohci";
                        reg = <0xe1900000 0x1000>;
                        interrupt-parent = <&vic1>;
                        status = "disabled";
                };
 
-               ohci_usb1: ohci@e2100000 {
+               ohci_usb1: usb@e2100000 {
                        compatible = "st,spear600-ohci", "usb-ohci";
                        reg = <0xe2100000 0x1000>;
                        interrupt-parent = <&vic1>;
index 2537b3d47e6f0ce8e0830d8de08a88a71724a02b..208f8c6dfc9dcf1b45a45fbad379124bca66bb67 100644 (file)
@@ -43,6 +43,7 @@
 #include "../armv7-m.dtsi"
 #include <dt-bindings/clock/stm32fx-clock.h>
 #include <dt-bindings/mfd/stm32f7-rcc.h>
+#include <dt-bindings/interrupt-controller/irq.h>
 
 / {
        #address-cells = <1>;
                        };
                };
 
+               lptimer1: timer@40002400 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "st,stm32-lptimer";
+                       reg = <0x40002400 0x400>;
+                       interrupts-extended = <&exti 23 IRQ_TYPE_EDGE_RISING>;
+                       clocks = <&rcc 1 CLK_LPTIMER>;
+                       clock-names = "mux";
+                       status = "disabled";
+
+                       pwm {
+                               compatible = "st,stm32-pwm-lp";
+                               #pwm-cells = <3>;
+                               status = "disabled";
+                       };
+
+                       trigger@0 {
+                               compatible = "st,stm32-lptimer-trigger";
+                               reg = <0>;
+                               status = "disabled";
+                       };
+
+                       counter {
+                               compatible = "st,stm32-lptimer-counter";
+                               status = "disabled";
+                       };
+
+                       timer {
+                               compatible = "st,stm32-lptimer-timer";
+                               status = "disabled";
+                       };
+               };
+
                rtc: rtc@40002800 {
                        compatible = "st,stm32-rtc";
                        reg = <0x40002800 0x400>;
index 7f1d234e102454505ad5f93f4dfc1bec5ebcd7d9..8a6db484383d617da95e4dc3b034170ba2dd9143 100644 (file)
                };
        };
 
-       uart4_pins: uart4-0 {
+       uart4_pins_a: uart4-0 {
                pins1 {
                        pinmux = <STM32_PINMUX('A', 0, AF8)>; /* UART4_TX */
                        bias-disable;
                };
        };
 
-       usart1_pins: usart1-0 {
+       uart8_pins_a: uart8-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('J', 8, AF8)>; /* UART8_TX */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('J', 9, AF8)>; /* UART8_RX */
+                       bias-disable;
+               };
+       };
+
+       usart1_pins_a: usart1-0 {
                pins1 {
                        pinmux = <STM32_PINMUX('B', 14, AF4)>; /* USART1_TX */
                        bias-disable;
                };
        };
 
-       usart2_pins: usart2-0 {
+       usart1_pins_b: usart1-1 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('A', 9, AF7)>; /* USART1_TX */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('A', 10, AF7)>; /* USART1_RX */
+                       bias-disable;
+               };
+       };
+
+       usart2_pins_a: usart2-0 {
                pins1 {
                        pinmux = <STM32_PINMUX('D', 5, AF7)>; /* USART2_TX */
                        bias-disable;
                };
        };
 
-       usart3_pins: usart3-0 {
+       usart3_pins_a: usart3-0 {
                pins1 {
                        pinmux = <STM32_PINMUX('B', 10, AF7)>, /* USART3_TX */
                                 <STM32_PINMUX('D', 12, AF7)>; /* USART3_RTS_DE */
index b8d4c44c8a82a9058e7cb27ba15246a796556028..2f19cfbc57adcd6b7cf61797586e4c7fb7a3e712 100644 (file)
                        };
                };
 
+               uart8: serial@40007c00 {
+                       compatible = "st,stm32h7-uart";
+                       reg = <0x40007c00 0x400>;
+                       interrupts = <83>;
+                       status = "disabled";
+                       clocks = <&rcc UART8_CK>;
+               };
+
                usart1: serial@40011000 {
                        compatible = "st,stm32h7-uart";
                        reg = <0x40011000 0x400>;
index 2b452883a7081d0d9f3747ef18778ca357179368..8451a54a9a08738eba9e60339ab96bd43a8cb94b 100644 (file)
 };
 
 &usart2 {
-       pinctrl-0 = <&usart2_pins>;
+       pinctrl-0 = <&usart2_pins_a>;
        pinctrl-names = "default";
        status = "okay";
 };
index 5c5d8059bdc757d1c7ca786844604c09a50dba97..4b0ced27b80eae1a116b60ae2fba0536b1236075 100644 (file)
 };
 
 &usart1 {
-       pinctrl-0 = <&usart1_pins>;
+       pinctrl-0 = <&usart1_pins_a>;
        pinctrl-names = "default";
        status = "okay";
 };
diff --git a/src/arm/st/stm32h747i-disco.dts b/src/arm/st/stm32h747i-disco.dts
new file mode 100644 (file)
index 0000000..99f0255
--- /dev/null
@@ -0,0 +1,136 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
+ */
+
+/dts-v1/;
+#include "stm32h743.dtsi"
+#include "stm32h7-pinctrl.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "STMicroelectronics STM32H747i-Discovery board";
+       compatible = "st,stm32h747i-disco", "st,stm32h747";
+
+       chosen {
+               bootargs = "root=/dev/ram";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@d0000000 {
+               device_type = "memory";
+               reg = <0xd0000000 0x2000000>;
+       };
+
+       aliases {
+               serial0 = &usart1;
+               serial1 = &uart8;
+       };
+
+       v3v3: regulator-v3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "v3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               led-green {
+                       gpios = <&gpioi 12 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "heartbeat";
+               };
+               led-orange {
+                       gpios = <&gpioi 13 GPIO_ACTIVE_LOW>;
+               };
+               led-red {
+                       gpios = <&gpioi 14 GPIO_ACTIVE_LOW>;
+               };
+               led-blue {
+                       gpios = <&gpioi 15 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+               button-0 {
+                       label = "User";
+                       linux,code = <KEY_WAKEUP>;
+                       gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;
+               };
+               button-1 {
+                       label = "JoySel";
+                       linux,code = <KEY_ENTER>;
+                       gpios = <&gpiok 2 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+               button-2 {
+                       label = "JoyDown";
+                       linux,code = <KEY_DOWN>;
+                       gpios = <&gpiok 3 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+               button-3 {
+                       label = "JoyUp";
+                       linux,code = <KEY_UP>;
+                       gpios = <&gpiok 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+               button-4 {
+                       label = "JoyLeft";
+                       linux,code = <KEY_LEFT>;
+                       gpios = <&gpiok 4 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+               button-5 {
+                       label = "JoyRight";
+                       linux,code = <KEY_RIGHT>;
+                       gpios = <&gpiok 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+               };
+       };
+};
+
+&clk_hse {
+       clock-frequency = <25000000>;
+};
+
+&mac {
+       status = "disabled";
+       pinctrl-0 = <&ethernet_rmii>;
+       pinctrl-names = "default";
+       phy-mode = "rmii";
+       phy-handle = <&phy0>;
+
+       mdio0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "snps,dwmac-mdio";
+               phy0: ethernet-phy@0 {
+                       reg = <0>;
+               };
+       };
+};
+
+&sdmmc1 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc1_b4_pins_a>;
+       pinctrl-1 = <&sdmmc1_b4_od_pins_a>;
+       pinctrl-2 = <&sdmmc1_b4_sleep_pins_a>;
+       cd-gpios = <&gpioi 8 GPIO_ACTIVE_LOW>;
+       broken-cd;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&v3v3>;
+       status = "okay";
+};
+
+&usart1 {
+       pinctrl-0 = <&usart1_pins_b>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&uart8 {
+       pinctrl-0 = <&uart8_pins_a>;
+       pinctrl-names = "default";
+       status = "okay";
+};
index 44c307f8b09cf7cf4d2dfca24c029ea8327bb0dc..56c53e262da79cbccdd0d8721e8862a53d8ddf47 100644 (file)
 
        #address-cells = <1>;
        #size-cells = <0>;
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
 };
 
 &usart2 {
-       pinctrl-0 = <&usart2_pins>;
+       pinctrl-0 = <&usart2_pins_a>;
        pinctrl-names = "default";
        status = "disabled";
 };
 
 &usart3 {
        pinctrl-names = "default";
-       pinctrl-0 = <&usart3_pins>;
+       pinctrl-0 = <&usart3_pins_a>;
        dmas = <&dmamux1 45 0x400 0x05>,
               <&dmamux1 46 0x400 0x05>;
        dma-names = "rx", "tx";
 };
 
 &uart4 {
-       pinctrl-0 = <&uart4_pins>;
+       pinctrl-0 = <&uart4_pins_a>;
        pinctrl-names = "default";
        status = "okay";
 };
index 8512a6e46b330ae07ceb8c454805f0e50dc4502c..492bcf586361c487208439ed71a93c2bf83d5eb2 100644 (file)
                                reg = <0x4 0x2>;
                                bits = <0 12>;
                        };
+                       vrefint: vrefin-cal@52 {
+                               reg = <0x52 0x2>;
+                       };
                        ts_cal1: calib@5c {
                                reg = <0x5c 0x2>;
                        };
                                        interrupts = <0>;
                                        dmas = <&dmamux1 10 0x400 0x80000001>;
                                        dma-names = "rx";
+                                       nvmem-cells = <&vrefint>;
+                                       nvmem-cell-names = "vrefint";
                                        status = "disabled";
 
                                        channel@13 {
index 73e470019ce426c9cafdbff0b4498c6fb3918f35..e48838374f0df4e003aee5046e45b49986c1daea 100644 (file)
@@ -60,6 +60,8 @@
                        interrupts = <0>;
                        dmas = <&dmamux1 9 0x400 0x80000001>;
                        dma-names = "rx";
+                       nvmem-cells = <&vrefint>;
+                       nvmem-cell-names = "vrefint";
                        status = "disabled";
 
                        channel@18 {
index 19a32f7d4d7da9325a2bc9e88d50a4ea9c2571e7..9764a6bfa5b428c8524a5902c10b7807dda46b3d 100644 (file)
        #size-cells = <0>;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                pinctrl-names = "default";
index 6236ce2a69684f8255c0be6d1a983b9010cb1170..c18156807027a752db15fcb85a13e56e45a61789 100644 (file)
        #address-cells = <1>;
        #size-cells = <0>;
 
-       brcmf: bcrmf@1 {        /* muRata 1YN */
+       brcmf: wifi@1 { /* muRata 1YN */
                reg = <1>;
                compatible = "infineon,cyw43439-fmac", "brcm,bcm4329-fmac";
                interrupt-parent = <&gpioe>;
index 6a5a4af25bd9b92fe04474d91573cb83c0e8af2d..84497026a106e21c91dd17b0e2a7fdec9f694ea2 100644 (file)
@@ -46,7 +46,7 @@
 
        #address-cells = <1>;
        #size-cells = <0>;
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
index 324f7bb988d11daaae2b61594d4881f60c6698b7..1b34fbe10b4ffd2bc875cde4d415e3c2b22a6fc5 100644 (file)
        #size-cells = <0>;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                pinctrl-names = "default";
diff --git a/src/arm/st/stm32mp157c-ultra-fly-sbc.dts b/src/arm/st/stm32mp157c-ultra-fly-sbc.dts
new file mode 100644 (file)
index 0000000..ac42d46
--- /dev/null
@@ -0,0 +1,1152 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (C) Ultratronik GmbH 2024-2025 - All Rights Reserved
+ */
+
+/dts-v1/;
+#include "stm32mp157.dtsi"
+#include "stm32mp15xc.dtsi"
+#include "stm32mp15-pinctrl.dtsi"
+#include "stm32mp15xxac-pinctrl.dtsi"
+#include <dt-bindings/pinctrl/stm32-pinfunc.h>
+#include <dt-bindings/mfd/st,stpmic1.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "STM STM32MP15x Ultratronik MMI_A7 board";
+       compatible = "ultratronik,stm32mp157c-ultra-fly-sbc", "st,stm32mp157";
+
+       aliases {
+               ethernet0 = &ethernet0;
+               serial0 = &uart4;
+               serial1 = &uart5;
+               serial2 = &uart7;
+               serial3 = &usart1;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@c0000000 {
+               device_type = "memory";
+               reg = <0xC0000000 0x40000000>;
+       };
+
+       usb_otg_vbus: regulator-0 {
+               compatible = "regulator-fixed";
+               regulator-name = "usb_otg_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&gpioh 3 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               retram: retram@38000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x38000000 0x10000>;
+                       no-map;
+               };
+
+               mcuram: mcuram@30000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x30000000 0x40000>;
+                       no-map;
+               };
+
+               mcuram2: mcuram2@10000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x10000000 0x40000>;
+                       no-map;
+               };
+
+               vdev0vring0: vdev0vring0@10040000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x10040000 0x2000>;
+                       no-map;
+               };
+
+               vdev0vring1: vdev0vring1@10042000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x10042000 0x2000>;
+                       no-map;
+               };
+
+               vdev0buffer: vdev0buffer@10044000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x10044000 0x4000>;
+                       no-map;
+               };
+
+               gpu_reserved: gpu@f8000000 {
+                       reg = <0xf8000000 0x8000000>;
+                       no-map;
+               };
+       };
+
+       leds: leds {
+               compatible = "gpio-leds";
+
+               led0{
+                       label = "buzzer";
+                       gpios = <&gpiof 2 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+                       linux,default-trigger = "none";
+               };
+
+               led1 {
+                       label = "led1";
+                       gpios = <&gpioa 12 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led2 {
+                       label = "led2";
+                       gpios = <&gpioa 13 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+
+               led3 {
+                       label = "led3";
+                       gpios = <&gpioa 14 GPIO_ACTIVE_LOW>;
+                       default-state = "off";
+               };
+       };
+
+       gpio_keys: gpio-keys {
+               compatible = "gpio-keys";
+
+               key-1 {
+                       label = "KEY1";
+                       gpios = <&gpiod 1 GPIO_ACTIVE_HIGH>;
+                       wakeup-source;
+                       linux,code = <2>;
+               };
+
+               key-2 {
+                       label = "KEY2";
+                       gpios = <&gpiod 7 GPIO_ACTIVE_HIGH>;
+                       wakeup-source;
+                       linux,code = <3>;
+               };
+       };
+};
+
+&adc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&adc1_ux_ain_pins_a>;
+       vdd-supply = <&vdd>;
+       vdda-supply = <&vdd>;
+       vref-supply = <&vrefbuf>;
+       status = "okay";
+
+       adc1: adc@0 {
+               st,min-sample-time-nsecs = <5000>;
+               st,adc-channels = <0 1 6 13>; /* ANA0 ANA1 PF12 PC3 */
+               status = "okay";
+       };
+
+       adc2: adc@100 {
+               st,adc-channels = <0 1 12>; /* ANA0 ANA1 INT_TEMP*/
+               st,min-sample-time-nsecs = <10000>;
+               status = "okay";
+
+               channel@12 {
+                       reg = <12>;  /* Channel 12 = internal temperature sensor */
+                       label = "internal_temp";
+               };
+       };
+};
+
+&dac {
+       pinctrl-names = "default";
+       pinctrl-0 = <&dac_ux_ch1_pins_a &dac_ux_ch2_pins_a>;
+       vref-supply = <&vrefbuf>;
+       status = "okay";
+
+       dac1: dac@1 {
+               status = "okay";
+       };
+
+       dac2: dac@2 {
+               status = "okay";
+       };
+};
+
+&dts {
+       compatible = "st,stm32-thermal";
+       status = "okay";
+};
+
+&ethernet0 {
+       status = "okay";
+       pinctrl-0 = <&ethernet0_ux_rgmii_pins_a>;
+       pinctrl-1 = <&ethernet0_ux_rgmii_pins_sleep_a>;
+       pinctrl-names = "default", "sleep";
+       phy-mode = "rgmii-id";
+       phy-handle = <&phy1>;
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "snps,dwmac-mdio";
+               phy1: ethernet-phy@1 {
+                       reg = <1>;
+               };
+       };
+};
+
+&gpioa {
+       gpio-line-names =
+       "#PMIC_IRQ", "", "", "", "DAC1", "DAC2", "", "",
+       "", "", "OTG_ID", "TIM1_4", "#LED1", "#LED2", "#LED3", "";
+};
+
+&gpiob {
+       gpio-line-names =
+       "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "";
+};
+
+&gpioc {
+       gpio-line-names =
+       "#AMP_SD", "", "", "ANA5", "", "", "", "",
+       "", "", "", "", "", "PMIC_WAKEUP", "", "";
+};
+
+&gpiod {
+       gpio-line-names =
+       "#G_INT", "#TASTER1", "", "", "GPIO1", "GPIO2", "", "#TASTER2",
+       "", "", "", "", "", "", "TIM4_3", "TIM4_4";
+};
+
+&gpioe {
+       gpio-line-names =
+       "", "", "", "", "", "", "", "",
+       "", "", "PWM2", "", "", "", "", "";
+};
+
+&gpiof {
+       gpio-line-names =
+       "#SD1_CD", "SD1_WP", "BUZZER", "#DISP_POW", "BKL_POW", "#CAM_RES", "", "",
+       "", "TIM17_1N", "", "CAM_PWDN", "ANA6", "ENA_USB", "", "";
+};
+
+&gpiog {
+       gpio-line-names =
+       "#ESP_RES", "#ESP_BOOT", "GPIO3", "GPIO4", "", "", "", "",
+       "", "#TOUCH_IRQ", "", "", "", "", "", "#PCAP_RES";
+};
+
+&gpioh {
+       gpio-line-names =
+       "", "CAM_LED", "", "USB_OTG_PWR", "", "USB_OTG_OC", "", "",
+       "", "", "", "", "", "", "", "";
+};
+
+&gpioi {
+       gpio-line-names =
+       "BKL_PWM", "", "", "", "", "", "", "",
+       "#SPI_CS0", "", "", "#SPI_CS1", "", "", "", "";
+};
+
+&gpioj {
+       gpio-line-names =
+       "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "";
+};
+
+&gpiok {
+       gpio-line-names =
+       "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "";
+};
+
+&gpioz {
+       gpio-line-names =
+       "", "", "", "#SPI_CS2", "", "", "", "",
+       "", "", "", "", "", "", "", "";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2c1_ux_pins_a>;
+       pinctrl-1 = <&i2c1_ux_pins_sleep_a>;
+       i2c-scl-rising-time-ns = <100>;
+       i2c-scl-falling-time-ns = <7>;
+       status = "okay";
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       rtc@32 {
+               compatible = "epson,rx8900";
+               reg = <0x32>;
+               epson,vdet-disable;
+               trickle-diode-disable;
+       };
+};
+
+&i2c4 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&i2c4_ux_pins_a>;
+       pinctrl-1 = <&i2c4_ux_pins_sleep_a>;
+       i2c-scl-rising-time-ns = <185>;
+       i2c-scl-falling-time-ns = <20>;
+       status = "okay";
+       /delete-property/dmas;
+       /delete-property/dma-names;
+
+       pmic: pmic@33 {
+               compatible = "st,stpmic1";
+               reg = <0x33>;
+               interrupts-extended = <&exti 0 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+
+               regulators {
+                       compatible = "st,stpmic1-regulators";
+
+                       ldo1-supply = <&v3v3>;
+                       ldo3-supply = <&vdd_ddr>;
+                       ldo6-supply = <&v3v3>;
+                       pwr_sw1-supply = <&bst_out>;
+                       pwr_sw2-supply = <&bst_out>;
+
+                       vddcore: buck1 {
+                               regulator-name = "vddcore";
+                               regulator-min-microvolt = <1250000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-always-on;
+                               regulator-initial-mode = <0>;
+                               regulator-over-current-protection;
+                       };
+
+                       vdd_ddr: buck2 {
+                               regulator-name = "vdd_ddr";
+                               regulator-min-microvolt = <1350000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-always-on;
+                               regulator-initial-mode = <0>;
+                               regulator-over-current-protection;
+                       };
+
+                       vdd: buck3 {
+                               regulator-name = "vdd";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                               st,mask-reset;
+                               regulator-initial-mode = <0>;
+                               regulator-over-current-protection;
+                       };
+
+                       v3v3: buck4 {
+                               regulator-name = "v3v3";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                               regulator-over-current-protection;
+                               regulator-initial-mode = <0>;
+                       };
+
+                       vtt_ddr: ldo3 {
+                               regulator-name = "vtt_ddr";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-always-on;
+                               regulator-over-current-protection;
+                       };
+
+                       vdd_usb: ldo4 {
+                               regulator-name = "vdd_usb";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                               interrupts = <IT_CURLIM_LDO4 0>;
+                       };
+
+                       v1v8: ldo6 {
+                               regulator-name = "v1v8";
+                               regulator-min-microvolt = <1600000>;/* offset +200 mv ??? */
+                               regulator-max-microvolt = <1600000>;/* real 1800000 */
+                               regulator-always-on;
+                               interrupts = <IT_CURLIM_LDO6 0>;
+                       };
+
+                       vref_ddr: vref_ddr {
+                               regulator-name = "vref_ddr";
+                               regulator-always-on;
+                       };
+
+                       bst_out: boost {
+                               regulator-name = "bst_out";
+                               interrupts = <IT_OCP_BOOST 0>;
+                       };
+
+                       vbus_otg: pwr_sw1 {
+                               regulator-name = "vbus_otg";
+                               interrupts = <IT_OCP_OTG 0>;
+                               regulator-active-discharge = <1>;
+                        };
+
+                        vbus_sw: pwr_sw2 {
+                               regulator-name = "vbus_sw";
+                               interrupts = <IT_OCP_SWOUT 0>;
+                               regulator-active-discharge = <1>;
+                        };
+               };
+       };
+};
+
+&iwdg2 {
+       timeout-sec = <32>;
+       status = "okay";
+};
+
+&m_can2 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&m_can2_ux_pins_a>;
+       pinctrl-1 = <&m_can2_ux_sleep_pins_a>;
+       status = "okay";
+};
+
+&pinctrl {
+
+       adc1_ux_ain_pins_a: adc1-ux-ain-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('F',12, ANALOG)>, /* ADC1 in6 */
+                                <STM32_PINMUX('C', 3, ANALOG)>; /* ADC2 in13 */
+               };
+       };
+
+       dac_ux_ch1_pins_a: dac-ux-ch1-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 4, ANALOG)>;
+               };
+       };
+
+       dac_ux_ch2_pins_a: dac-ux-ch2-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 5, ANALOG)>;
+               };
+       };
+
+       ethernet0_ux_rgmii_pins_a: rgmii-ux-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('G', 5, AF11)>, /* ETH_RGMII_CLK125 */
+                                <STM32_PINMUX('G', 4, AF11)>, /* ETH_RGMII_GTX_CLK */
+                                <STM32_PINMUX('G', 13, AF11)>, /* ETH_RGMII_TXD0 */
+                                <STM32_PINMUX('G', 14, AF11)>, /* ETH_RGMII_TXD1 */
+                                <STM32_PINMUX('C', 2, AF11)>, /* ETH_RGMII_TXD2 */
+                                <STM32_PINMUX('E', 2, AF11)>, /* ETH_RGMII_TXD3 */
+                                <STM32_PINMUX('B', 11, AF11)>; /* ETH_RGMII_TX_CTL */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <2>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('C', 4, AF11)>, /* ETH_RGMII_RXD0 */
+                                <STM32_PINMUX('C', 5, AF11)>, /* ETH_RGMII_RXD1 */
+                                <STM32_PINMUX('B', 0, AF11)>, /* ETH_RGMII_RXD2 */
+                                <STM32_PINMUX('H', 7, AF11)>, /* ETH_RGMII_RXD3 */
+                                <STM32_PINMUX('A', 1, AF11)>, /* ETH_RGMII_RX_CLK */
+                                <STM32_PINMUX('A', 7, AF11)>; /* ETH_RGMII_RX_CTL */
+                       bias-disable;
+               };
+               pins3 {
+                       pinmux = <STM32_PINMUX('C', 1, AF11)>; /* ETH_MDC */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins4 {
+                       pinmux = <STM32_PINMUX('A', 2, AF11)>; /* ETH_MDIO */
+                       bias-disable;
+                       drive-open-drain;
+                       slew-rate = <0>;
+               };
+       };
+
+       ethernet0_ux_rgmii_pins_sleep_a: rgmii-ux-sleep-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('G', 5, ANALOG)>, /* ETH_RGMII_CLK125 */
+                                <STM32_PINMUX('G', 4, ANALOG)>, /* ETH_RGMII_GTX_CLK */
+                                <STM32_PINMUX('G', 13, ANALOG)>, /* ETH_RGMII_TXD0 */
+                                <STM32_PINMUX('G', 14, ANALOG)>, /* ETH_RGMII_TXD1 */
+                                <STM32_PINMUX('C', 2, ANALOG)>, /* ETH_RGMII_TXD2 */
+                                <STM32_PINMUX('E', 2, ANALOG)>, /* ETH_RGMII_TXD3 */
+                                <STM32_PINMUX('B', 11, ANALOG)>, /* ETH_RGMII_TX_CTL */
+                                <STM32_PINMUX('A', 2, ANALOG)>, /* ETH_MDIO */
+                                <STM32_PINMUX('C', 1, ANALOG)>, /* ETH_MDC */
+                                <STM32_PINMUX('C', 4, ANALOG)>, /* ETH_RGMII_RXD0 */
+                                <STM32_PINMUX('C', 5, ANALOG)>, /* ETH_RGMII_RXD1 */
+                                <STM32_PINMUX('B', 0, ANALOG)>, /* ETH_RGMII_RXD2 */
+                                <STM32_PINMUX('B', 1, ANALOG)>, /* ETH_RGMII_RXD3 */
+                                <STM32_PINMUX('A', 1, ANALOG)>, /* ETH_RGMII_RX_CLK */
+                                <STM32_PINMUX('A', 7, ANALOG)>; /* ETH_RGMII_RX_CTL */
+               };
+       };
+
+       i2c1_ux_pins_a: i2c1-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('F', 14, AF5)>, /* I2C1_SCL */
+                                <STM32_PINMUX('F', 15, AF5)>; /* I2C1_SDA */
+                       bias-disable;
+                       drive-open-drain;
+                       slew-rate = <0>;
+               };
+       };
+
+       i2c1_ux_pins_sleep_a: i2c1-1 {
+               pins {
+                       pinmux = <STM32_PINMUX('F', 14, ANALOG)>, /* I2C1_SCL */
+                                <STM32_PINMUX('F', 15, ANALOG)>; /* I2C1_SDA */
+               };
+       };
+
+       m_can2_ux_pins_a: m-can2-ux-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 6, AF9)>; /* CAN1_TX */
+                       slew-rate = <0>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('B', 5, AF9)>; /* CAN1_RX */
+                       bias-disable;
+               };
+       };
+
+       m_can2_ux_sleep_pins_a: m-can2-ux-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 6, ANALOG)>, /* CAN1_TX */
+                                <STM32_PINMUX('B', 5, ANALOG)>; /* CAN1_RX */
+               };
+       };
+       pwm1_ux_pins_a: pwm1-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A',11, AF1)>, /* TIM1_CH4 */
+                                <STM32_PINMUX('E',10, AF1)>; /* TIM1_CH2N */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       pwm1_ux_sleep_pins_a: pwm1-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A',11, ANALOG)>, /* TIM1_CH4 */
+                                <STM32_PINMUX('E',10, ANALOG)>; /* TIM1_CH2N */
+               };
+       };
+
+       pwm4_ux_pins_a: pwm4-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 14, AF2)>, /* TIM4_CH3 */
+                                <STM32_PINMUX('D', 15, AF2)>; /* TIM4_CH4 */
+                       bias-disable;
+               };
+       };
+
+       pwm4_ux_sleep_pins_a: pwm4-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 14, ANALOG)>, /* TIM4_CH3 */
+                                <STM32_PINMUX('D', 15, ANALOG)>; /* TIM4_CH4 */
+               };
+       };
+
+       pwm5_ux_pins_a: pwm5-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('I', 0, AF2)>; /* TIM5_CH4 */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       pwm5_ux_sleep_pins_a: pwm5-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('I', 0, ANALOG)>; /* TIM5_CH4 */
+               };
+       };
+
+       pwm17_ux_pins_a: pwm17-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('F', 9, AF1)>; /* TIM17_CH1N */
+                       bias-pull-down;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       pwm17_ux_sleep_pins_a: pwm17-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('F', 9, ANALOG)>; /* TIM17_CH1N */
+               };
+       };
+
+       qspi_bk1_ux_pins_a: qspi-bk1-ux-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */
+                                <STM32_PINMUX('D',12, AF9)>, /* QSPI_BK1_IO1 */
+                                <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */
+                                <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <1>;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('B',10, AF9)>; /* QSPI_BK1_NCS */
+                       bias-pull-up;
+                       drive-push-pull;
+                       slew-rate = <1>;
+               };
+       };
+
+       qspi_bk1_ux_sleep_pins_a: qspi-bk1-ux-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('F', 8, ANALOG)>, /* QSPI_BK1_IO0 */
+                                <STM32_PINMUX('D',12, ANALOG)>, /* QSPI_BK1_IO1 */
+                                <STM32_PINMUX('F', 7, ANALOG)>, /* QSPI_BK1_IO2 */
+                                <STM32_PINMUX('F', 6, ANALOG)>, /* QSPI_BK1_IO3 */
+                                <STM32_PINMUX('B',10, ANALOG)>; /* QSPI_BK1_NCS */
+               };
+       };
+
+       qspi_clk_ux_pins_a: qspi-clk_ux-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('G', 7, AF9)>; /* QSPI_CLK */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <3>;
+               };
+       };
+
+       qspi_clk_ux_sleep_pins_a: qspi-clk-ux-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('G', 7, ANALOG)>; /* QSPI_CLK */
+               };
+       };
+
+       sai2a_ux_pins_a: sai2a-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('I', 5, AF10)>, /* SAI2_SCK_A */
+                                <STM32_PINMUX('D',11, AF10)>, /* SAI2_SD_A */
+                                <STM32_PINMUX('I', 7, AF10)>, /* SAI2_FS_A */
+                                <STM32_PINMUX('E', 0, AF10)>; /* SAI2_MCLK_A */
+                       slew-rate = <0>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+       };
+
+       sai2a_ux_sleep_pins_a: sai2a-1 {
+               pins {
+                       pinmux = <STM32_PINMUX('I', 5, ANALOG)>, /* SAI2_SCK_A */
+                                <STM32_PINMUX('D',11, ANALOG)>, /* SAI2_SD_A */
+                                <STM32_PINMUX('I', 7, ANALOG)>, /* SAI2_FS_A */
+                                <STM32_PINMUX('E', 0, ANALOG)>; /* SAI2_MCLK_A */
+               };
+       };
+
+       sdmmc1_ux_b4_pins_a: sdmmc1-ux-b4-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
+                                <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
+                                <STM32_PINMUX('C',10, AF12)>, /* SDMMC1_D2 */
+                                <STM32_PINMUX('C',11, AF12)>, /* SDMMC1_D3 */
+                                <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
+                       slew-rate = <2>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+       };
+
+       sdmmc1_ux_b4_od_pins_a: sdmmc1-b4-od-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
+                                <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
+                                <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
+                                <STM32_PINMUX('C', 11, AF12)>; /* SDMMC1_D3 */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('C', 12, AF12)>; /* SDMMC1_CK */
+                       slew-rate = <2>;
+                       drive-push-pull;
+                       bias-disable;
+               };
+               pins3 {
+                       pinmux = <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
+                       slew-rate = <1>;
+                       drive-open-drain;
+                       bias-disable;
+               };
+       };
+
+       sdmmc1_ux_b4_sleep_pins_a: sdmmc1-b4-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('C', 8, ANALOG)>, /* SDMMC1_D0 */
+                                <STM32_PINMUX('C', 9, ANALOG)>, /* SDMMC1_D1 */
+                                <STM32_PINMUX('C', 10, ANALOG)>, /* SDMMC1_D2 */
+                                <STM32_PINMUX('C', 11, ANALOG)>, /* SDMMC1_D3 */
+                                <STM32_PINMUX('C', 12, ANALOG)>, /* SDMMC1_CK */
+                                <STM32_PINMUX('D', 2, ANALOG)>; /* SDMMC1_CMD */
+               };
+       };
+
+       sdmmc2_ux_b4_pins_a: sdmmc2-ux-b4-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */
+                               <STM32_PINMUX('B', 15, AF9)>, /* SDMMC2_D1 */
+                               <STM32_PINMUX('B', 3, AF9)>, /* SDMMC2_D2 */
+                               <STM32_PINMUX('B', 4, AF9)>, /* SDMMC2_D3 */
+                               <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('E', 3, AF9)>; /* SDMMC2_CK */
+                       slew-rate = <2>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+       };
+
+       sdmmc2_ux_b4_od_pins_a: sdmmc2-ux-b4-od-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */
+                               <STM32_PINMUX('B', 15, AF9)>, /* SDMMC2_D1 */
+                               <STM32_PINMUX('B', 3, AF9)>, /* SDMMC2_D2 */
+                               <STM32_PINMUX('B', 4, AF9)>; /* SDMMC2_D3 */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('E', 3, AF9)>; /* SDMMC2_CK */
+                       slew-rate = <2>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+               pins3 {
+                       pinmux = <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */
+                       slew-rate = <1>;
+                       drive-open-drain;
+                       bias-pull-up;
+               };
+       };
+
+       sdmmc2_ux_b4_sleep_pins_a: sdmmc2-ux-b4-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 14, ANALOG)>, /* SDMMC2_D0 */
+                               <STM32_PINMUX('B', 15, ANALOG)>, /* SDMMC2_D1 */
+                               <STM32_PINMUX('B', 3, ANALOG)>, /* SDMMC2_D2 */
+                               <STM32_PINMUX('B', 4, ANALOG)>, /* SDMMC2_D3 */
+                               <STM32_PINMUX('E', 3, ANALOG)>, /* SDMMC2_CK */
+                               <STM32_PINMUX('G', 6, ANALOG)>; /* SDMMC2_CMD */
+               };
+       };
+
+       sdmmc2_ux_d47_pins_a: sdmmc2-ux-d47-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 8, AF9)>, /* SDMMC2_D4 */
+                               <STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */
+                               <STM32_PINMUX('E', 5, AF9)>, /* SDMMC2_D6 */
+                               <STM32_PINMUX('D', 3, AF9)>; /* SDMMC2_D7 */
+                       slew-rate = <1>;
+                       drive-push-pull;
+                       bias-pull-up;
+               };
+       };
+
+       sdmmc2_ux_d47_sleep_pins_a: sdmmc2-ux-d47-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('A', 8, ANALOG)>, /* SDMMC2_D4 */
+                               <STM32_PINMUX('A', 9, ANALOG)>, /* SDMMC2_D5 */
+                               <STM32_PINMUX('E', 5, ANALOG)>, /* SDMMC2_D6 */
+                               <STM32_PINMUX('D', 3, ANALOG)>; /* SDMMC2_D7 */
+               };
+       };
+
+       uart4_ux_pins_a: uart4-ux-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('G', 11, AF6)>; /* UART4_TX */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('B', 2, AF8)>; /* UART4_RX */
+                       bias-disable;
+               };
+       };
+
+       uart4_ux_idle_pins_a: uart4-ux-idle-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('G', 11, ANALOG)>; /* UART4_TX */
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('B', 2, AF8)>; /* UART4_RX */
+                       bias-disable;
+               };
+               };
+
+       uart4_ux_sleep_pins_a: uart4-ux-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('G', 11, ANALOG)>, /* UART4_TX */
+                               <STM32_PINMUX('B', 2, ANALOG)>; /* UART4_RX */
+               };
+       };
+
+       uart5_ux_pins_a: uart5-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 13, AF14)>; /* UART5_TX */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('B', 12, AF14)>; /* UART5_RX */
+                       bias-disable;
+               };
+       };
+
+       uart5_ux_idle_pins_a: uart5-idle-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('B', 13, ANALOG)>; /* UART5_TX */
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('B', 12, AF14)>; /* UART5_RX*/
+                       bias-disable;
+               };
+       };
+
+       uart5_ux_sleep_pins_a: uart5-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('B', 13, ANALOG)>, /* UART5_TX */
+                                <STM32_PINMUX('B', 12, ANALOG)>; /* UART5_RX */
+               };
+       };
+
+       uart7_ux_pins_a: uart7-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('E', 8, AF7)>; /* USART7_TX */
+                       bias-pull-up;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('E', 7, AF7)>; /* USART7_RX */
+                       bias-pull-up;
+               };
+               pins3 {
+                       pinmux = <STM32_PINMUX('E', 9, AF7)>; /* USART7_RTS/DE */
+               };
+       };
+
+       uart7_ux_idle_pins_a: uart7-idle-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('E', 8, ANALOG)>, /* USART7_TX */
+                                <STM32_PINMUX('E', 9, AF7)>; /* USART7_RTS/DE */
+               };
+               pins2 {
+                       pinmux = <STM32_PINMUX('E', 7, AF7)>; /* USART7_RX */
+                       bias-disable;
+               };
+       };
+
+       uart7_ux_sleep_pins_a: uart7-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('E', 8, ANALOG)>, /* USART7_TX */
+                                <STM32_PINMUX('E', 9, AF7)>, /* USART7_RTS/DE */
+                                <STM32_PINMUX('E', 7, ANALOG)>; /* USART7_RX */
+               };
+       };
+};
+
+&pinctrl_z {
+
+       i2c4_ux_pins_a: i2c4-ux-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('Z', 4, AF6)>, /* I2C4_SCL */
+                               <STM32_PINMUX('Z', 5, AF6)>; /* I2C4_SDA */
+                       bias-disable;
+                       drive-open-drain;
+                       slew-rate = <0>;
+               };
+       };
+
+       i2c4_ux_pins_sleep_a: i2c4-1 {
+               pins {
+                       pinmux = <STM32_PINMUX('Z', 4, ANALOG)>, /* I2C4_SCL */
+                               <STM32_PINMUX('Z', 5, ANALOG)>; /* I2C4_SDA */
+               };
+       };
+
+       spi1_ux_pins_a: spi1-ux-0 {
+               pins1 {
+                       pinmux = <STM32_PINMUX('Z', 0, AF5)>, /* SPI1_SCK */
+                               <STM32_PINMUX('Z', 2, AF5)>; /* SPI1_MOSI */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <1>;
+               };
+
+               pins2 {
+                       pinmux = <STM32_PINMUX('Z', 1, AF5)>; /* SPI1_MISO */
+                       bias-disable;
+               };
+       };
+
+       spi1_ux_sleep_pins_a: spi1-ux-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('Z', 0, ANALOG)>, /* SPI1_SCK */
+                               <STM32_PINMUX('Z', 1, ANALOG)>, /* SPI1_MISO */
+                               <STM32_PINMUX('Z', 2, ANALOG)>; /* SPI1_MOSI */
+               };
+       };
+};
+
+&pwr_regulators {
+       vdd-supply = <&vdd>;
+       vdd_3v3_usbfs-supply = <&vdd_usb>;
+};
+
+&qspi {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&qspi_clk_ux_pins_a &qspi_bk1_ux_pins_a>;
+       pinctrl-1 = <&qspi_clk_ux_sleep_pins_a &qspi_bk1_ux_sleep_pins_a>;
+       reg = <0x58003000 0x1000>, <0x70000000 0x1000000>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       flash0: flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <133000000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+       };
+};
+
+&sdmmc1 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc1_ux_b4_pins_a>;
+       pinctrl-1 = <&sdmmc1_ux_b4_od_pins_a>;
+       pinctrl-2 = <&sdmmc1_ux_b4_sleep_pins_a>;
+       broken-cd;
+       st,neg-edge;
+       bus-width = <4>;
+       vmmc-supply = <&v3v3>;
+       no-1-8-v;
+       status = "okay";
+};
+
+&sdmmc2 {
+       pinctrl-names = "default", "opendrain", "sleep";
+       pinctrl-0 = <&sdmmc2_ux_b4_pins_a &sdmmc2_ux_d47_pins_a>;
+       pinctrl-1 = <&sdmmc2_ux_b4_od_pins_a &sdmmc2_ux_d47_pins_a>;
+       pinctrl-2 = <&sdmmc2_ux_b4_sleep_pins_a &sdmmc2_ux_d47_sleep_pins_a>;
+       non-removable;
+       no-sd;
+       no-sdio;
+       st,neg-edge;
+       bus-width = <8>;
+       vmmc-supply = <&v3v3>;
+       vqmmc-supply = <&v3v3>;
+       mmc-ddr-3_3v;
+       status = "okay";
+};
+
+&spi1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&spi1_ux_pins_a>;
+       pinctrl-1 = <&spi1_ux_sleep_pins_a>;
+       status = "okay";
+       cs-gpios = <&gpioi 8 0>, <&gpioi 11 0>, <&gpioz 3 0>;
+
+       flash: flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+       };
+};
+
+&timers1 {
+       /* spare dmas for other usage */
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+
+       pwm {
+               pinctrl-0 = <&pwm1_ux_pins_a>;
+               pinctrl-1 = <&pwm1_ux_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+
+       timer@0 {
+               status = "okay";
+       };
+};
+
+&timers4 {
+       dmas = <&dmamux1 31 0x400 0x5>;
+       dma-names = "ch3";
+       status = "okay";
+
+       pwm4_4: pwm {
+               pinctrl-0 = <&pwm4_ux_pins_a>;
+               pinctrl-1 = <&pwm4_ux_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+};
+
+&timers5 {
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+
+       pwm5_4: pwm {
+               pinctrl-0 = <&pwm5_ux_pins_a>;
+               pinctrl-1 = <&pwm5_ux_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+
+       timer@4 {
+               status = "okay";
+       };
+};
+
+&timers17 {
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       status = "okay";
+
+       pwm17_4: pwm {
+               pinctrl-0 = <&pwm17_ux_pins_a>;
+               pinctrl-1 = <&pwm17_ux_sleep_pins_a>;
+               pinctrl-names = "default", "sleep";
+               status = "okay";
+       };
+
+       timer@16 {
+               status = "okay";
+       };
+};
+
+&uart4 {
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       pinctrl-names = "default", "sleep", "idle", "no_console_suspend";
+       pinctrl-0 = <&uart4_ux_pins_a>;
+       pinctrl-1 = <&uart4_ux_sleep_pins_a>;
+       pinctrl-2 = <&uart4_ux_idle_pins_a>;
+       pinctrl-3 = <&uart4_ux_pins_a>;
+       status = "okay";
+};
+
+&uart5 {
+       pinctrl-names = "default", "sleep", "idle";
+       pinctrl-0 = <&uart5_ux_pins_a>;
+       pinctrl-1 = <&uart5_ux_sleep_pins_a>;
+       pinctrl-2 = <&uart5_ux_idle_pins_a>;
+       status = "okay";
+};
+
+&uart7 {
+       /delete-property/dmas;
+       /delete-property/dma-names;
+       pinctrl-names = "default", "sleep", "idle";
+       pinctrl-0 = <&uart7_ux_pins_a>;
+       pinctrl-1 = <&uart7_ux_sleep_pins_a>;
+       pinctrl-2 = <&uart7_ux_idle_pins_a>;
+       status = "okay";
+};
+
+&usart1 {
+       /*Muxing happens in uboot*/
+       status = "okay";
+};
+
+&usbh_ehci {
+       phys = <&usbphyc_port0>;
+       phy-names = "usb";
+       status = "okay";
+};
+
+&usbh_ohci {
+       phys = <&usbphyc_port0>;
+       phy-names = "usb";
+       status = "okay";
+};
+
+&usbotg_hs {
+       phys = <&usbphyc_port1 0>;
+       phy-names = "usb2-phy";
+       vbus-supply = <&usb_otg_vbus>;
+       status = "okay";
+};
+
+&usbphyc {
+       status = "okay";
+};
+
+&usbphyc_port0 {
+       phy-supply = <&vdd_usb>;
+       st,tune-hs-dc-level = <2>;
+       st,enable-fs-rftime-tuning;
+       st,enable-hs-rftime-reduction;
+       st,trim-hs-current = <15>;
+       st,trim-hs-impedance = <1>;
+       st,tune-squelch-level = <3>;
+       st,tune-hs-rx-offset = <2>;
+       st,no-lsfs-sc;
+};
+
+&usbphyc_port1 {
+       phy-supply = <&vdd_usb>;
+       st,tune-hs-dc-level = <2>;
+       st,enable-fs-rftime-tuning;
+       st,enable-hs-rftime-reduction;
+       st,trim-hs-current = <15>;
+       st,trim-hs-impedance = <1>;
+       st,tune-squelch-level = <3>;
+       st,tune-hs-rx-offset = <2>;
+       st,no-lsfs-sc;
+};
+
+&vrefbuf {
+       regulator-min-microvolt = <2500000>;
+       regulator-max-microvolt = <2500000>;
+       vdda-supply = <&vdd>;
+       status = "okay";
+};
index 343a4613dfca7c9a3d5e8a68d8fcf34ca649db69..aceeff6c38ba14e4e545ae99587fe0d549171f9a 100644 (file)
 
        #address-cells = <1>;
        #size-cells = <0>;
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
index 1f5cd35f8b741b4d6423d55b679a2b01fbab2f49..38a191fb04149add73f17ba4d589d82d1b27d682 100644 (file)
@@ -60,7 +60,7 @@
                        sync-edge = <0>;
                        sync-ctrl = <1>;
                        raster-order = <0>;
-                       fifo-th = <0>;
+                       fifo-th = <1>;
                };
 
                display-timings {
index 61bf8bcd4c4ed7c037db51da61ec0c4443b2a01a..20222f82f21bfd9d9709d2f508ea752313822b36 100644 (file)
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins>;
-
+       wakeup-source;
        status = "okay";
 };
 
index 4bde3342bb959794c39b202e01ad14d48c554d70..c50ca572d1b9b5847be57bc5b928d0859fef71a6 100644 (file)
                reg = <0x0c>;
 
                VANA-supply = <&vaux4>;
-
-               #io-channel-cells = <0>;
        };
 };
 
index 92cd4c99dae7207ee24ca3e9d2365251923de059..817474ee2d13c52466f899cb7acdbce8290c3902 100644 (file)
                        #size-cells = <1>;
                        ranges;
 
-                       usbhsohci: ohci@48064400 {
+                       usbhsohci: usb@48064400 {
                                compatible = "ti,ohci-omap3";
                                reg = <0x48064400 0x400>;
                                interrupts = <76>;
                                remote-wakeup-connected;
                        };
 
-                       usbhsehci: ehci@48064800 {
+                       usbhsehci: usb@48064800 {
                                compatible = "ti,ehci-omap";
                                reg = <0x48064800 0x400>;
                                interrupts = <77>;
index 150dd84c9e0f749585de5fd4edb3bc673a8209ea..4ee53dfb71b477006cb13cc8223b0088db1b6ca4 100644 (file)
                                              "refclk_60m_ext_p1",
                                              "refclk_60m_ext_p2";
 
-                               usbhsohci: ohci@800 {
+                               usbhsohci: usb@800 {
                                        compatible = "ti,ohci-omap3";
                                        reg = <0x800 0x400>;
                                        interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
                                        remote-wakeup-connected;
                                };
 
-                               usbhsehci: ehci@c00 {
+                               usbhsehci: usb@c00 {
                                        compatible = "ti,ehci-omap";
                                        reg = <0xc00 0x400>;
                                        interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
index 97706d6296a68f9943ecd769a4e55a2503e75ea2..05c871d31d7be1265e1fff6f33da244cf0868478 100644 (file)
                clock-frequency = <19200000>;
        };
 
+       wl12xx_pwrseq: wl12xx-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&twl 0>;
+               clock-names = "ext_clock";
+       };
+
        /* regulator for wl12xx on sdio5 */
        wl12xx_vmmc: wl12xx_vmmc {
                pinctrl-names = "default";
         */
        wl12xx_gpio: wl12xx-gpio-pins {
                pinctrl-single,pins = <
-                       OMAP4_IOPAD(0x066, PIN_OUTPUT | MUX_MODE3)              /* gpmc_a19.gpio_43 */
-                       OMAP4_IOPAD(0x06c, PIN_OUTPUT | MUX_MODE3)              /* gpmc_a22.gpio_46 */
+                       OMAP4_IOPAD(0x066, PIN_OUTPUT | MUX_MODE3)              /* gpmc_a19.gpio_43 - WLAN_EN */
                        OMAP4_IOPAD(0x070, PIN_OUTPUT_PULLUP | MUX_MODE3)       /* gpmc_a24.gpio_48 */
-                       OMAP4_IOPAD(0x072, PIN_OUTPUT_PULLUP | MUX_MODE3)       /* gpmc_a25.gpio_49 */
                >;
        };
 
                        OMAP4_IOPAD(0x114, PIN_INPUT_PULLUP | MUX_MODE3)        /* gpio_121 */
                >;
        };
+
+       bt_pins: bt-pins {
+               pinctrl-single,pins = <
+                       OMAP4_IOPAD(0x06c, PIN_OUTPUT | MUX_MODE3)        /* gpmc_a22.gpio_46 - BTEN */
+                       OMAP4_IOPAD(0x072, PIN_OUTPUT_PULLUP | MUX_MODE3) /* gpmc_a25.gpio_49 - BTWAKEUP */
+               >;
+       };
+
+       uart2_pins: uart2-pins {
+               pinctrl-single,pins = <
+                       OMAP4_IOPAD(0x118, PIN_INPUT_PULLUP | MUX_MODE0)  /* uart2_cts.uart2_cts - HCI */
+                       OMAP4_IOPAD(0x11a, PIN_OUTPUT | MUX_MODE0)        /* uart2_rts.uart2_rts */
+                       OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE0)  /* uart2_rx.uart2_rx */
+                       OMAP4_IOPAD(0x11e, PIN_OUTPUT | MUX_MODE0)        /* uart2_tx.uart2_tx */
+               >;
+       };
 };
 
 &omap4_pmx_wkup {
                reg = <0x48>;
                /* IRQ# = 7 */
                interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; /* IRQ_SYS_1N cascaded to gic */
+               #clock-cells = <1>;
                system-power-controller;
        };
 
        non-removable;
        bus-width = <4>;
        cap-power-off-card;
+       mmc-pwrseq = <&wl12xx_pwrseq>;
 
        #address-cells = <1>;
        #size-cells = <0>;
 };
 
 &uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
        interrupts-extended = <&wakeupgen GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH
                               &omap4_pmx_core OMAP4_UART2_RX>;
+
+       bluetooth {
+               compatible = "ti,wl1271-st";
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_pins>;
+               enable-gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>;    /* GPIO_46 */
+               clocks = <&twl 0>;
+               clock-names = "ext_clock";
+       };
 };
 
 &uart3 {
index fe7b156d10ed03a43781f98871517f3c332fcb7c..a933fe560834bedd8dfb704a60efe91a098135f0 100644 (file)
                        OMAP4_IOPAD(0x0fc, PIN_INPUT_PULLUP | MUX_MODE3) /* gpio_113 */
                >;
        };
-
-       bt_pins: bt-pins {
-               pinctrl-single,pins = <
-                       OMAP4_IOPAD(0x06c, PIN_OUTPUT | MUX_MODE3)              /* gpmc_a22.gpio_46 - BTEN */
-                       OMAP4_IOPAD(0x072, PIN_OUTPUT_PULLUP | MUX_MODE3)       /* gpmc_a25.gpio_49 - BTWAKEUP */
-               >;
-       };
-
-       uart2_pins: uart2-pins {
-               pinctrl-single,pins = <
-                       OMAP4_IOPAD(0x118, PIN_INPUT_PULLUP | MUX_MODE0)        /* uart2_cts.uart2_cts - HCI */
-                       OMAP4_IOPAD(0x11a, PIN_OUTPUT | MUX_MODE0)              /* uart2_rts.uart2_rts */
-                       OMAP4_IOPAD(0x11c, PIN_INPUT_PULLUP | MUX_MODE0)        /* uart2_rx.uart2_rx */
-                       OMAP4_IOPAD(0x11e, PIN_OUTPUT | MUX_MODE0)              /* uart2_tx.uart2_tx */
-               >;
-       };
 };
 
 &led_wkgpio_pins {
 &gpio1_target {
         ti,no-reset-on-init;
 };
-
-&wl12xx_gpio {
-       pinctrl-single,pins = <
-               OMAP4_IOPAD(0x066, PIN_OUTPUT | MUX_MODE3)              /* gpmc_a19.gpio_43 */
-               OMAP4_IOPAD(0x070, PIN_OUTPUT_PULLUP | MUX_MODE3)       /* gpmc_a24.gpio_48 */
-       >;
-};
-
-&uart2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&uart2_pins &bt_pins>;
-       bluetooth: tiwi {
-               compatible = "ti,wl1271-st";
-               enable-gpios = <&gpio2 14 GPIO_ACTIVE_HIGH>;    /* GPIO_46 */
-       };
-};
index 3b505fe415ed9e0f27f27080ddfec561be7eadc4..9f6100c7c34d1ddaddf21930d1abe528c9ca9a36 100644 (file)
                                              "refclk_60m_ext_p1",
                                              "refclk_60m_ext_p2";
 
-                               usbhsohci: ohci@800 {
+                               usbhsohci: usb@800 {
                                        compatible = "ti,ohci-omap3";
                                        reg = <0x800 0x400>;
                                        interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
                                        remote-wakeup-connected;
                                };
 
-                               usbhsehci: ehci@c00 {
+                               usbhsehci: usb@c00 {
                                        compatible = "ti,ehci-omap";
                                        reg = <0xc00 0x400>;
                                        interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
index f23cb5ee11ae63222276c8ac178c52a6a3872c0c..d1dd37220d41becece5d24fbb19aa71b01723e35 100644 (file)
                        #gpio-cells = <2>;
                };
 
+               chipid@d8120000 {
+                       compatible = "via,vt8500-scc-id";
+                       reg = <0xd8120000 0x4>;
+               };
+
                pmc@d8130000 {
                        compatible = "via,vt8500-pmc";
                        reg = <0xd8130000 0x1000>;
                timer@d8130100 {
                        compatible = "via,vt8500-timer";
                        reg = <0xd8130100 0x28>;
-                       interrupts = <36>;
+                       interrupts = <36>, <37>, <38>, <39>;
                };
 
-               ehci@d8007900 {
+               usb@d8007900 {
                        compatible = "via,vt8500-ehci";
                        reg = <0xd8007900 0x200>;
                        interrupts = <43>;
index d9e1280372c55c5080d242014c2392eaf4335d11..2b1819f0c5412648a83cd3eeb495f68d2e4100ef 100644 (file)
                        #gpio-cells = <2>;
                };
 
+               chipid@d8120000 {
+                       compatible = "via,vt8500-scc-id";
+                       reg = <0xd8120000 0x4>;
+               };
+
                pmc@d8130000 {
                        compatible = "via,vt8500-pmc";
                        reg = <0xd8130000 0x1000>;
                timer@d8130100 {
                        compatible = "via,vt8500-timer";
                        reg = <0xd8130100 0x28>;
-                       interrupts = <36>;
+                       interrupts = <36>, <37>, <38>, <39>;
                };
 
-               ehci@d8007100 {
+               usb@d8007100 {
                        compatible = "via,vt8500-ehci";
                        reg = <0xd8007100 0x200>;
                        interrupts = <1>;
index 35d12d77efc0f91e3735b98b8ec1f25a62c9c22e..042eec78c085d19fc97d7f0f9721399c0716ff74 100644 (file)
                        #gpio-cells = <2>;
                };
 
+               chipid@d8120000 {
+                       compatible = "via,vt8500-scc-id";
+                       reg = <0xd8120000 0x4>;
+               };
+
                pmc@d8130000 {
                        compatible = "via,vt8500-pmc";
                        reg = <0xd8130000 0x1000>;
                timer@d8130100 {
                        compatible = "via,vt8500-timer";
                        reg = <0xd8130100 0x28>;
-                       interrupts = <36>;
+                       interrupts = <36>, <37>, <38>, <39>;
                };
 
-               ehci@d8007900 {
+               usb@d8007900 {
                        compatible = "via,vt8500-ehci";
                        reg = <0xd8007900 0x200>;
                        interrupts = <43>;
index b292f85d4e69b43d6eeb4525113265722a7b90af..56342aa1d993a43e7ee766f93151c6d456496262 100644 (file)
                        #gpio-cells = <2>;
                };
 
+               chipid@d8120000 {
+                       compatible = "via,vt8500-scc-id";
+                       reg = <0xd8120000 0x4>;
+               };
+
                pmc@d8130000 {
                        compatible = "via,vt8500-pmc";
                        reg = <0xd8130000 0x1000>;
                timer@d8130100 {
                        compatible = "via,vt8500-timer";
                        reg = <0xd8130100 0x28>;
-                       interrupts = <36>;
+                       interrupts = <36>, <37>, <38>, <39>;
                };
 
-               ehci@d8007900 {
+               usb@d8007900 {
                        compatible = "via,vt8500-ehci";
                        reg = <0xd8007900 0x200>;
                        interrupts = <26>;
index c61717ebb4f1f3523733241c4df11f741ad4ae14..03e72f28d31b1cfdcfa71ede93b8943971bae4e3 100644 (file)
                        #gpio-cells = <2>;
                };
 
+               chipid@d8120000 {
+                       compatible = "via,vt8500-scc-id";
+                       reg = <0xd8120000 0x4>;
+               };
+
                pmc@d8130000 {
                        compatible = "via,vt8500-pmc";
                        reg = <0xd8130000 0x1000>;
                timer@d8130100 {
                        compatible = "via,vt8500-timer";
                        reg = <0xd8130100 0x28>;
-                       interrupts = <36>;
+                       interrupts = <36>, <37>, <38>, <39>;
                };
 
-               ehci@d8007900 {
+               usb@d8007900 {
                        compatible = "via,vt8500-ehci";
                        reg = <0xd8007900 0x200>;
                        interrupts = <26>;
diff --git a/src/arm/vt8500/wm8950-apc-rock.dts b/src/arm/vt8500/wm8950-apc-rock.dts
new file mode 100644 (file)
index 0000000..58b3c8d
--- /dev/null
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2025 Alexey Charkov <alchark@gmail.com>
+ */
+
+/dts-v1/;
+/include/ "wm8950.dtsi"
+
+/ {
+       model = "VIA APC Rock";
+       compatible = "via,apc-rock", "wm,wm8950";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x20000000>;
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
diff --git a/src/arm/vt8500/wm8950.dtsi b/src/arm/vt8500/wm8950.dtsi
new file mode 100644 (file)
index 0000000..31fba05
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (C) 2025 Alexey Charkov <alchark@gmail.com>
+ */
+
+/* No differences have been discovered vs. WM8850, but chip markings differ */
+/include/ "wm8850.dtsi"
+
+/ {
+       compatible = "wm,wm8950";
+};
index d53b72d18242e3cee8b37c7b1b719d662fd6db8d..99d2c4f1fc5a9638f551c6d725eeea568943cc68 100644 (file)
        };
 };
 
+&en7581_pinctrl {
+       gpio-ranges = <&en7581_pinctrl 0 13 47>;
+
+       pcie0_rst_pins: pcie0-rst-pins {
+               conf {
+                       pins = "pcie_reset0";
+                       drive-open-drain = <1>;
+               };
+       };
+
+       pcie1_rst_pins: pcie1-rst-pins {
+               conf {
+                       pins = "pcie_reset1";
+                       drive-open-drain = <1>;
+               };
+       };
+};
+
+&pcie0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie0_rst_pins>;
+       status = "okay";
+};
+
+&pcie1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie1_rst_pins>;
+       status = "okay";
+};
+
 &i2c0 {
        status = "okay";
 };
index 26b13694091735da7af977e42f8f546d7d5cb078..536ece69b935add88fb73ca6bd3f1ecd842cad7a 100644 (file)
                        #reset-cells = <1>;
                };
 
+               pbus_csr: syscon@1fbe3400 {
+                       compatible = "airoha,en7581-pbus-csr", "syscon";
+                       reg = <0x0 0x1fbe3400 0x0 0xff>;
+               };
+
+               pciephy: phy@1fa5a000 {
+                       compatible = "airoha,en7581-pcie-phy";
+                       reg = <0x0 0x1fa5a000 0x0 0xfff>,
+                             <0x0 0x1fa5b000 0x0 0xfff>,
+                             <0x0 0x1fa5c000 0x0 0xfff>,
+                             <0x0 0x1fc10044 0x0 0x4>,
+                             <0x0 0x1fc30044 0x0 0x4>,
+                             <0x0 0x1fc15030 0x0 0x104>;
+                       reg-names = "csr-2l", "pma0", "pma1",
+                                   "p0-xr-dtime", "p1-xr-dtime",
+                                   "rx-aeq";
+                       #phy-cells = <0>;
+               };
+
+               pcie0: pcie@1fc00000 {
+                       compatible = "airoha,en7581-pcie";
+                       device_type = "pci";
+                       linux,pci-domain = <0>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       reg = <0x0 0x1fc00000 0x0 0x1670>;
+                       reg-names = "pcie-mac";
+
+                       clocks = <&scuclk EN7523_CLK_PCIE>;
+                       clock-names = "sys-ck";
+
+                       phys = <&pciephy>;
+                       phy-names = "pcie-phy";
+
+                       ranges = <0x02000000 0 0x20000000 0x0 0x20000000 0 0x4000000>;
+
+                       resets = <&scuclk EN7581_PCIE0_RST>,
+                                <&scuclk EN7581_PCIE1_RST>,
+                                <&scuclk EN7581_PCIE2_RST>;
+                       reset-names = "phy-lane0", "phy-lane1", "phy-lane2";
+
+                       mediatek,pbus-csr = <&pbus_csr 0x0 0x4>;
+
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                       bus-range = <0x00 0xff>;
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie_intc0 0>,
+                                       <0 0 0 2 &pcie_intc0 1>,
+                                       <0 0 0 3 &pcie_intc0 2>,
+                                       <0 0 0 4 &pcie_intc0 3>;
+
+                       status = "disabled";
+
+                       pcie_intc0: interrupt-controller {
+                               interrupt-controller;
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               pcie1: pcie@1fc20000 {
+                       compatible = "airoha,en7581-pcie";
+                       device_type = "pci";
+                       linux,pci-domain = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       reg = <0x0 0x1fc20000 0x0 0x1670>;
+                       reg-names = "pcie-mac";
+
+                       clocks = <&scuclk EN7523_CLK_PCIE>;
+                       clock-names = "sys-ck";
+
+                       phys = <&pciephy>;
+                       phy-names = "pcie-phy";
+
+                       ranges = <0x02000000 0 0x24000000 0x0 0x24000000 0 0x4000000>;
+
+                       resets = <&scuclk EN7581_PCIE0_RST>,
+                                <&scuclk EN7581_PCIE1_RST>,
+                                <&scuclk EN7581_PCIE2_RST>;
+                       reset-names = "phy-lane0", "phy-lane1", "phy-lane2";
+
+                       mediatek,pbus-csr = <&pbus_csr 0x8 0xc>;
+
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       bus-range = <0x00 0xff>;
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie_intc1 0>,
+                                       <0 0 0 2 &pcie_intc1 1>,
+                                       <0 0 0 3 &pcie_intc1 2>,
+                                       <0 0 0 4 &pcie_intc1 3>;
+
+                       status = "disabled";
+
+                       pcie_intc1: interrupt-controller {
+                               interrupt-controller;
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
                uart1: serial@1fbf0000 {
                        compatible = "ns16550";
                        reg = <0x0 0x1fbf0000 0x0 0x30>;
index f9f6fea03b74467f4a0bd8aa8414c7481a5c83a9..bd366389b2389d6909db64628cbfd53eaa1c0b6c 100644 (file)
                        interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc0_pins>;
+                       max-frequency = <150000000>;
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc1_pins>;
+                       max-frequency = <150000000>;
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
                        pinctrl-names = "default";
                        pinctrl-0 = <&mmc2_pins>;
+                       max-frequency = <150000000>;
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
diff --git a/src/arm64/allwinner/sun50i-a133-liontron-h-a133l.dts b/src/arm64/allwinner/sun50i-a133-liontron-h-a133l.dts
new file mode 100644 (file)
index 0000000..fe77178
--- /dev/null
@@ -0,0 +1,211 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Arm Ltd.
+ */
+
+/dts-v1/;
+
+#include "sun50i-a100.dtsi"
+#include "sun50i-a100-cpu-opp.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/{
+       model = "Liontron H-A133L";
+       compatible = "liontron,h-a133l", "allwinner,sun50i-a100";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led {
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&pio 7 16 GPIO_ACTIVE_LOW>; /* PH16 */
+               };
+       };
+
+       reg_vcc5v: vcc5v {
+               /* board wide 5V supply from a 12V->5V regulator */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       reg_usb1_vbus: regulator-usb1-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb1-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&reg_vcc5v>;
+               enable-active-high;
+               gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&mmc0 {
+       vmmc-supply = <&reg_dcdc1>;
+       cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
+       bus-width = <4>;
+       status = "okay";
+};
+
+&mmc2 {
+       vmmc-supply = <&reg_dcdc1>;
+       vqmmc-supply = <&reg_eldo1>;
+       cap-mmc-hw-reset;
+       non-removable;
+       bus-width = <8>;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&pio {
+       vcc-pb-supply = <&reg_dcdc1>;
+       vcc-pc-supply = <&reg_eldo1>;
+       vcc-pf-supply = <&reg_dcdc1>;
+       vcc-ph-supply = <&reg_dcdc1>;
+};
+
+&r_i2c0 {
+       status = "okay";
+
+       axp803: pmic@34 {
+               compatible = "x-powers,axp803";
+               reg = <0x34>;
+               interrupt-parent = <&r_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+#include "axp803.dtsi"
+
+&ac_power_supply {
+       status = "okay";
+};
+
+&reg_aldo1 {
+       regulator-always-on;
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+       regulator-name = "vcc-codec-avcc";
+};
+
+&reg_aldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+       regulator-name = "vcc-dram-1";
+};
+
+&reg_aldo3 {
+       regulator-always-on;
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+       regulator-name = "vcc-usb-pl";
+};
+
+&reg_dcdc1 {
+       regulator-always-on;
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+       regulator-name = "vcc-io-usb-pd-emmc";
+};
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <810000>;
+       regulator-max-microvolt = <1200000>;
+       regulator-name = "vdd-cpux";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <900000>;
+       regulator-max-microvolt = <900000>;
+       regulator-name = "vdd-usb-cpus";
+};
+
+&reg_dcdc4 {
+       regulator-always-on;
+       regulator-min-microvolt = <950000>;
+       regulator-max-microvolt = <950000>;
+       regulator-name = "vdd-sys";
+};
+
+&reg_dcdc5 {
+       regulator-always-on;
+       regulator-min-microvolt = <1100000>;
+       regulator-max-microvolt = <1100000>;
+       regulator-name = "vcc-dram";
+};
+
+/* DCDC6 unused */
+/* DLDO3 unused */
+/* DLDO4 unused */
+
+&reg_eldo1 {
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+       regulator-name = "vcc-pc-emmc";
+};
+
+/* ELDO2 unused */
+/* ELDO3 unused */
+
+&reg_fldo1 {
+       regulator-always-on;
+       regulator-min-microvolt = <900000>;
+       regulator-max-microvolt = <900000>;
+       regulator-name = "vdd-cpus-usb";
+};
+
+/* reg_drivevbus unused */
+/* dc1sw unused */
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pb_pins>;
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "host";       /* USB A type receptacle, always powered */
+       status = "okay";
+};
+
+&usbphy {
+       usb1_vbus-supply = <&reg_usb1_vbus>;
+       status = "okay";
+};
index 09e71fd60785735edc71144dd4348da97a9b3b87..3256acec1ff900733c93458ec661c5657855f33c 100644 (file)
        status = "okay";
 };
 
+/* On Wifi/BT connector */
+&mmc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+       vmmc-supply = <&reg_dldo4>;
+       vqmmc-supply = <&reg_eldo1>;
+       bus-width = <4>;
+       non-removable;
+       status = "disabled";
+};
+
 &ohci0 {
        status = "okay";
 };
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+       uart-has-rtscts;
        status = "disabled";
 };
 
index be2347c8f26769662c56223dce949442f49252b7..231e652cab67079ddc29faf21eb07774cfe6698d 100644 (file)
        };
 };
 
+/* On Wifi/BT connector */
+&mmc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+       vmmc-supply = <&reg_dldo4>;
+       vqmmc-supply = <&reg_eldo1>;
+       bus-width = <4>;
+       non-removable;
+       status = "disabled";
+};
+
 &mmc2 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc2_pins>;
        status = "okay";
 };
 
+/* On Wifi/BT connector, with RTS/CTS */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+       uart-has-rtscts;
+       status = "disabled";
+};
+
 /* On Pi-2 connector */
 &uart2 {
        pinctrl-names = "default";
index 17e6aef67aaf920ce0f0a3b25b0478fdfde4e760..7906b79c03898393d1e6f296b1a3d29c1982c775 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc1>;
+       status = "okay";
+};
+
 &ir {
        status = "okay";
 };
index d3caf27b6a55c59827048fa1d8004afc9770625f..01a29c1988a6c196aba6dcc48b45c8f155073e02 100644 (file)
@@ -16,7 +16,6 @@
                        reg = <0>;
                        enable-method = "psci";
                        clocks = <&ccu CLK_CPUX>;
-                       clock-latency-ns = <244144>; /* 8 32k periods */
                        #cooling-cells = <2>;
                };
 
@@ -26,7 +25,6 @@
                        reg = <1>;
                        enable-method = "psci";
                        clocks = <&ccu CLK_CPUX>;
-                       clock-latency-ns = <244144>; /* 8 32k periods */
                        #cooling-cells = <2>;
                };
 
@@ -36,7 +34,6 @@
                        reg = <2>;
                        enable-method = "psci";
                        clocks = <&ccu CLK_CPUX>;
-                       clock-latency-ns = <244144>; /* 8 32k periods */
                        #cooling-cells = <2>;
                };
 
@@ -46,7 +43,6 @@
                        reg = <3>;
                        enable-method = "psci";
                        clocks = <&ccu CLK_CPUX>;
-                       clock-latency-ns = <244144>; /* 8 32k periods */
                        #cooling-cells = <2>;
                };
        };
                        };
 
                        cooling-maps {
-                               cpu-hot-limit {
+                               map0 {
                                        trip = <&cpu_hot_trip>;
                                        cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
                                                         <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
index f005072c68a167913cb5e64859171ec1a3f3f0d3..dc7381c944c99437d47835e634e6fa178e4ae444 100644 (file)
        non-removable;
        status = "okay";
 
-       brcm: sdio-wifi@1 {
+       brcm: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                interrupt-parent = <&r_pio>;
index a3f65a45bd26635d29dafe785ec28641a1501a79..0911c537cc6b6918409d249d7923943ab29089b3 100644 (file)
@@ -28,7 +28,7 @@
        non-removable;
        status = "okay";
 
-       brcm: sdio-wifi@1 {
+       brcm: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                interrupt-parent = <&r_pio>;
index 2301c59b41b1880c3712fd17d12904dcd484a5c2..73e8604315c510b70f43cd7ee2a5607abba66682 100644 (file)
@@ -27,7 +27,6 @@
                        reg = <0>;
                        enable-method = "psci";
                        clocks = <&ccu CLK_CPUX>;
-                       clock-latency-ns = <244144>; /* 8 32k periods */
                        #cooling-cells = <2>;
                        i-cache-size = <0x8000>;
                        i-cache-line-size = <64>;
@@ -44,7 +43,6 @@
                        reg = <1>;
                        enable-method = "psci";
                        clocks = <&ccu CLK_CPUX>;
-                       clock-latency-ns = <244144>; /* 8 32k periods */
                        #cooling-cells = <2>;
                        i-cache-size = <0x8000>;
                        i-cache-line-size = <64>;
@@ -61,7 +59,6 @@
                        reg = <2>;
                        enable-method = "psci";
                        clocks = <&ccu CLK_CPUX>;
-                       clock-latency-ns = <244144>; /* 8 32k periods */
                        #cooling-cells = <2>;
                        i-cache-size = <0x8000>;
                        i-cache-line-size = <64>;
@@ -78,7 +75,6 @@
                        reg = <3>;
                        enable-method = "psci";
                        clocks = <&ccu CLK_CPUX>;
-                       clock-latency-ns = <244144>; /* 8 32k periods */
                        #cooling-cells = <2>;
                        i-cache-size = <0x8000>;
                        i-cache-line-size = <64>;
index d12b01c5f41b69029de04bc006be35c1ded3aeaa..bebfeb2a337a365b8cbbf1e8817a5713e42ca892 100644 (file)
        cpu-supply = <&reg_dcdc2>;
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc1>;
+       status = "okay";
+};
+
 &mmc0 {
        vmmc-supply = <&reg_dldo1>;
        /* Card detection pin is not connected */
index 908fa3b847a6666614dcd9c21fb9f5ac7573f286..a8644fb52b04ef36a5aec8ca9abe137475dfbf56 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       status = "okay";
+};
+
 &mdio0 {
        ext_rgmii_phy: ethernet-phy@1 {
                compatible = "ethernet-phy-ieee802.3-c22";
index a360d8567f95589832f4a402a88c1aae11ade033..f2e3300e078a90ce9d27f1e817e43856f2a83888 100644 (file)
        phy-supply = <&reg_dcdce>;
 };
 
+&gpu {
+       mali-supply = <&reg_dcdcc>;
+};
+
 &mmc0 {
        vmmc-supply = <&reg_dcdce>;
 };
index 968960ebf1d18c4aa09cea60ae1aec1c4cfb1292..085f3e4e8eaa806f138ab3cbd7f7f054cb1fb1a1 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdcc>;
+       status = "okay";
+};
+
 &ir {
        status = "okay";
 };
index cdce3dcb8ec024064ea8caa2f7638e2fde1ff532..ceedae9e399b6e975f7f5ca362b528eeb0dd4491 100644 (file)
                #size-cells = <1>;
                ranges = <0x0 0x0 0x0 0x40000000>;
 
+               gpu: gpu@1800000 {
+                       compatible = "allwinner,sun50i-h616-mali",
+                                    "arm,mali-bifrost";
+                       reg = <0x1800000 0x40000>;
+                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "job", "mmu", "gpu";
+                       clocks = <&ccu CLK_GPU0>, <&ccu CLK_BUS_GPU>;
+                       clock-names = "core", "bus";
+                       power-domains = <&prcm_ppu 2>;
+                       resets = <&ccu RST_BUS_GPU>;
+                       status = "disabled";
+               };
+
                crypto: crypto@1904000 {
                        compatible = "allwinner,sun50i-h616-crypto";
                        reg = <0x01904000 0x800>;
                        #reset-cells = <1>;
                };
 
+               prcm_ppu: power-controller@7010250 {
+                       compatible = "allwinner,sun50i-h616-prcm-ppu";
+                       reg = <0x07010250 0x10>;
+                       #power-domain-cells = <1>;
+               };
+
                nmi_intc: interrupt-controller@7010320 {
                        compatible = "allwinner,sun50i-h616-nmi",
                                     "allwinner,sun9i-a80-nmi";
index e92d150aaf1c154dd6f5d8e973a9f18762a71e38..3f416d129b7278fa3d73064a073a983d6cf3aa64 100644 (file)
        cpu-supply = <&reg_dcdc2>;
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc1>;
+       status = "okay";
+};
+
 &mmc2 {
        pinctrl-names = "default";
        pinctrl-0 = <&mmc2_pins>;
index a0fe7a9afb77c246d846ef10e6c483d57b268287..b340bbcb710decaaa69866b5897d814bcf0f7f92 100644 (file)
 
 /* USB 2 & 3 are on the FPC connector (or the exansion board) */
 
+&gpu {
+       mali-supply = <&reg_dcdc1>;
+       status = "okay";
+};
+
 &mmc0 {
        cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;  /* PF6 */
        bus-width = <4>;
index e1cd7572a14cebf22fd53689f99035f9e0cbcd91..c51d4d9120dee94dd258612a207b0b704d60ec45 100644 (file)
        motorcomm,clk-out-frequency-hz = <125000000>;
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc1>;
+};
+
 &mmc0 {
        /*
         * The schematic shows the card detect pin wired up to PF6, via an
index f828ca1ce51ef499cf8f03f929353816d97f876b..efe0faa252f5e4db617b60919a884bac41613062 100644 (file)
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc1>;
+       status = "okay";
+};
+
 &ir {
        status = "okay";
 };
diff --git a/src/arm64/allwinner/sun50i-h618-yuzukihd-chameleon.dts b/src/arm64/allwinner/sun50i-h618-yuzukihd-chameleon.dts
new file mode 100644 (file)
index 0000000..eae5690
--- /dev/null
@@ -0,0 +1,222 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2024 Arm Ltd.
+ */
+
+/dts-v1/;
+
+#include "sun50i-h616.dtsi"
+#include "sun50i-h616-cpu-opp.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       model = "Yuzuki Chameleon";
+       compatible = "yuzukihd,chameleon", "allwinner,sun50i-h618";
+
+       aliases {
+               ethernet1 = &sdio_wifi;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       reg_vcc5v: vcc5v {
+               /* board wide 5V supply directly from the USB-C socket */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       wifi_pwrseq: pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&rtc CLK_OSC32K_FANOUT>;
+               clock-names = "ext_clock";
+               pinctrl-0 = <&x32clk_fanout_pin>;
+               pinctrl-names = "default";
+               reset-gpios = <&pio 6 11 GPIO_ACTIVE_LOW>; /* PG11 */
+       };
+};
+
+&codec {
+       allwinner,audio-routing = "Line Out", "LINEOUT";
+       status = "okay";
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&ehci2 {
+       status = "okay";
+};
+
+&ehci3 {
+       status = "okay";
+};
+
+&mmc0 {
+       bus-width = <4>;
+       cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;  /* PF6 */
+       disable-wp;
+       vmmc-supply = <&reg_dldo1>;
+       status = "okay";
+};
+
+&mmc1 {
+       bus-width = <4>;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       non-removable;
+       vmmc-supply = <&reg_dldo1>;
+       vqmmc-supply = <&reg_dldo1>;
+       status = "okay";
+
+       sdio_wifi: wifi@1 {
+               reg = <1>;
+               interrupt-parent = <&pio>;
+               interrupts = <6 12 IRQ_TYPE_LEVEL_LOW>;  /* PG12 */
+               interrupt-names = "host-wake";
+       };
+};
+
+&mmc2 {
+       bus-width = <8>;
+       cap-mmc-hw-reset;
+       mmc-ddr-3_3v;
+       non-removable;
+       vmmc-supply = <&reg_dldo1>;
+       vqmmc-supply = <&reg_dldo1>;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&ohci2 {
+       status = "okay";
+};
+
+&ohci3 {
+       status = "okay";
+};
+
+&pio {
+       vcc-pc-supply = <&reg_dldo1>;
+       vcc-pf-supply = <&reg_dldo1>;   /* via VCC_IO */
+       vcc-pg-supply = <&reg_dldo1>;
+       vcc-ph-supply = <&reg_dldo1>;   /* via VCC_IO */
+       vcc-pi-supply = <&reg_dldo1>;
+};
+
+&r_i2c {
+       status = "okay";
+
+       axp313: pmic@36 {
+               compatible = "x-powers,axp313a";
+               reg = <0x36>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+               interrupt-parent = <&pio>;
+               interrupts = <2 2 IRQ_TYPE_LEVEL_LOW>;  /* PC2 */
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+
+               regulators {
+                       /* Supplies VCC-PLL, so needs to be always on. */
+                       reg_aldo1: aldo1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc1v8";
+                       };
+
+                       /* Supplies VCC-IO, so needs to be always on. */
+                       reg_dldo1: dldo1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc3v3";
+                       };
+
+                       reg_dcdc1: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <810000>;
+                               regulator-max-microvolt = <990000>;
+                               regulator-name = "vdd-gpu-sys";
+                       };
+
+                       reg_dcdc2: dcdc2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <810000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-name = "vdd-cpu";
+                       };
+
+                       reg_dcdc3: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1500000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-name = "vdd-dram";
+                       };
+               };
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_ph_pins>;
+       status = "okay";
+};
+
+/* Connected to the Bluetooth UART pins of the XR829 Wifi/BT chip. */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&usbotg {
+       /*
+        * PHY0 pins are connected to a USB-C socket, but a role switch
+        * is not implemented: both CC pins are pulled to GND.
+        * The VBUS pins power the device, so a fixed peripheral mode
+        * is the best choice.
+        * The board can be powered via GPIOs, in this case port0 *can*
+        * act as a host (with a cable/adapter ignoring CC), as VBUS is
+        * then provided by the GPIOs. Any user of this setup would
+        * need to adjust the DT accordingly: dr_mode set to "host",
+        * enabling OHCI0 and EHCI0.
+        */
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usbphy {
+       usb0_id_det-gpios = <&pio 6 18 GPIO_ACTIVE_HIGH>; /* PG18 */
+       usb0_vbus-supply = <&reg_vcc5v>;
+       usb1_vbus-supply = <&reg_vcc5v>;
+       usb2_vbus-supply = <&reg_vcc5v>;
+       usb3_vbus-supply = <&reg_vcc5v>;
+       status = "okay";
+};
index 7e17ca07892dd003a13b217cc8b6c8f480dda961..1a750c5f6faca7ff0f2217ea1bb9b20b93147395 100644 (file)
 };
 
 &codec {
-       allwinner,audio-routing = "Line Out", "LINEOUT";
+       /* Both speakers and headphone jack connected to 74HC4052D analog mux*/
+       allwinner,audio-routing = "Speaker", "LINEOUT",
+                                 "Headphone", "LINEOUT";
        allwinner,pa-gpios = <&pio 8 5 GPIO_ACTIVE_HIGH>; // PI5
+       hp-det-gpios = <&pio 8 3 GPIO_ACTIVE_HIGH>; // PI3
        status = "okay";
 };
 
        status = "okay";
 };
 
+&gpu {
+       mali-supply = <&reg_dcdc2>;
+       status = "okay";
+};
+
 &mmc0 {
        vmmc-supply = <&reg_cldo3>;
        disable-wp;
diff --git a/src/arm64/allwinner/sun55i-a523.dtsi b/src/arm64/allwinner/sun55i-a523.dtsi
new file mode 100644 (file)
index 0000000..51cd148
--- /dev/null
@@ -0,0 +1,639 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
+// Copyright (C) 2023-2024 Arm Ltd.
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/sun6i-rtc.h>
+#include <dt-bindings/clock/sun55i-a523-ccu.h>
+#include <dt-bindings/clock/sun55i-a523-r-ccu.h>
+#include <dt-bindings/reset/sun55i-a523-ccu.h>
+#include <dt-bindings/reset/sun55i-a523-r-ccu.h>
+
+/ {
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x000>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@100 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x100>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@200 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x200>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@300 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x300>;
+                       enable-method = "psci";
+               };
+
+               cpu4: cpu@400 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x400>;
+                       enable-method = "psci";
+               };
+
+               cpu5: cpu@500 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x500>;
+                       enable-method = "psci";
+               };
+
+               cpu6: cpu@600 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x600>;
+                       enable-method = "psci";
+               };
+
+               cpu7: cpu@700 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x700>;
+                       enable-method = "psci";
+               };
+       };
+
+       osc24M: osc24M-clk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <24000000>;
+               clock-output-names = "osc24M";
+       };
+
+       pmu {
+               compatible = "arm,cortex-a55-pmu";
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       psci {
+               compatible = "arm,psci-0.2";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               arm,no-tick-in-suspend;
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x0 0x0 0x40000000>;
+
+               pio: pinctrl@2000000 {
+                       compatible = "allwinner,sun55i-a523-pinctrl";
+                       reg = <0x2000000 0x800>;
+                       interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_APB1>, <&osc24M>, <&rtc CLK_OSC32K>;
+                       clock-names = "apb", "hosc", "losc";
+                       gpio-controller;
+                       #gpio-cells = <3>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+
+                       rgmii0_pins: rgmii0-pins {
+                               pins = "PH0", "PH1", "PH2", "PH3", "PH4",
+                                      "PH5", "PH6", "PH7", "PH9", "PH10",
+                                      "PH14", "PH15", "PH16", "PH17", "PH18";
+                               allwinner,pinmux = <5>;
+                               function = "gmac0";
+                               drive-strength = <40>;
+                               bias-disable;
+                       };
+
+                       mmc0_pins: mmc0-pins {
+                               pins = "PF0" ,"PF1", "PF2", "PF3", "PF4", "PF5";
+                               allwinner,pinmux = <2>;
+                               function = "mmc0";
+                               drive-strength = <30>;
+                               bias-pull-up;
+                       };
+
+                       /omit-if-no-ref/
+                       mmc1_pins: mmc1-pins {
+                               pins = "PG0" ,"PG1", "PG2", "PG3", "PG4", "PG5";
+                               allwinner,pinmux = <2>;
+                               function = "mmc1";
+                               drive-strength = <30>;
+                               bias-pull-up;
+                       };
+
+                       mmc2_pins: mmc2-pins {
+                               pins = "PC0", "PC1" ,"PC5", "PC6", "PC8",
+                                      "PC9", "PC10", "PC11", "PC13", "PC14",
+                                      "PC15", "PC16";
+                               allwinner,pinmux = <3>;
+                               function = "mmc2";
+                               drive-strength = <30>;
+                               bias-pull-up;
+                       };
+
+                       uart0_pb_pins: uart0-pb-pins {
+                               pins = "PB9", "PB10";
+                               allwinner,pinmux = <2>;
+                               function = "uart0";
+                       };
+               };
+
+               ccu: clock-controller@2001000 {
+                       compatible = "allwinner,sun55i-a523-ccu";
+                       reg = <0x02001000 0x1000>;
+                       clocks = <&osc24M>, <&rtc CLK_OSC32K>,
+                                <&rtc CLK_IOSC>, <&rtc CLK_OSC32K_FANOUT>;
+                       clock-names = "hosc", "losc",
+                                     "iosc", "losc-fanout";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
+               mmc0: mmc@4020000 {
+                       compatible = "allwinner,sun55i-a523-mmc",
+                                    "allwinner,sun20i-d1-mmc";
+                       reg = <0x04020000 0x1000>;
+                       clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
+                       clock-names = "ahb", "mmc";
+                       resets = <&ccu RST_BUS_MMC0>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc0_pins>;
+                       status = "disabled";
+
+                       max-frequency = <150000000>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       cap-sdio-irq;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               mmc1: mmc@4021000 {
+                       compatible = "allwinner,sun55i-a523-mmc",
+                                    "allwinner,sun20i-d1-mmc";
+                       reg = <0x04021000 0x1000>;
+                       clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
+                       clock-names = "ahb", "mmc";
+                       resets = <&ccu RST_BUS_MMC1>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc1_pins>;
+                       status = "disabled";
+
+                       max-frequency = <150000000>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       cap-sdio-irq;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               mmc2: mmc@4022000 {
+                       compatible = "allwinner,sun55i-a523-mmc",
+                                    "allwinner,sun20i-d1-mmc";
+                       reg = <0x04022000 0x1000>;
+                       clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
+                       clock-names = "ahb", "mmc";
+                       resets = <&ccu RST_BUS_MMC2>;
+                       reset-names = "ahb";
+                       interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mmc2_pins>;
+                       status = "disabled";
+
+                       max-frequency = <150000000>;
+                       cap-sd-highspeed;
+                       cap-mmc-highspeed;
+                       cap-sdio-irq;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               wdt: watchdog@2050000 {
+                       compatible = "allwinner,sun55i-a523-wdt";
+                       reg = <0x2050000 0x20>;
+                       interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&osc24M>, <&rtc CLK_OSC32K>;
+                       clock-names = "hosc", "losc";
+                       status = "okay";
+               };
+
+               uart0: serial@2500000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x02500000 0x400>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&ccu CLK_BUS_UART0>;
+                       resets = <&ccu RST_BUS_UART0>;
+                       status = "disabled";
+               };
+
+               uart1: serial@2500400 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x02500400 0x400>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&ccu CLK_BUS_UART1>;
+                       resets = <&ccu RST_BUS_UART1>;
+                       status = "disabled";
+               };
+
+               uart2: serial@2500800 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x02500800 0x400>;
+                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&ccu CLK_BUS_UART2>;
+                       resets = <&ccu RST_BUS_UART2>;
+                       status = "disabled";
+               };
+
+               uart3: serial@2500c00 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x02500c00 0x400>;
+                       interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&ccu CLK_BUS_UART3>;
+                       resets = <&ccu RST_BUS_UART3>;
+                       status = "disabled";
+               };
+
+               uart4: serial@2501000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x02501000 0x400>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&ccu CLK_BUS_UART4>;
+                       resets = <&ccu RST_BUS_UART4>;
+                       status = "disabled";
+               };
+
+               uart5: serial@2501400 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x02501400 0x400>;
+                       interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&ccu CLK_BUS_UART5>;
+                       resets = <&ccu RST_BUS_UART5>;
+                       status = "disabled";
+               };
+
+               uart6: serial@2501800 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x02501800 0x400>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&ccu CLK_BUS_UART6>;
+                       resets = <&ccu RST_BUS_UART6>;
+                       status = "disabled";
+               };
+
+               uart7: serial@2501c00 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x02501c00 0x400>;
+                       interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       clocks = <&ccu CLK_BUS_UART7>;
+                       resets = <&ccu RST_BUS_UART7>;
+                       status = "disabled";
+               };
+
+               i2c0: i2c@2502000 {
+                       compatible = "allwinner,sun55i-a523-i2c",
+                                    "allwinner,sun8i-v536-i2c",
+                                    "allwinner,sun6i-a31-i2c";
+                       reg = <0x2502000 0x400>;
+                       interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2C0>;
+                       resets = <&ccu RST_BUS_I2C0>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c1: i2c@2502400 {
+                       compatible = "allwinner,sun55i-a523-i2c",
+                                    "allwinner,sun8i-v536-i2c",
+                                    "allwinner,sun6i-a31-i2c";
+                       reg = <0x2502400 0x400>;
+                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2C1>;
+                       resets = <&ccu RST_BUS_I2C1>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c2: i2c@2502800 {
+                       compatible = "allwinner,sun55i-a523-i2c",
+                                    "allwinner,sun8i-v536-i2c",
+                                    "allwinner,sun6i-a31-i2c";
+                       reg = <0x2502800 0x400>;
+                       interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2C2>;
+                       resets = <&ccu RST_BUS_I2C2>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c3: i2c@2502c00 {
+                       compatible = "allwinner,sun55i-a523-i2c",
+                                    "allwinner,sun8i-v536-i2c",
+                                    "allwinner,sun6i-a31-i2c";
+                       reg = <0x2502c00 0x400>;
+                       interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2C3>;
+                       resets = <&ccu RST_BUS_I2C3>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c4: i2c@2503000 {
+                       compatible = "allwinner,sun55i-a523-i2c",
+                                    "allwinner,sun8i-v536-i2c",
+                                    "allwinner,sun6i-a31-i2c";
+                       reg = <0x2503000 0x400>;
+                       interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2C4>;
+                       resets = <&ccu RST_BUS_I2C4>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c5: i2c@2503400 {
+                       compatible = "allwinner,sun55i-a523-i2c",
+                                    "allwinner,sun8i-v536-i2c",
+                                    "allwinner,sun6i-a31-i2c";
+                       reg = <0x2503400 0x400>;
+                       interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_I2C5>;
+                       resets = <&ccu RST_BUS_I2C5>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               syscon: syscon@3000000 {
+                       compatible = "allwinner,sun55i-a523-system-control",
+                                    "allwinner,sun50i-a64-system-control";
+                       reg = <0x03000000 0x1000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+               };
+
+               gic: interrupt-controller@3400000 {
+                       compatible = "arm,gic-v3";
+                       #address-cells = <1>;
+                       #interrupt-cells = <3>;
+                       #size-cells = <1>;
+                       ranges;
+                       interrupt-controller;
+                       reg = <0x3400000 0x10000>,
+                             <0x3460000 0x100000>;
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                       dma-noncoherent;
+
+                       its: msi-controller@3440000 {
+                               compatible = "arm,gic-v3-its";
+                               reg = <0x3440000 0x20000>;
+                               msi-controller;
+                               #msi-cells = <1>;
+                               dma-noncoherent;
+                       };
+               };
+
+               usb_otg: usb@4100000 {
+                       compatible = "allwinner,sun55i-a523-musb",
+                                    "allwinner,sun8i-a33-musb";
+                       reg = <0x4100000 0x400>;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "mc";
+                       clocks = <&ccu CLK_BUS_OTG>;
+                       resets = <&ccu RST_BUS_OTG>;
+                       extcon = <&usbphy 0>;
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               usbphy: phy@4100400 {
+                       compatible = "allwinner,sun55i-a523-usb-phy",
+                                    "allwinner,sun20i-d1-usb-phy";
+                       reg = <0x4100400 0x100>,
+                             <0x4101800 0x100>,
+                             <0x4200800 0x100>;
+                       reg-names = "phy_ctrl",
+                                   "pmu0",
+                                   "pmu1";
+                       clocks = <&osc24M>,
+                                <&osc24M>;
+                       clock-names = "usb0_phy",
+                                     "usb1_phy";
+                       resets = <&ccu RST_USB_PHY0>,
+                                <&ccu RST_USB_PHY1>;
+                       reset-names = "usb0_reset",
+                                     "usb1_reset";
+                       status = "disabled";
+                       #phy-cells = <1>;
+               };
+
+               ehci0: usb@4101000 {
+                       compatible = "allwinner,sun55i-a523-ehci",
+                                    "generic-ehci";
+                       reg = <0x4101000 0x100>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_OHCI0>,
+                                <&ccu CLK_BUS_EHCI0>,
+                                <&ccu CLK_USB_OHCI0>;
+                       resets = <&ccu RST_BUS_OHCI0>,
+                                <&ccu RST_BUS_EHCI0>;
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               ohci0: usb@4101400 {
+                       compatible = "allwinner,sun55i-a523-ohci",
+                                    "generic-ohci";
+                       reg = <0x4101400 0x100>;
+                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_OHCI0>,
+                                <&ccu CLK_USB_OHCI0>;
+                       resets = <&ccu RST_BUS_OHCI0>;
+                       phys = <&usbphy 0>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               ehci1: usb@4200000 {
+                       compatible = "allwinner,sun55i-a523-ehci",
+                                    "generic-ehci";
+                       reg = <0x4200000 0x100>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_OHCI1>,
+                                <&ccu CLK_BUS_EHCI1>,
+                                <&ccu CLK_USB_OHCI1>;
+                       resets = <&ccu RST_BUS_OHCI1>,
+                                <&ccu RST_BUS_EHCI1>;
+                       phys = <&usbphy 1>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               ohci1: usb@4200400 {
+                       compatible = "allwinner,sun55i-a523-ohci",
+                                    "generic-ohci";
+                       reg = <0x4200400 0x100>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&ccu CLK_BUS_OHCI1>,
+                                <&ccu CLK_USB_OHCI1>;
+                       resets = <&ccu RST_BUS_OHCI1>;
+                       phys = <&usbphy 1>;
+                       phy-names = "usb";
+                       status = "disabled";
+               };
+
+               gmac0: ethernet@4500000 {
+                       compatible = "allwinner,sun55i-a523-gmac0",
+                                    "allwinner,sun50i-a64-emac";
+                       reg = <0x04500000 0x10000>;
+                       clocks = <&ccu CLK_BUS_EMAC0>;
+                       clock-names = "stmmaceth";
+                       resets = <&ccu RST_BUS_EMAC0>;
+                       reset-names = "stmmaceth";
+                       interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&rgmii0_pins>;
+                       syscon = <&syscon>;
+                       status = "disabled";
+
+                       mdio0: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
+               r_ccu: clock-controller@7010000 {
+                       compatible = "allwinner,sun55i-a523-r-ccu";
+                       reg = <0x7010000 0x250>;
+                       clocks = <&osc24M>,
+                                <&rtc CLK_OSC32K>,
+                                <&rtc CLK_IOSC>,
+                                <&ccu CLK_PLL_PERIPH0_200M>,
+                                <&ccu CLK_PLL_AUDIO0_4X>;
+                       clock-names = "hosc",
+                                     "losc",
+                                     "iosc",
+                                     "pll-periph",
+                                     "pll-audio";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
+               nmi_intc: interrupt-controller@7010320 {
+                       compatible = "allwinner,sun55i-a523-nmi";
+                       reg = <0x07010320 0xc>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               r_pio: pinctrl@7022000 {
+                       compatible = "allwinner,sun55i-a523-r-pinctrl";
+                       reg = <0x7022000 0x800>;
+                       interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&r_ccu CLK_R_APB0>,
+                                <&osc24M>,
+                                <&rtc CLK_OSC32K>;
+                       clock-names = "apb", "hosc", "losc";
+                       gpio-controller;
+                       #gpio-cells = <3>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+
+                       r_i2c_pins: r-i2c-pins {
+                               pins = "PL0" ,"PL1";
+                               allwinner,pinmux = <2>;
+                               function = "r_i2c0";
+                       };
+               };
+
+               r_i2c0: i2c@7081400 {
+                       compatible = "allwinner,sun55i-a523-i2c",
+                                    "allwinner,sun8i-v536-i2c",
+                                    "allwinner,sun6i-a31-i2c";
+                       reg = <0x07081400 0x400>;
+                       interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&r_ccu CLK_BUS_R_I2C0>;
+                       resets = <&r_ccu RST_BUS_R_I2C0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&r_i2c_pins>;
+                       status = "disabled";
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               rtc: rtc@7090000 {
+                       compatible = "allwinner,sun55i-a523-rtc",
+                                    "allwinner,sun50i-r329-rtc";
+                       reg = <0x7090000 0x400>;
+                       interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&r_ccu CLK_BUS_R_RTC>,
+                                <&osc24M>,
+                                <&r_ccu CLK_R_AHB>;
+                       clock-names = "bus", "hosc", "ahb";
+                       #clock-cells = <1>;
+               };
+       };
+};
diff --git a/src/arm64/allwinner/sun55i-a527-cubie-a5e.dts b/src/arm64/allwinner/sun55i-a527-cubie-a5e.dts
new file mode 100644 (file)
index 0000000..8bc0f2c
--- /dev/null
@@ -0,0 +1,318 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
+// Copyright (C) 2025 Arm Ltd.
+
+/dts-v1/;
+
+#include "sun55i-a523.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "Radxa Cubie A5E";
+       compatible = "radxa,cubie-a5e", "allwinner,sun55i-a527";
+
+       aliases {
+               ethernet0 = &gmac0;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       ext_osc32k: ext-osc32k-clk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <32768>;
+               clock-output-names = "ext_osc32k";
+       };
+
+       reg_vcc5v: vcc5v {
+               /* board wide 5V supply from the USB-C connector */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       reg_usb_vbus: vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&reg_vcc5v>;
+               gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>;   /* PL8 */
+               enable-active-high;
+       };
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&gmac0 {
+       phy-mode = "rgmii-id";
+       phy-handle = <&ext_rgmii_phy>;
+       phy-supply = <&reg_cldo3>;
+
+       allwinner,tx-delay-ps = <300>;
+       allwinner,rx-delay-ps = <400>;
+
+       status = "okay";
+};
+
+&mdio0 {
+       ext_rgmii_phy: ethernet-phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <1>;
+       };
+};
+
+&mmc0 {
+       vmmc-supply = <&reg_cldo3>;
+       cd-gpios = <&pio 5 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PF6 */
+       bus-width = <4>;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&pio {
+       vcc-pb-supply = <&reg_cldo3>;   /* via VCC-IO */
+       vcc-pc-supply = <&reg_cldo1>;
+       vcc-pd-supply = <&reg_cldo3>;
+       vcc-pe-supply = <&reg_aldo2>;
+       vcc-pf-supply = <&reg_cldo3>;   /* actually switchable */
+       vcc-pg-supply = <&reg_bldo1>;
+       vcc-ph-supply = <&reg_cldo3>;   /* via VCC-IO */
+       vcc-pi-supply = <&reg_cldo3>;
+       vcc-pj-supply = <&reg_cldo4>;
+       vcc-pk-supply = <&reg_cldo1>;
+};
+
+&r_i2c0 {
+       status = "okay";
+
+       axp717: pmic@34 {
+               compatible = "x-powers,axp717";
+               reg = <0x34>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+               vin4-supply = <&reg_vcc5v>;
+               aldoin-supply = <&reg_vcc5v>;
+               bldoin-supply = <&reg_vcc5v>;
+               cldoin-supply = <&reg_vcc5v>;
+
+               regulators {
+                       /* Supplies the "little" cluster (1.4 GHz cores) */
+                       reg_dcdc1: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vdd-cpul";
+                       };
+
+                       reg_dcdc2: dcdc2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <920000>;
+                               regulator-max-microvolt = <920000>;
+                               regulator-name = "vdd-gpu-sys";
+                       };
+
+                       reg_dcdc3: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-name = "vdd-dram";
+                       };
+
+                       reg_aldo1: aldo1 {
+                               /* not connected */
+                       };
+
+                       reg_aldo2: aldo2 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pe";
+                       };
+
+                       reg_aldo3: aldo3 {
+                               /* supplies the I2C pins for this PMIC */
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-pl-usb";
+                       };
+
+                       reg_aldo4: aldo4 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pll-dxco-avcc";
+                       };
+
+                       reg_bldo1: bldo1 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pg-iowifi";
+                       };
+
+                       reg_bldo2: bldo2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pm-lpddr4";
+                       };
+
+                       reg_bldo3: bldo3 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-mipi-cam";
+                       };
+
+                       reg_bldo4: bldo4 {
+                               /* not connected */
+                       };
+
+                       reg_cldo1: cldo1 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pc-and-their-dog";
+                       };
+
+                       reg_cldo2: cldo2 {
+                               /* not connected */
+                       };
+
+                       reg_cldo3: cldo3 {
+                               /* IO, USB-2, 3V3, card, NAND, sensor, PI */
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-io-mmc-spi-ana";
+                       };
+
+                       reg_cldo4: cldo4 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-pj-phy";
+                       };
+
+                       reg_cpusldo: cpusldo {
+                               /* supplies the management core */
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd-cpus";
+                       };
+               };
+       };
+
+       axp323: pmic@36 {
+               compatible = "x-powers,axp323";
+               reg = <0x36>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               status = "okay";
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+
+               regulators {
+                       aldo1 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-mipi-dsi";
+                       };
+
+                       dldo1 {
+                               /* not connected */
+                       };
+
+                       /* Supplies the "big" cluster (1.8 GHz cores) */
+                       reg_dcdc1_323: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vdd-cpub";
+                       };
+
+                       /* DCDC2 is polyphased with DCDC1 */
+
+                       /* RISC-V management core supply */
+                       reg_dcdc3_323: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd-dnr";
+                       };
+               };
+       };
+};
+
+&r_pio {
+/*
+ * Specifying the supply would create a circular dependency.
+ *
+ *     vcc-pl-supply = <&reg_aldo3>;
+ */
+       vcc-pm-supply = <&reg_aldo3>;
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pb_pins>;
+       status = "okay";
+};
+
+&usb_otg {
+       /*
+        * The USB-C port is the primary power supply, so in this configuration
+        * relies on the other end of the USB cable to supply the VBUS power.
+        * So use this port in peripheral mode.
+        * It is possible to supply the board with the 5V pins on the GPIO
+        * header, and since the DCIN_5V line is hardwired to the USB-C VBUS
+        * pins, the port turns into a host port, unconditionally supplying
+        * power. The dr_mode property should be changed to "host" here, if
+        * users choose this setup.
+        */
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+/*
+ * The schematic describes USB0_ID (PL10), measuring VBUS_5V, which looks to
+ * be always on. Also there is USB-VBUSDET (PL2), which is measuring the same
+ * VBUS_5V. There is also DCIN_DET, which measures DCIN_5V, so the power
+ * input rail.
+ * None of them seem to make any sense in relation to detecting USB devices
+ * or whether there is power provided via any USB pins: they would always
+ * report high, otherwise the system wouldn't be running.
+ * The AXP717C provides proper USB-C CC pin functionality, but the PMIC is
+ * not connected to those pins of the USB-C connector.
+ */
+&usbphy {
+       usb0_vbus-supply = <&reg_vcc5v>;
+       usb1_vbus-supply = <&reg_usb_vbus>;
+       status = "okay";
+};
diff --git a/src/arm64/allwinner/sun55i-h728-x96qpro+.dts b/src/arm64/allwinner/sun55i-h728-x96qpro+.dts
new file mode 100644 (file)
index 0000000..59db103
--- /dev/null
@@ -0,0 +1,287 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
+// Copyright (C) 2024 Arm Ltd.
+
+/dts-v1/;
+
+#include "sun55i-a523.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "X96Q Pro+";
+       compatible = "amediatech,x96q-pro-plus", "allwinner,sun55i-h728";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       ext_osc32k: ext-osc32k-clk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <32768>;
+               clock-output-names = "ext_osc32k";
+       };
+
+       reg_vcc5v: vcc5v {
+               /* board wide 5V supply from the barrel plug */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+
+       reg_vcc3v3: vcc3v3 {
+               /* 3.3V dummy supply for the SD card */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&reg_vcc5v>;
+               regulator-always-on;
+       };
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&mmc0 {
+       vmmc-supply = <&reg_vcc3v3>;
+       cd-gpios = <&pio 5 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PF6 */
+       bus-width = <4>;
+       disable-wp;
+       status = "okay";
+};
+
+&mmc2 {
+       vmmc-supply = <&reg_cldo3>;
+       vqmmc-supply = <&reg_cldo1>;
+       bus-width = <8>;
+       non-removable;
+       cap-mmc-hw-reset;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&pio {
+       vcc-pb-supply = <&reg_cldo3>;   /* via VCC-IO */
+       vcc-pc-supply = <&reg_cldo1>;
+       vcc-pd-supply = <&reg_dcdc4>;
+       vcc-pe-supply = <&reg_dcdc4>;
+       vcc-pf-supply = <&reg_cldo3>;   /* actually switchable */
+       vcc-pg-supply = <&reg_bldo1>;
+       vcc-ph-supply = <&reg_cldo3>;   /* via VCC-IO */
+       vcc-pi-supply = <&reg_dcdc4>;
+       vcc-pj-supply = <&reg_dcdc4>;
+       vcc-pk-supply = <&reg_bldo3>;
+};
+
+&r_i2c0 {
+       status = "okay";
+
+       axp717: pmic@34 {
+               compatible = "x-powers,axp717";
+               reg = <0x34>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+               vin4-supply = <&reg_vcc5v>;
+               aldoin-supply = <&reg_vcc5v>;
+               bldoin-supply = <&reg_vcc5v>;
+               cldoin-supply = <&reg_vcc5v>;
+
+               regulators {
+                       /* Supplies the "little" cluster (1.0(?) GHz cores) */
+                       reg_dcdc1: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vdd-cpul";
+                       };
+
+                       reg_dcdc2: dcdc2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <920000>;
+                               regulator-max-microvolt = <920000>;
+                               regulator-name = "vdd-gpu-sys";
+                       };
+
+                       reg_dcdc3: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1360000>;
+                               regulator-max-microvolt = <1360000>;
+                               regulator-name = "vdd-dram";
+                       };
+
+                       reg_dcdc4: dcdc4 {
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-name = "vdd-dcdc4";
+                       };
+
+                       reg_aldo1: aldo1 {
+                               /* not connected */
+                       };
+
+                       reg_aldo2: aldo2 {
+                               /* not connected */
+                       };
+
+                       reg_aldo3: aldo3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-aldo3";
+                       };
+
+                       reg_aldo4: aldo4 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pll-dxco-avcc";
+                       };
+
+                       reg_bldo1: bldo1 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pg-wifi-lvds";
+                       };
+
+                       reg_bldo2: bldo2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-dram-1v8";
+                       };
+
+                       reg_bldo3: bldo3 {
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-name = "vcc-bldo3";
+                       };
+
+                       reg_bldo4: bldo4 {
+                               /* not connected */
+                       };
+
+                       reg_cldo1: cldo1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-codec-sd";
+                       };
+
+                       reg_cldo2: cldo2 {
+                       };
+
+                       reg_cldo3: cldo3 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-codec-eth-sd";
+                       };
+
+                       reg_cldo4: cldo4 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-eth-phy";
+                       };
+
+                       reg_cpusldo: cpusldo {
+                               /* supplies the management core */
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd-cpus";
+                       };
+               };
+       };
+
+       axp323: pmic@36 {
+               compatible = "x-powers,axp323";
+               reg = <0x36>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               status = "okay";
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+
+               regulators {
+                       aldo1 {
+                               /* not connected */
+                       };
+
+                       dldo1 {
+                               /* not connected */
+                       };
+
+                       /* Supplies the "big" cluster (1.8 GHz cores) */
+                       reg_dcdc1_323: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vdd-cpub";
+                       };
+
+                       /* DCDC2 is polyphased with DCDC1 */
+
+                       reg_dcdc3_323: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1050000>;
+                               regulator-max-microvolt = <1050000>;
+                               regulator-name = "vdd-dcdc3";
+                       };
+               };
+       };
+};
+
+&r_pio {
+/*
+ * Specifying the supply would create a circular dependency.
+ *
+ *     vcc-pl-supply = <&reg_aldo3>;
+ */
+       vcc-pm-supply = <&reg_aldo3>;
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pb_pins>;
+       status = "okay";
+};
+
+&usb_otg {
+       /* USB0 is a USB-A receptacle, always powered, so force host mode. */
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
diff --git a/src/arm64/allwinner/sun55i-t527-avaota-a1.dts b/src/arm64/allwinner/sun55i-t527-avaota-a1.dts
new file mode 100644 (file)
index 0000000..142177c
--- /dev/null
@@ -0,0 +1,327 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR MIT)
+// Copyright (C) 2024 Arm Ltd.
+
+/dts-v1/;
+
+#include "sun55i-a523.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       model = "Avaota A1";
+       compatible = "yuzukihd,avaota-a1", "allwinner,sun55i-t527";
+
+       aliases {
+               ethernet0 = &gmac0;
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       ext_osc32k: ext-osc32k-clk {
+               #clock-cells = <0>;
+               compatible = "fixed-clock";
+               clock-frequency = <32768>;
+               clock-output-names = "ext_osc32k";
+       };
+
+       reg_vcc12v: vcc12v {
+               /* DC input jack */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-12v";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-always-on;
+       };
+
+       reg_vcc5v: vcc5v {
+               /* board wide 5V supply from the 12V->5V regulator */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc-5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&reg_vcc12v>;
+               regulator-always-on;
+       };
+
+       reg_usb_vbus: vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "usb-vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&reg_vcc5v>;
+               gpio = <&pio 8 12 GPIO_ACTIVE_HIGH>;    /* PI12 */
+               enable-active-high;
+       };
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&gmac0 {
+       phy-mode = "rgmii-id";
+       phy-handle = <&ext_rgmii_phy>;
+       phy-supply = <&reg_dcdc4>;
+
+       allwinner,tx-delay-ps = <100>;
+       allwinner,rx-delay-ps = <300>;
+
+       status = "okay";
+};
+
+&mdio0 {
+       ext_rgmii_phy: ethernet-phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <1>;
+       };
+};
+
+&mmc0 {
+       vmmc-supply = <&reg_cldo3>;
+       cd-gpios = <&pio 5 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; /* PF6 */
+       bus-width = <4>;
+       status = "okay";
+};
+
+&mmc2 {
+       bus-width = <8>;
+       cap-mmc-hw-reset;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+       non-removable;
+       vmmc-supply = <&reg_cldo3>;
+       vqmmc-supply = <&reg_cldo1>;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&pio {
+       vcc-pb-supply = <&reg_cldo3>;   /* via VCC-IO */
+       vcc-pc-supply = <&reg_cldo1>;
+       vcc-pd-supply = <&reg_dcdc4>;
+       vcc-pe-supply = <&reg_dcdc4>;
+       vcc-pf-supply = <&reg_cldo3>;   /* actually switchable */
+       vcc-pg-supply = <&reg_bldo1>;
+       vcc-ph-supply = <&reg_cldo3>;   /* via VCC-IO */
+       vcc-pi-supply = <&reg_dcdc4>;
+       vcc-pj-supply = <&reg_dcdc4>;
+       vcc-pk-supply = <&reg_bldo3>;
+};
+
+&r_i2c0 {
+       status = "okay";
+
+       axp717: pmic@35 {
+               compatible = "x-powers,axp717";
+               reg = <0x35>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+               vin4-supply = <&reg_vcc5v>;
+               aldoin-supply = <&reg_vcc5v>;
+               bldoin-supply = <&reg_vcc5v>;
+               cldoin-supply = <&reg_vcc5v>;
+
+               regulators {
+                       /* Supplies the "little" cluster (1.4 GHz cores) */
+                       reg_dcdc1: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vdd-cpul";
+                       };
+
+                       reg_dcdc2: dcdc2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <920000>;
+                               regulator-max-microvolt = <920000>;
+                               regulator-name = "vdd-gpu-sys";
+                       };
+
+                       reg_dcdc3: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1160000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vdd-dram";
+                       };
+
+                       reg_dcdc4: dcdc4 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vdd-io";
+                       };
+
+                       reg_aldo1: aldo1 {
+                               /* not connected */
+                       };
+
+                       reg_aldo2: aldo2 {
+                               /* not connected */
+                       };
+
+                       reg_aldo3: aldo3 {
+                               /* supplies the I2C pins for this PMIC */
+                               regulator-always-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-pl-pm";
+                       };
+
+                       reg_aldo4: aldo4 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pll-dxco-avcc";
+                       };
+
+                       reg_bldo1: bldo1 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pg-wifi-lvds";
+                       };
+
+                       reg_bldo2: bldo2 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-dram-1v8";
+                       };
+
+                       reg_bldo3: bldo3 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-cvp-pk-vid1v8";
+                       };
+
+                       reg_bldo4: bldo4 {
+                               /* not connected */
+                       };
+
+                       reg_cldo1: cldo1 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-pc";
+                       };
+
+                       reg_cldo2: cldo2 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc-efuse";
+                       };
+
+                       reg_cldo3: cldo3 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc-io-mmc-spi-ana";
+                       };
+
+                       reg_cldo4: cldo4 {
+                               /* not connected */
+                       };
+
+                       reg_cpusldo: cpusldo {
+                               /* supplies the management core */
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd-cpus";
+                       };
+               };
+       };
+
+       axp323: pmic@36 {
+               compatible = "x-powers,axp323";
+               reg = <0x36>;
+               #interrupt-cells = <1>;
+               interrupt-controller;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               status = "okay";
+
+               vin1-supply = <&reg_vcc5v>;
+               vin2-supply = <&reg_vcc5v>;
+               vin3-supply = <&reg_vcc5v>;
+
+               regulators {
+                       aldo1 {
+                               /* not connected */
+                       };
+
+                       dldo1 {
+                               /* not connected */
+                       };
+
+                       /* Supplies the "big" cluster (1.8 GHz cores) */
+                       reg_dcdc1_323: dcdc1 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <1160000>;
+                               regulator-name = "vdd-cpub";
+                       };
+
+                       /* DCDC2 is polyphased with DCDC1 */
+
+                       /* Some RISC-V management core related voltage */
+                       reg_dcdc3_323: dcdc3 {
+                               regulator-always-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd-dnr";
+                       };
+               };
+       };
+};
+
+&r_pio {
+/*
+ * Specifying the supply would create a circular dependency.
+ *
+ *     vcc-pl-supply = <&reg_aldo3>;
+ */
+       vcc-pm-supply = <&reg_aldo3>;
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pb_pins>;
+       status = "okay";
+};
+
+&usb_otg {
+        /*
+         * The CC pins of the USB-C port have two pull-down resistors
+         * connected to GND, which fixes this port to a peripheral role.
+         * There is a regulator, controlled by a GPIO, to provide VBUS power
+         * to the port, and a VBUSDET GPIO, to detect externally provided
+         * power, but without the CC pins there is no real way to do a
+         * runtime role detection.
+         */
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usbphy {
+       usb0_vbus-supply = <&reg_usb_vbus>;
+       usb0_vbus_det-gpios = <&pio 8 13 GPIO_ACTIVE_HIGH>; /* PI13 */
+       status = "okay";
+};
diff --git a/src/arm64/amlogic/amlogic-a4-reset.h b/src/arm64/amlogic/amlogic-a4-reset.h
new file mode 100644 (file)
index 0000000..f6a4c90
--- /dev/null
@@ -0,0 +1,93 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (c) 2024 Amlogic, Inc. All rights reserved.
+ */
+
+#ifndef __DTS_AMLOGIC_A4_RESET_H
+#define __DTS_AMLOGIC_A4_RESET_H
+
+/* RESET0 */
+/*                                             0-3 */
+#define RESET_USB                              4
+/*                                             5-6*/
+#define RESET_U2PHY22                          7
+#define RESET_USBPHY20                         8
+#define RESET_U2PHY21                          9
+#define RESET_USB2DRD                          10
+#define RESET_U2H                              11
+#define RESET_LED_CTRL                         12
+/*                                             13-31 */
+
+/* RESET1 */
+#define RESET_AUDIO                            32
+#define RESET_AUDIO_VAD                                33
+/*                                             34*/
+#define RESET_DDR_APB                          35
+#define RESET_DDR                              36
+#define RESET_VOUT_VENC                                37
+#define RESET_VOUT                             38
+/*                                             39-47 */
+#define RESET_ETHERNET                         48
+/*                                             49-63 */
+
+/* RESET2 */
+#define RESET_DEVICE_MMC_ARB                   64
+#define RESET_IRCTRL                           65
+/*                                             66*/
+#define RESET_TS_PLL                           67
+/*                                             68-72*/
+#define RESET_SPICC_0                          73
+#define RESET_SPICC_1                          74
+/*                                             75-79*/
+#define RESET_MSR_CLK                          80
+/*                                             81*/
+#define RESET_SAR_ADC                          82
+/*                                             83-87*/
+#define RESET_ACODEC                           88
+/*                                             89-90*/
+#define RESET_WATCHDOG                         91
+/*                                             92-95*/
+
+/* RESET3 */
+/*                                             96-127 */
+
+/* RESET4 */
+/*                                             128-131 */
+#define RESET_PWM_AB                           132
+#define RESET_PWM_CD                           133
+#define RESET_PWM_EF                           134
+#define RESET_PWM_GH                           135
+/*                                             136-137*/
+#define RESET_UART_A                           138
+#define RESET_UART_B                           139
+/*                                             140*/
+#define RESET_UART_D                           141
+#define RESET_UART_E                           142
+/*                                             143-144*/
+#define RESET_I2C_M_A                          145
+#define RESET_I2C_M_B                          146
+#define RESET_I2C_M_C                          147
+#define RESET_I2C_M_D                          148
+/*                                             149-151*/
+#define RESET_SDEMMC_A                         152
+/*                                             153*/
+#define RESET_SDEMMC_C                         154
+/*                                             155-159*/
+
+/* RESET5 */
+/*                                             160-175*/
+#define RESET_BRG_AO_NIC_SYS                   176
+/*                                             177*/
+#define RESET_BRG_AO_NIC_MAIN                  178
+#define RESET_BRG_AO_NIC_AUDIO                 179
+/*                                             180-183*/
+#define RESET_BRG_AO_NIC_ALL                   184
+/*                                             185*/
+#define RESET_BRG_NIC_SDIO                     186
+#define RESET_BRG_NIC_EMMC                     187
+#define RESET_BRG_NIC_DSU                      188
+#define RESET_BRG_NIC_CLK81                    189
+#define RESET_BRG_NIC_MAIN                     190
+#define RESET_BRG_NIC_ALL                      191
+
+#endif
index a06838552f21c58d1f6b239d9d56982b83a1f62f..563bc2e662fac5f2ec3d0b9cc3fca0de39ec0553 100644 (file)
@@ -4,7 +4,9 @@
  */
 
 #include "amlogic-a4-common.dtsi"
+#include "amlogic-a4-reset.h"
 #include <dt-bindings/power/amlogic,a4-pwrc.h>
+#include <dt-bindings/pinctrl/amlogic,pinctrl.h>
 / {
        cpus {
                #address-cells = <2>;
 };
 
 &apb {
+       reset: reset-controller@2000 {
+               compatible = "amlogic,a4-reset",
+                            "amlogic,meson-s4-reset";
+               reg = <0x0 0x2000 0x0 0x98>;
+               #reset-cells = <1>;
+       };
+
+       periphs_pinctrl: pinctrl@4000 {
+               compatible = "amlogic,pinctrl-a4";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges = <0x0 0x0 0x0 0x4000 0x0 0x280>;
+
+               gpiox: gpio@100 {
+                       reg = <0 0x100 0 0x40>, <0 0xc 0 0xc>;
+                       reg-names = "gpio", "mux";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_X<<8) 18>;
+               };
+
+               gpiot: gpio@140 {
+                       reg = <0 0x140 0 0x40>, <0 0x2c 0 0xc>;
+                       reg-names = "gpio", "mux";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_T<<8) 23>;
+               };
+
+               gpiod: gpio@180 {
+                       reg = <0 0x180 0 0x40>, <0 0x40 0 0x8>;
+                       reg-names = "gpio", "mux";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_D<<8) 16>;
+               };
+
+               gpioe: gpio@1c0 {
+                       reg = <0 0x1c0 0 0x40>, <0 0x48 0 0x4>;
+                       reg-names = "gpio", "mux";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_E<<8) 2>;
+               };
+
+               gpiob: gpio@240 {
+                       reg = <0 0x240 0 0x40>, <0 0 0 0x8>;
+                       reg-names = "gpio", "mux";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_B<<8) 14>;
+               };
+
+               func-uart-a {
+                       uart_a_default: group-uart-a-pins1 {
+                               pinmux = <AML_PINMUX(AMLOGIC_GPIO_X, 11, 1)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_X, 12, 1)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_X, 13, 1)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_X, 14, 1)>;
+                       };
+
+                       group-uart-a-pins2 {
+                               pinmux = <AML_PINMUX(AMLOGIC_GPIO_D, 2, 3)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_D, 3, 3)>;
+                               bias-pull-up;
+                               drive-strength-microamp = <4000>;
+                       };
+               };
+
+               func-uart-b {
+                       uart_b_default: group-uart-b-pins {
+                               pinmux = <AML_PINMUX(AMLOGIC_GPIO_E, 0, 3)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_E, 1, 3)>;
+                               bias-pull-up;
+                               drive-strength-microamp = <4000>;
+                       };
+               };
+
+               func-uart-d {
+                       uart_d_default: group-uart-d-pins1 {
+                               pinmux = <AML_PINMUX(AMLOGIC_GPIO_T, 18, 4)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_T, 19, 4)>;
+                               bias-pull-up;
+                               drive-strength-microamp = <4000>;
+                       };
+
+                       group-uart-d-pins2 {
+                               pinmux = <AML_PINMUX(AMLOGIC_GPIO_T, 7, 2)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_T, 8, 2)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_T, 9, 2)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_T, 10, 2)>;
+                               bias-pull-up;
+                               drive-strength-microamp = <4000>;
+                       };
+               };
+
+               func-uart-e {
+                       uart_e_default: group-uart-e-pins {
+                               pinmux = <AML_PINMUX(AMLOGIC_GPIO_T, 14, 3)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_T, 15, 3)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_T, 16, 3)>,
+                                        <AML_PINMUX(AMLOGIC_GPIO_T, 17, 3)>;
+                               bias-pull-up;
+                               drive-strength-microamp = <4000>;
+                       };
+               };
+       };
+
        gpio_intc: interrupt-controller@4080 {
                compatible = "amlogic,a4-gpio-intc",
                             "amlogic,meson-gpio-intc";
                        <10 11 12 13 14 15 16 17 18 19 20 21>;
        };
 
+       ao_pinctrl: pinctrl@8e700 {
+               compatible = "amlogic,pinctrl-a4";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges = <0x0 0x0 0x0 0x8e700 0x0 0x80>;
+
+               gpioao: gpio@4 {
+                       reg = <0 0x4 0 0x16>, <0 0 0 0x4>;
+                       reg-names = "gpio", "mux";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_AO<<8) 7>;
+               };
+
+               test_n: gpio@44 {
+                       reg = <0 0x44 0 0x20>;
+                       reg-names = "gpio";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&periphs_pinctrl 0 (AMLOGIC_GPIO_TEST_N<<8) 1>;
+               };
+       };
+
        gpio_ao_intc: interrupt-controller@8e72c {
                compatible = "amlogic,a4-gpio-ao-intc",
                             "amlogic,meson-gpio-intc";
diff --git a/src/arm64/amlogic/amlogic-a5-reset.h b/src/arm64/amlogic/amlogic-a5-reset.h
new file mode 100644 (file)
index 0000000..cdf0f51
--- /dev/null
@@ -0,0 +1,95 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR MIT) */
+/*
+ * Copyright (c) 2024 Amlogic, Inc. All rights reserved.
+ */
+
+#ifndef __DTS_AMLOGIC_A5_RESET_H
+#define __DTS_AMLOGIC_A5_RESET_H
+
+/* RESET0 */
+/*                                             0-3 */
+#define RESET_USB                              4
+/*                                             5-7 */
+#define RESET_USBPHY20                         8
+/*                                             9 */
+#define RESET_USB2DRD                          10
+/*                                             11-31 */
+
+/* RESET1 */
+#define RESET_AUDIO                            32
+#define RESET_AUDIO_VAD                                33
+/*                                              34 */
+#define RESET_DDR_APB                          35
+#define RESET_DDR                              36
+/*                                             37-40 */
+#define RESET_DSPA_DEBUG                       41
+/*                                              42 */
+#define RESET_DSPA                             43
+/*                                             44-46 */
+#define RESET_NNA                              47
+#define RESET_ETHERNET                         48
+/*                                             49-63 */
+
+/* RESET2 */
+#define RESET_ABUS_ARB                         64
+#define RESET_IRCTRL                           65
+/*                                             66 */
+#define RESET_TS_PLL                           67
+/*                                             68-72 */
+#define RESET_SPICC_0                          73
+#define RESET_SPICC_1                          74
+#define RESET_RSA                              75
+
+/*                                             76-79 */
+#define RESET_MSR_CLK                          80
+#define RESET_SPIFC                            81
+#define RESET_SAR_ADC                          82
+/*                                             83-90 */
+#define RESET_WATCHDOG                         91
+/*                                             92-95 */
+
+/* RESET3 */
+/*                                             96-127 */
+
+/* RESET4 */
+#define RESET_RTC                              128
+/*                                             129-131 */
+#define RESET_PWM_AB                           132
+#define RESET_PWM_CD                           133
+#define RESET_PWM_EF                           134
+#define RESET_PWM_GH                           135
+/*                                             104-105 */
+#define RESET_UART_A                           138
+#define RESET_UART_B                           139
+#define RESET_UART_C                           140
+#define RESET_UART_D                           141
+#define RESET_UART_E                           142
+/*                                             143*/
+#define RESET_I2C_S_A                          144
+#define RESET_I2C_M_A                          145
+#define RESET_I2C_M_B                          146
+#define RESET_I2C_M_C                          147
+#define RESET_I2C_M_D                          148
+/*                                             149-151 */
+#define RESET_SDEMMC_A                         152
+/*                                             153 */
+#define RESET_SDEMMC_C                         154
+/*                                             155-159*/
+
+/* RESET5 */
+/*                                             160-175 */
+#define RESET_BRG_AO_NIC_SYS                   176
+#define RESET_BRG_AO_NIC_DSPA                  177
+#define RESET_BRG_AO_NIC_MAIN                  178
+#define RESET_BRG_AO_NIC_AUDIO                 179
+/*                                             180-183 */
+#define RESET_BRG_AO_NIC_ALL                   184
+#define RESET_BRG_NIC_NNA                      185
+#define RESET_BRG_NIC_SDIO                     186
+#define RESET_BRG_NIC_EMMC                     187
+#define RESET_BRG_NIC_DSU                      188
+#define RESET_BRG_NIC_SYSCLK                   189
+#define RESET_BRG_NIC_MAIN                     190
+#define RESET_BRG_NIC_ALL                      191
+
+#endif
index 32ed1776891bc7d1befd01a76c76048631606f5a..b1da8cbaa25a1844312a23bc39eb876df3c60df5 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include "amlogic-a4-common.dtsi"
+#include "amlogic-a5-reset.h"
 #include <dt-bindings/power/amlogic,a5-pwrc.h>
 / {
        cpus {
 };
 
 &apb {
+       reset: reset-controller@2000 {
+               compatible = "amlogic,a5-reset",
+                            "amlogic,meson-s4-reset";
+               reg = <0x0 0x2000 0x0 0x98>;
+               #reset-cells = <1>;
+       };
+
        gpio_intc: interrupt-controller@4080 {
                compatible = "amlogic,a5-gpio-intc",
                             "amlogic,meson-gpio-intc";
index fd0e557eba06c1d45a0cf3309f4940cb7f12cbdb..cb9ea3ca6ee0f9552172066346096859959305d1 100644 (file)
                                };
                        };
 
+                       clk_msr: clock-measure@48000 {
+                               compatible = "amlogic,c3-clk-measure";
+                               reg = <0x0 0x48000 0x0 0x1c>;
+                       };
+
                        spicc0: spi@50000 {
                                compatible = "amlogic,meson-g12a-spicc";
                                reg = <0x0 0x50000 0x0 0x44>;
diff --git a/src/arm64/amlogic/amlogic-s6-s905x5-bl209.dts b/src/arm64/amlogic/amlogic-s6-s905x5-bl209.dts
new file mode 100644 (file)
index 0000000..c45b226
--- /dev/null
@@ -0,0 +1,42 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "amlogic-s6.dtsi"
+/ {
+       model = "Amlogic S905X5 BL209 Development Board";
+       compatible = "amlogic,bl209", "amlogic,s6";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial0 = &uart_b;
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x000000 0x0 0xe0000000>,
+                     <0x1 0x000000 0x0 0x20000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* 27 MiB reserved for ARM Trusted Firmware */
+               secmon_reserved: secmon@5000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x05000000 0x0 0x1b00000>;
+                       no-map;
+               };
+       };
+};
+
+&uart_b {
+       status = "okay";
+};
diff --git a/src/arm64/amlogic/amlogic-s6.dtsi b/src/arm64/amlogic/amlogic-s6.dtsi
new file mode 100644 (file)
index 0000000..a8c9024
--- /dev/null
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Amlogic, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/gpio/gpio.h>
+/ {
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a510";
+                       reg = <0x0 0x0>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a510";
+                       reg = <0x0 0x100>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@200 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a510";
+                       reg = <0x0 0x200>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@300 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a510";
+                       reg = <0x0 0x300>;
+                       enable-method = "psci";
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       xtal: xtal-clk {
+               compatible = "fixed-clock";
+               clock-frequency = <24000000>;
+               clock-output-names = "xtal";
+               #clock-cells = <0>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gic: interrupt-controller@ff200000 {
+                       compatible = "arm,gic-v3";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x0 0xff200000 0 0x10000>,
+                             <0x0 0xff240000 0 0x80000>;
+                       interrupts = <GIC_PPI 9 0xf04>;
+               };
+
+               apb: bus@fe000000 {
+                       compatible = "simple-bus";
+                       reg = <0x0 0xfe000000 0x0 0x480000>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
+
+                       uart_b: serial@7a000 {
+                               compatible = "amlogic,s6-uart",
+                                            "amlogic,meson-s4-uart";
+                               reg = <0x0 0x7a000 0x0 0x18>;
+                               interrupts = <GIC_SPI 169 IRQ_TYPE_EDGE_RISING>;
+                               clocks = <&xtal>, <&xtal>, <&xtal>;
+                               clock-names = "xtal", "pclk", "baud";
+                               status = "disabled";
+                       };
+               };
+       };
+};
diff --git a/src/arm64/amlogic/amlogic-s7-s805x3-bp201.dts b/src/arm64/amlogic/amlogic-s7-s805x3-bp201.dts
new file mode 100644 (file)
index 0000000..7fd4ac9
--- /dev/null
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "amlogic-s7.dtsi"
+/ {
+       model = "Amlogic S805X3 BP201 Development Board";
+       compatible = "amlogic,bp201", "amlogic,s7";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial0 = &uart_b;
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* 35 MiB reserved for ARM Trusted Firmware */
+               secmon_reserved: secmon@5000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x05000000 0x0 0x2300000>;
+                       no-map;
+               };
+       };
+};
+
+&uart_b {
+       status = "okay";
+};
diff --git a/src/arm64/amlogic/amlogic-s7.dtsi b/src/arm64/amlogic/amlogic-s7.dtsi
new file mode 100644 (file)
index 0000000..f0c1726
--- /dev/null
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Amlogic, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x0>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x100>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@200 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x200>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@300 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x300>;
+                       enable-method = "psci";
+               };
+
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       xtal: xtal-clk {
+               compatible = "fixed-clock";
+               clock-frequency = <24000000>;
+               clock-output-names = "xtal";
+               #clock-cells = <0>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gic: interrupt-controller@fff01000 {
+                       compatible = "arm,gic-400";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x0 0xfff01000 0 0x1000>,
+                             <0x0 0xfff02000 0 0x0100>;
+                       interrupts = <GIC_PPI 9 0xf04>;
+               };
+
+               apb: bus@fe000000 {
+                       compatible = "simple-bus";
+                       reg = <0x0 0xfe000000 0x0 0x480000>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
+
+                       uart_b: serial@7a000 {
+                               compatible = "amlogic,s7-uart",
+                                            "amlogic,meson-s4-uart";
+                               reg = <0x0 0x7a000 0x0 0x18>;
+                               interrupts = <GIC_SPI 169 IRQ_TYPE_EDGE_RISING>;
+                               clocks = <&xtal>, <&xtal>, <&xtal>;
+                               clock-names = "xtal", "pclk", "baud";
+                               status = "disabled";
+                       };
+               };
+       };
+};
diff --git a/src/arm64/amlogic/amlogic-s7d-s905x5m-bm202.dts b/src/arm64/amlogic/amlogic-s7d-s905x5m-bm202.dts
new file mode 100644 (file)
index 0000000..2933fcd
--- /dev/null
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Amlogic, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "amlogic-s7d.dtsi"
+/ {
+       model = "Amlogic S905X5M BM202 Development Board";
+       compatible = "amlogic,bm202", "amlogic,s7d";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               serial0 = &uart_b;
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x80000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* 36 MiB reserved for ARM Trusted Firmware */
+               secmon_reserved: secmon@5000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x05000000 0x0 0x2400000>;
+                       no-map;
+               };
+       };
+};
+
+&uart_b {
+       status = "okay";
+};
diff --git a/src/arm64/amlogic/amlogic-s7d.dtsi b/src/arm64/amlogic/amlogic-s7d.dtsi
new file mode 100644 (file)
index 0000000..e1099bc
--- /dev/null
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Amlogic, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/gpio/gpio.h>
+
+/ {
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x0>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x100>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@200 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x200>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@300 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a55";
+                       reg = <0x0 0x300>;
+                       enable-method = "psci";
+               };
+
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       xtal: xtal-clk {
+               compatible = "fixed-clock";
+               clock-frequency = <24000000>;
+               clock-output-names = "xtal";
+               #clock-cells = <0>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gic: interrupt-controller@fff01000 {
+                       compatible = "arm,gic-400";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x0 0xfff01000 0 0x1000>,
+                             <0x0 0xfff02000 0 0x0100>;
+                       interrupts = <GIC_PPI 9 0xf04>;
+               };
+
+               apb: bus@fe000000 {
+                       compatible = "simple-bus";
+                       reg = <0x0 0xfe000000 0x0 0x480000>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges = <0x0 0x0 0x0 0xfe000000 0x0 0x480000>;
+
+                       uart_b: serial@7a000 {
+                               compatible = "amlogic,s7d-uart",
+                                            "amlogic,meson-s4-uart";
+                               reg = <0x0 0x7a000 0x0 0x18>;
+                               interrupts = <GIC_SPI 169 IRQ_TYPE_EDGE_RISING>;
+                               clocks = <&xtal>, <&xtal>, <&xtal>;
+                               clock-names = "xtal", "pclk", "baud";
+                               status = "disabled";
+                       };
+               };
+       };
+};
index 1eba0afb3fd91ca9159064edd2563bfd28c596e4..f7f25a10f409ada7ced686ac979effee74c99a03 100644 (file)
                                                groups = "uart_a_tx",
                                                         "uart_a_rx";
                                                function = "uart_a";
+                                               bias-pull-up;
                                        };
                                };
 
index a6924d246bb1e1721a1a9a3a8285f98c003c2640..2df143aa77ce3ca4f101ffe0c6ed83c6a3bc52c5 100644 (file)
                                                groups = "uart_tx_a",
                                                         "uart_rx_a";
                                                function = "uart_a";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
                                                groups = "uart_tx_b_x",
                                                         "uart_rx_b_x";
                                                function = "uart_b";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
                                                groups = "uart_tx_b_z",
                                                         "uart_rx_b_z";
                                                function = "uart_b";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
                                                groups = "uart_ao_tx_b_z",
                                                         "uart_ao_rx_b_z";
                                                function = "uart_ao_b_z";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
                                                groups = "uart_ao_tx_a",
                                                         "uart_ao_rx_a";
                                                function = "uart_ao_a";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
                                                groups = "uart_ao_tx_b",
                                                         "uart_ao_rx_b";
                                                function = "uart_ao_b";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
index 69834b49673d40ca1388f3679675854a6eb7ccb0..dcc927a9da80246da43391f9f90049c3570f10d2 100644 (file)
                                                        groups = "uart_a_tx",
                                                                 "uart_a_rx";
                                                        function = "uart_a";
-                                                       bias-disable;
+                                                       bias-pull-up;
                                                };
                                        };
 
                                                        groups = "uart_b_tx",
                                                                 "uart_b_rx";
                                                        function = "uart_b";
-                                                       bias-disable;
+                                                       bias-pull-up;
                                                };
                                        };
 
                                                groups = "uart_ao_a_tx",
                                                         "uart_ao_a_rx";
                                                function = "uart_ao_a";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
                                                groups = "uart_ao_b_tx_2",
                                                         "uart_ao_b_rx_3";
                                                function = "uart_ao_b";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
                                                groups = "uart_ao_b_tx_8",
                                                         "uart_ao_b_rx_9";
                                                function = "uart_ao_b";
-                                               bias-disable;
+                                               bias-pull-up;
                                        };
                                };
 
index 9aa36f17ffa2d0d16bb6f14ed4488dede5ff3d78..d0a3b4b9229cc60394fe122fa1124a135866e0d6 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &ethmac {
index 952b8d02e5c262ff24139344fccfe4a174571038..4353485c6f26b98eeeb37d8dfb3964c906b80f8e 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cvbs_vdac_port {
index 52fbc5103e45015a07e894f147d67075a9c674c5..f39fcabc763f1ab1e22cf38e7766e12e42c046e6 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cvbs_vdac_port {
index 5407049d264706c6e44def460d1c6e9c3ceb7e44..b5bf8ecc91e653e4a4082c5a4d17dba8239dbf47 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &clkc_audio {
index 01da83658ae3a7844caf4d1b141d96cbce424910..5ab460a3e637f714fe38f9b4ad106198c1709d5a 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cvbs_vdac_port {
index 543e70669df54afab046c09e9c154e8956eda5f0..deee61dbe0741f52556fd89f8be18e4620d2ed85 100644 (file)
@@ -62,6 +62,7 @@
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
                        opp-microvolt = <731000>;
+                       clock-latency-ns = <50000>;
                };
 
                opp-1200000000 {
index adedc1340c78478521f462a18fc5280ba11e7023..415248931ab17652ee01d17d30ae22cdf3f0fbb5 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu100 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu101 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu102 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu103 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &pwm_ab {
index 8e9ad1e51d665e33f949c1237809af6771020b00..8ecb5bd125c1a4729c63d7f2b3edb4a2fecef5eb 100644 (file)
@@ -14,6 +14,7 @@
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
                        opp-microvolt = <761000>;
+                       clock-latency-ns = <50000>;
                };
 
                opp-1200000000 {
@@ -54,6 +55,7 @@
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
                        opp-microvolt = <731000>;
+                       clock-latency-ns = <50000>;
                };
 
                opp-1200000000 {
index 92e8b26eccccba1e2aa83378b74870a68344071b..39011b645128cb9ee1107f4731d56840f2bdf5a7 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu100 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu101 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu102 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu103 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &ext_mdio {
index 54663c55a20e68213c480e7fa7dac7624946cf6f..1b08303c42822ba94f600ef6e19ca057bf5fe7ed 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu100 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu101 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu102 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu103 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &ethmac {
index 48650bad230da20baa1fb8618021708bbe53f63f..fc737499f207aa7c873371de5a59ca2a70e7c24b 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu100 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu101 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu102 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu103 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &pwm_ab {
index e21831dfceeea728e05c7a4ecbf93bd22fc85aba..d5938a4a6da375e5fbff89c761e634e7b85775fe 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu100 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu101 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu102 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu103 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 /* RK817 only supports 12.5mV steps, round up the values */
index 7e8964bacfce705a3de4c208543324569c5cb3d5..3298d59833b643d2e925c80dc20778210ac937a5 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu100 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu101 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu102 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu103 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu_thermal {
index fc05ecf90714dd999276d751ec565ab7dcfb1db3..1e5c6f98494564aa61c9da269488bd52fd270b6b 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu100 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu101 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu102 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu103 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu_thermal {
index 44c23c984034cc4799583e92282ae7799e11e710..19cad93a68897ca00856983a936409d36786b3e4 100644 (file)
@@ -14,6 +14,7 @@
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
                        opp-microvolt = <731000>;
+                       clock-latency-ns = <50000>;
                };
 
                opp-1200000000 {
@@ -59,6 +60,7 @@
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
                        opp-microvolt = <771000>;
+                       clock-latency-ns = <50000>;
                };
 
                opp-1200000000 {
index a7a0fc264cdcf0f66565f9a52144f583dbbf16bf..9b6d780eada777a8314c9877f75c635076404c01 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table_0>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu100 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu101 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu102 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu103 {
        cpu-supply = <&vddcpu_a>;
        operating-points-v2 = <&cpub_opp_table_1>;
        clocks = <&clkc CLKID_CPUB_CLK>;
-       clock-latency = <50000>;
 };
 
 &cvbs_vdac_port {
index 6c134592c7bb81a1c0eb9ff0f80e58028cd4ce5f..f69923da07febd6b3ebbabd29c848eadca4653a4 100644 (file)
                        mux {
                                groups = "uart_tx_ao_a", "uart_rx_ao_a";
                                function = "uart_ao";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                        mux {
                                groups = "uart_tx_ao_b", "uart_rx_ao_b";
                                function = "uart_ao_b";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "uart_tx_a",
                                       "uart_rx_a";
                                function = "uart_a";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "uart_tx_b",
                                       "uart_rx_b";
                                function = "uart_b";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "uart_tx_c",
                                       "uart_rx_c";
                                function = "uart_c";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
diff --git a/src/arm64/amlogic/meson-gxl-s805y-xiaomi-aquaman.dts b/src/arm64/amlogic/meson-gxl-s805y-xiaomi-aquaman.dts
new file mode 100644 (file)
index 0000000..cac15b8
--- /dev/null
@@ -0,0 +1,262 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Ferass El Hafidi <funderscore@postmarketos.org>
+ * Heavily based on meson-gxl-s805x-p241.dtb:
+ *  - Copyright (c) 2018 BayLibre, SAS.
+ *    Author: Neil Armstrong <narmstrong@baylibre.com>
+ *    Author: Jerome Brunet <jbrunet@baylibre.com>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/sound/meson-aiu.h>
+
+#include "meson-gxl-s805y.dtsi"
+
+/ {
+       compatible = "xiaomi,aquaman", "amlogic,s805y", "amlogic,meson-gxl";
+       model = "Xiaomi Mi TV Stick (aquaman)";
+
+       aliases {
+               serial0 = &uart_AO;
+               serial1 = &uart_A;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
+       };
+
+       hdmi-connector {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_connector_in: endpoint {
+                               remote-endpoint = <&hdmi_tx_tmds_out>;
+                       };
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-white {
+                       color = <LED_COLOR_ID_WHITE>;
+                       function = LED_FUNCTION_POWER;
+                       gpios = <&gpio GPIODV_24 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+                       panic-indicator;
+               };
+       };
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x0 0x0 0x0 0x40000000>;
+       };
+
+       vddio_boot: regulator-vddio-boot {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDIO_BOOT";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       vddao_3v3: regulator-vddao-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDAO_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       vddio_ao18: regulator-vddio-ao18 {
+               compatible = "regulator-fixed";
+               regulator-name = "VDDIO_AO18";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
+       vcc_3v3: regulator-vcc-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       vcc_5v: regulator-vcc-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_5V";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
+       };
+
+       wifi32k: wifi32k {
+               compatible = "pwm-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               pwms = <&pwm_ef 0 30518 0>; /* PWM_E at 32.768KHz */
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>;
+               clocks = <&wifi32k>;
+               clock-names = "ext_clock";
+       };
+
+       sound {
+               compatible = "amlogic,gx-sound-card";
+               model = "XIAOMI-AQUAMAN";
+               clocks = <&clkc CLKID_MPLL0>,
+                        <&clkc CLKID_MPLL1>,
+                        <&clkc CLKID_MPLL2>;
+
+               assigned-clocks = <&clkc CLKID_MPLL0>,
+                                 <&clkc CLKID_MPLL1>,
+                                 <&clkc CLKID_MPLL2>;
+               assigned-clock-parents = <0>, <0>, <0>;
+               assigned-clock-rates = <294912000>,
+                                      <270950400>,
+                                      <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 = <&aiu AIU_HDMI CTRL_I2S>;
+                       };
+               };
+
+               dai-link-2 {
+                       sound-dai = <&aiu AIU_HDMI CTRL_OUT>;
+
+                       codec-0 {
+                               sound-dai = <&hdmi_tx>;
+                       };
+               };
+       };
+};
+
+&aiu {
+       status = "okay";
+};
+
+&cec_AO {
+       status = "okay";
+       pinctrl-0 = <&ao_cec_pins>;
+       pinctrl-names = "default";
+       hdmi-phandle = <&hdmi_tx>;
+};
+
+&hdmi_tx {
+       status = "okay";
+       pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
+       pinctrl-names = "default";
+       hdmi-supply = <&vcc_5v>;
+};
+
+&hdmi_tx_tmds_port {
+       hdmi_tx_tmds_out: endpoint {
+               remote-endpoint = <&hdmi_connector_in>;
+       };
+};
+
+&saradc {
+       status = "okay";
+       vref-supply = <&vddio_ao18>;
+};
+
+/* Wireless SDIO Module (Amlogic W155S1 / Realtek RTL8821CS) */
+&sd_emmc_b {
+       status = "okay";
+       pinctrl-0 = <&sdio_pins>;
+       pinctrl-1 = <&sdio_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       bus-width = <4>;
+       cap-sd-highspeed;
+       max-frequency = <50000000>;
+
+       non-removable;
+       disable-wp;
+
+       /* WiFi firmware requires power to be kept while in suspend */
+       keep-power-in-suspend;
+
+       mmc-pwrseq = <&sdio_pwrseq>;
+
+       vmmc-supply = <&vddao_3v3>;
+       vqmmc-supply = <&vddio_boot>;
+
+       sdio: wifi@1 {
+               reg = <1>;
+       };
+};
+
+/* eMMC */
+&sd_emmc_c {
+       status = "okay";
+       pinctrl-0 = <&emmc_pins>, <&emmc_ds_pins>;
+       pinctrl-1 = <&emmc_clk_gate_pins>;
+       pinctrl-names = "default", "clk-gate";
+
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       max-frequency = <200000000>;
+       non-removable;
+       disable-wp;
+       mmc-ddr-1_8v;
+       mmc-hs200-1_8v;
+
+       mmc-pwrseq = <&emmc_pwrseq>;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vddio_boot>;
+};
+
+&pwm_ef {
+       status = "okay";
+       pinctrl-0 = <&pwm_e_pins>;
+       pinctrl-names = "default";
+};
+
+/*
+ * This is connected to the Bluetooth module
+ * Note: There's no driver for the Bluetooth module of some variants yet.
+ */
+&uart_A {
+       status = "okay";
+       pinctrl-0 = <&uart_a_pins>, <&uart_a_cts_rts_pins>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+};
+
+&uart_AO {
+       status = "okay";
+       pinctrl-0 = <&uart_ao_a_pins>;
+       pinctrl-names = "default";
+};
+
+&usb {
+       status = "okay";
+       dr_mode = "otg";
+       vbus-supply = <&vcc_5v>;
+};
diff --git a/src/arm64/amlogic/meson-gxl-s805y.dtsi b/src/arm64/amlogic/meson-gxl-s805y.dtsi
new file mode 100644 (file)
index 0000000..49b29b7
--- /dev/null
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Ferass El Hafidi <funderscore@postmarketos.org>
+ */
+
+#include "meson-gxl-s805x.dtsi"
+
+/ {
+       compatible = "amlogic,s805y", "amlogic,meson-gxl";
+};
index 19b8a39de6a03312405aea3c0b4aa4c86afd84de..ba535010a3c91d598e72d63fb04243e0c37e9cc9 100644 (file)
                        mux {
                                groups = "uart_tx_ao_a", "uart_rx_ao_a";
                                function = "uart_ao";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                        mux {
                                groups = "uart_tx_ao_b", "uart_rx_ao_b";
                                function = "uart_ao_b";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                        mux {
                                groups = "uart_tx_ao_b_0", "uart_rx_ao_b_1";
                                function = "uart_ao_b";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "i2c_sck_ao",
                                       "i2c_sda_ao";
                                function = "i2c_ao";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "uart_tx_a",
                                       "uart_rx_a";
                                function = "uart_a";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "uart_tx_b",
                                       "uart_rx_b";
                                function = "uart_b";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "uart_tx_c",
                                       "uart_rx_c";
                                function = "uart_c";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "i2c_sck_a",
                                     "i2c_sda_a";
                                function = "i2c_a";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "i2c_sck_b",
                                      "i2c_sda_b";
                                function = "i2c_b";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "i2c_sck_c",
                                      "i2c_sda_c";
                                function = "i2c_c";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
                                groups = "i2c_sck_c_dv19",
                                      "i2c_sda_c_dv18";
                                function = "i2c_c";
-                               bias-disable;
+                               bias-pull-up;
                        };
                };
 
index 942df754a0ed29bcaa4adc6bf644f2cd1e17e7f6..1221f454513089f6db2df801c1e3b2b2526a11ac 100644 (file)
        };
 };
 
+&saradc {
+       compatible = "amlogic,meson-gxlx-saradc", "amlogic,meson-saradc";
+};
+
 &usb {
        dr_mode = "host";
 };
index 957577d986c0675a503115e1ccbc4387c2051620..9d99ed2994dfa27ca5808da7ae0825e9af255417 100644 (file)
                                };
                        };
 
+                       clk_msr: clock-measure@48000 {
+                               compatible = "amlogic,s4-clk-measure";
+                               reg = <0x0 0x48000 0x0 0x1c>;
+                       };
+
                        spicc0: spi@50000 {
                                compatible = "amlogic,meson-g12a-spicc";
                                reg = <0x0 0x50000 0x0 0x44>;
index a3463149db3d2ce670cce5a7b42308bcd3cc771a..9be3084b090d2441098d97155e8d56d54560799b 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU1_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU2_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU3_CLK>;
-       clock-latency = <50000>;
 };
 
 &cvbs_vdac_port {
index 40db95f64636d29294ba24d1a335435c74a87729..538b35036954fba115a6759030d2d4fa5ea793d9 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU1_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU2_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU3_CLK>;
-       clock-latency = <50000>;
 };
 
 &ext_mdio {
index 5d75ad3f3e46b7d8f5a036df0c42f0af1ffa2f31..a3d9b66b6878fb2744e8dc31a95c53fa837613e1 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU1_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU2_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU3_CLK>;
-       clock-latency = <50000>;
 };
 
 &pwm_AO_cd {
index ad8d0788376039e622f303f3c7a6b4dddf0521cf..c4524eb4f0996dfbccec16ca5b936a5c3b2663a5 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU1_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU2_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU3_CLK>;
-       clock-latency = <50000>;
 };
 
 &ext_mdio {
index 537370db360fc36ac84015e0e1fb59ac43f7afe5..5daadfb170b42cc52f74052593218fc0c6709053 100644 (file)
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU1_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU2_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu_b>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU3_CLK>;
-       clock-latency = <50000>;
 };
index 37d7f64b6d5d8ffa4aca0c4c56741da29dcf943f..024d2eb8e6ee0f6a198cd70f144dfd0a0b26fa61 100644 (file)
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu1 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU1_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu2 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU2_CLK>;
-       clock-latency = <50000>;
 };
 
 &cpu3 {
        cpu-supply = <&vddcpu>;
        operating-points-v2 = <&cpu_opp_table>;
        clocks = <&clkc CLKID_CPU3_CLK>;
-       clock-latency = <50000>;
 };
 
 &ethmac {
index 97e4b52066dcf205156b3525cbf411650635af14..966ebb19cc55f4df8e3ee061ab35fa8a22e3384d 100644 (file)
                opp-1000000000 {
                        opp-hz = /bits/ 64 <1000000000>;
                        opp-microvolt = <770000>;
+                       clock-latency-ns = <50000>;
                };
 
                opp-1200000000 {
index d820b0e430507f681a5f2aa13a498be98080e1db..5b5175d6978c45052ded495fc0d18ee3a8fbfdcb 100644 (file)
@@ -37,6 +37,9 @@
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
                };
 
                cpu1: cpu@1 {
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
+               };
+
+               l2_cache: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x100000>;
                };
        };
 
index c0e9ae45627c8150bc0ddcdc1e6ab65d52fa7219..09db4ed64054aefe5b8f8298553d87fe5514e81a 100644 (file)
@@ -36,6 +36,9 @@
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
                };
 
                cpu1: cpu@1 {
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
+               };
+
+               l2_cache: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x300000>;
                };
        };
 
index d56d49c048bbf55e5f2edf40f6fd1fcff6342a9f..fee3507658948a9b4db6a185665fdff9f5acc446 100644 (file)
@@ -36,6 +36,9 @@
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
                };
 
                cpu1: cpu@1 {
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
+               };
+
+               l2_cache: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x300000>;
                };
        };
 
index 3df2fd3993b52884d7c00b65099c88d830a7a4c3..9740fbf200f0bcd0e7d1b81885fe9d9ff8f04fdc 100644 (file)
@@ -20,8 +20,6 @@
                compatible = "jedec,spi-nor";
                reg = <0x0>;
                spi-max-frequency = <25000000>;
-               #address-cells = <1>;
-               #size-cells = <1>;
 
                partitions {
                        compatible = "fixed-partitions";
index 620b17e4031f069874aaabadbf06b7b29ec4031e..d2cf81926f284ccf7627701cc82edff31d4d72d6 100644 (file)
@@ -11,6 +11,7 @@
 #include <dt-bindings/interrupt-controller/apple-aic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/pinctrl/apple.h>
+#include <dt-bindings/spmi/spmi.h>
 
 #include "multi-die-cpp.h"
 
index a963a5011799a0480f88688fb4372a31f0bbf806..e36f422d257d8fe3a62bfa6e0f0e0dc6c34608a4 100644 (file)
@@ -11,6 +11,7 @@
 #include <dt-bindings/interrupt-controller/apple-aic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/pinctrl/apple.h>
+#include <dt-bindings/spmi/spmi.h>
 
 #include "multi-die-cpp.h"
 
index e9b3140ba1a996eeb91b3f60470833060b632bd2..110bc6719512e334e04b496fb157cb4368679957 100644 (file)
                                <AIC_IRQ 0 749 IRQ_TYPE_LEVEL_HIGH>;
        };
 
+       nub_spmi0: spmi@2920a1300 {
+               compatible = "apple,t6000-spmi", "apple,spmi";
+               reg = <0x2 0x920a1300 0x0 0x100>;
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               pmic1: pmic@f {
+                       compatible = "apple,maverick-pmic", "apple,spmi-nvmem";
+                       reg = <0xf SPMI_USID>;
+
+                       nvmem-layout {
+                               compatible = "fixed-layout";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               pm_setting: pm-setting@1405 {
+                                       reg = <0x1405 0x1>;
+                               };
+
+                               rtc_offset: rtc-offset@1411 {
+                                       reg = <0x1411 0x6>;
+                               };
+
+                               boot_stage: boot-stage@6001 {
+                                       reg = <0x6001 0x1>;
+                               };
+
+                               boot_error_count: boot-error-count@6002 {
+                                       reg = <0x6002 0x1>;
+                                       bits = <0 4>;
+                               };
+
+                               panic_count: panic-count@6002 {
+                                       reg = <0x6002 0x1>;
+                                       bits = <4 4>;
+                               };
+
+                               boot_error_stage: boot-error-stage@6003 {
+                                       reg = <0x6003 0x1>;
+                               };
+
+                               shutdown_flag: shutdown-flag@600f {
+                                       reg = <0x600f 0x1>;
+                                       bits = <3 1>;
+                               };
+
+                               fault_shadow: fault-shadow@867b {
+                                       reg = <0x867b 0x10>;
+                               };
+
+                               socd: socd@8b00 {
+                                       reg = <0x8b00 0x400>;
+                               };
+                       };
+               };
+       };
+
        wdt: watchdog@2922b0000 {
                compatible = "apple,t6000-wdt", "apple,wdt";
                reg = <0x2 0x922b0000 0x0 0x4000>;
index 85a34dc7bc01088167d33d7b7e1cdb78161c46d8..52edc8d776a936ca5ba58537d4d68e153023f536 100644 (file)
@@ -37,6 +37,9 @@
                        operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
                };
 
                cpu1: cpu@1 {
                        operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
+               };
+
+               l2_cache: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x100000>;
                };
        };
 
index 8e2c67e19c4167fc6639458ce79588e153336603..a2efa81305df47bdfea6bc2a4d6749719a6ee619 100644 (file)
@@ -39,6 +39,9 @@
                        operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
                };
 
                cpu1: cpu@1 {
@@ -49,6 +52,9 @@
                        operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
                };
 
                cpu2: cpu@2 {
                        operating-points-v2 = <&typhoon_opp>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
+               };
+
+               l2_cache: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x200000>;
                };
        };
 
index 17e294bd7c44c7961cc3ba0ec5f4178840d5b9c6..b961d4f65bc379da3b215ca76d5f68691df06f4d 100644 (file)
@@ -36,6 +36,9 @@
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>; /* P-core */
+                       d-cache-size = <0x10000>; /* P-core */
                };
 
                cpu1: cpu@1 {
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>; /* P-core */
+                       d-cache-size = <0x10000>; /* P-core */
+               };
+
+               l2_cache: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x300000>; /* P-cluster */
                };
        };
 
index 5b280c896b760dc8b759bf38dae79060e34dfc19..974f78cc77cfe28d3c26a52a292b643172d8f5bd 100644 (file)
@@ -36,6 +36,9 @@
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>; /* P-core */
+                       d-cache-size = <0x10000>; /* P-core */
                };
 
                cpu1: cpu@1 {
@@ -46,6 +49,9 @@
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>; /* P-core */
+                       d-cache-size = <0x10000>; /* P-core */
                };
 
                cpu2: cpu@2 {
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>; /* P-core */
+                       d-cache-size = <0x10000>; /* P-core */
+               };
+
+               l2_cache: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x800000>; /* P-cluster */
                };
        };
 
index 42df2f51ad7be4c4533e76d18e49a9a747b6b7a8..a259e5735d938cfa5b29cee6c754c7a3c0aaae08 100644 (file)
@@ -36,6 +36,9 @@
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>; /* P-core */
+                       d-cache-size = <0x10000>; /* P-core */
                };
 
                cpu1: cpu@10001 {
                        performance-domains = <&cpufreq>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache>;
+                       i-cache-size = <0x10000>; /* P-core */
+                       d-cache-size = <0x10000>; /* P-core */
+               };
+
+               l2_cache: l2-cache {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x300000>; /* P-cluster */
                };
        };
 
index 4d54afcecd50b50ed1fd386ccfc46c373e190e6b..12acf8fc8bc6bcde6b11773cadd97e9ee115f510 100644 (file)
@@ -63,6 +63,9 @@
                        capacity-dmips-mhz = <633>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache_0>;
+                       i-cache-size = <0x8000>;
+                       d-cache-size = <0x8000>;
                };
 
                cpu_e1: cpu@1 {
@@ -74,6 +77,9 @@
                        capacity-dmips-mhz = <633>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache_0>;
+                       i-cache-size = <0x8000>;
+                       d-cache-size = <0x8000>;
                };
 
                cpu_e2: cpu@2 {
@@ -85,6 +91,9 @@
                        capacity-dmips-mhz = <633>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache_0>;
+                       i-cache-size = <0x8000>;
+                       d-cache-size = <0x8000>;
                };
 
                cpu_e3: cpu@3 {
                        capacity-dmips-mhz = <633>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache_0>;
+                       i-cache-size = <0x8000>;
+                       d-cache-size = <0x8000>;
                };
 
                cpu_p0: cpu@10004 {
                        capacity-dmips-mhz = <1024>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache_1>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
                };
 
                cpu_p1: cpu@10005 {
                        capacity-dmips-mhz = <1024>;
                        enable-method = "spin-table";
                        device_type = "cpu";
+                       next-level-cache = <&l2_cache_1>;
+                       i-cache-size = <0x10000>;
+                       d-cache-size = <0x10000>;
+               };
+
+               l2_cache_0: l2-cache-0 {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x100000>;
+               };
+
+               l2_cache_1: l2-cache-1 {
+                       compatible = "cache";
+                       cache-level = <2>;
+                       cache-unified;
+                       cache-size = <0x800000>;
                };
        };
 
index e2d9439397f71a93c28b75a7eea589f4bcb3e374..5b3c42e9f0e6776241bf746d3458766e44e3639a 100644 (file)
 
 &displaydfr_mipi {
        status = "okay";
+       #address-cells = <1>;
+       #size-cells = <0>;
 
        dfr_panel: panel@0 {
                compatible = "apple,j293-summit", "apple,summit";
index 8e82231acab59ca0bffdcecfb6681f59661fcd96..0c8206156bfefda8a32c869787b2e0c8e67a9d17 100644 (file)
@@ -71,7 +71,7 @@
  */
 &port00 {
        bus-range = <1 1>;
-       wifi0: network@0,0 {
+       wifi0: wifi@0,0 {
                compatible = "pci14e4,4425";
                reg = <0x10000 0x0 0x0 0x0 0x0>;
                /* To be filled by the loader */
index 97b6a067394e311ed19392a34237c74936dbb7d7..3a204845b85befb093dd470b4280e778c2894b09 100644 (file)
@@ -11,6 +11,7 @@
 #include <dt-bindings/interrupt-controller/apple-aic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/pinctrl/apple.h>
+#include <dt-bindings/spmi/spmi.h>
 
 / {
        compatible = "apple,t8103", "apple,arm-platform";
                        compatible = "apple,t8103-display-pipe-mipi", "apple,h7-display-pipe-mipi";
                        reg = <0x2 0x28600000 0x0 0x100000>;
                        power-domains = <&ps_mipi_dsi>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
                        status = "disabled";
 
                        ports {
                        };
                };
 
+               nub_spmi: spmi@23d0d9300 {
+                       compatible = "apple,t8103-spmi", "apple,spmi";
+                       reg = <0x2 0x3d0d9300 0x0 0x100>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+
+                       pmic1: pmic@f {
+                               compatible = "apple,sera-pmic", "apple,spmi-nvmem";
+                               reg = <0xf SPMI_USID>;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       boot_stage: boot-stage@9f01 {
+                                               reg = <0x9f01 0x1>;
+                                       };
+
+                                       boot_error_count: boot-error-count@9f02 {
+                                               reg = <0x9f02 0x1>;
+                                               bits = <0 4>;
+                                       };
+
+                                       panic_count: panic-count@9f02 {
+                                               reg = <0x9f02 0x1>;
+                                               bits = <4 4>;
+                                       };
+
+                                       boot_error_stage: boot-error-stage@9f03 {
+                                               reg = <0x9f03 0x1>;
+                                       };
+
+                                       shutdown_flag: shutdown-flag@9f0f {
+                                               reg = <0x9f0f 0x1>;
+                                               bits = <3 1>;
+                                       };
+
+                                       fault_shadow: fault-shadow@a67b {
+                                               reg = <0xa67b 0x10>;
+                                       };
+
+                                       socd: socd@ab00 {
+                                               reg = <0xab00 0x400>;
+                                       };
+
+                                       pm_setting: pm-setting@d001 {
+                                               reg = <0xd001 0x1>;
+                                       };
+
+                                       rtc_offset: rtc-offset@d100 {
+                                               reg = <0xd100 0x6>;
+                                       };
+                               };
+                       };
+               };
+
                pinctrl_nub: pinctrl@23d1f0000 {
                        compatible = "apple,t8103-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x3d1f0000 0x0 0x4000>;
index be86d34c6696cb47d31696541266e504cee8ce10..fb8ad7d4c65a8fe7966f5541f24f03a379143cfb 100644 (file)
@@ -63,6 +63,8 @@
 
 &displaydfr_mipi {
        status = "okay";
+       #address-cells = <1>;
+       #size-cells = <0>;
 
        dfr_panel: panel@0 {
                compatible = "apple,j493-summit", "apple,summit";
index d9b966d68e4fae2dfb21d6fb7a97ebba81643ae8..f68354194355807dae9b5922bb8aff74da3c29e6 100644 (file)
                        compatible = "apple,t8112-display-pipe-mipi", "apple,h7-display-pipe-mipi";
                        reg = <0x2 0x28600000 0x0 0x100000>;
                        power-domains = <&ps_mipi_dsi>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
                        status = "disabled";
 
                        ports {
                        interrupts = <AIC_IRQ 379 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               nub_spmi: spmi@23d714000 {
+                       compatible = "apple,t8112-spmi", "apple,spmi";
+                       reg = <0x2 0x3d714000 0x0 0x100>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+
+                       pmic1: pmic@e {
+                               compatible = "apple,stowe-pmic", "apple,spmi-nvmem";
+                               reg = <0xe SPMI_USID>;
+
+                               nvmem-layout {
+                                       compatible = "fixed-layout";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       fault_shadow: fault-shadow@867b {
+                                               reg = <0x867b 0x10>;
+                                       };
+
+                                       socd: socd@8b00 {
+                                               reg = <0x8b00 0x400>;
+                                       };
+
+                                       boot_stage: boot-stage@f701 {
+                                               reg = <0xf701 0x1>;
+                                       };
+
+                                       boot_error_count: boot-error-count@f702 {
+                                               reg = <0xf702 0x1>;
+                                               bits = <0 4>;
+                                       };
+
+                                       panic_count: panic-count@f702 {
+                                               reg = <0xf702 0x1>;
+                                               bits = <4 4>;
+                                       };
+
+                                       boot_error_stage: boot-error-stage@f703 {
+                                               reg = <0xf703 0x1>;
+                                       };
+
+                                       shutdown_flag: shutdown-flag@f70f {
+                                               reg = <0xf70f 0x1>;
+                                               bits = <3 1>;
+                                       };
+
+                                       pm_setting: pm-setting@f801 {
+                                               reg = <0xf801 0x1>;
+                                       };
+
+                                       rtc_offset: rtc-offset@f900 {
+                                               reg = <0xf900 0x6>;
+                                       };
+                               };
+                       };
+               };
+
                pinctrl_smc: pinctrl@23e820000 {
                        compatible = "apple,t8112-pinctrl", "apple,pinctrl";
                        reg = <0x2 0x3e820000 0x0 0x4000>;
index 56ada8728b608a4ac9fe228ac0812fdeb0350578..f35a5c96f3dae7b89ec684f606d2bc1f3619302e 100644 (file)
                        reg = <0x1a220000 0x1000>;
                        #address-cells = <1>;
                        #size-cells = <1>;
-                       clock-frequency = <50000000>;
                        ranges;
 
                        frame@1a230000 {
index 083be35495b395a1759c4df1137a9b1166cd5afd..a4b2b78d4df3d63eaf849be9b1371e32e3957672 100644 (file)
@@ -77,7 +77,6 @@
                             <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
                             <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
                             <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-               clock-frequency = <100000000>;
        };
 
        pmu {
index 9e10d7a6b5a2ce9ece2666c601a895311bf2c88b..68a69f17e93d80d5de2204b172867b3542a28931 100644 (file)
                #address-cells = <2>;
                #size-cells = <0>;
 
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_SLEEP_0: cpu-sleep-0 {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x0010000>;
+                               entry-latency-us = <40>;
+                               exit-latency-us = <100>;
+                               min-residency-us = <150>;
+                               status = "disabled";
+                       };
+
+                       CLUSTER_SLEEP_0: cluster-sleep-0 {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x1010000>;
+                               entry-latency-us = <500>;
+                               exit-latency-us = <1000>;
+                               min-residency-us = <2500>;
+                               status = "disabled";
+                       };
+               };
+
                cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,armv8";
@@ -56,6 +80,7 @@
                        d-cache-line-size = <64>;
                        d-cache-sets = <256>;
                        next-level-cache = <&C0_L2>;
+                       cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
                };
                cpu1: cpu@100 {
                        device_type = "cpu";
@@ -69,6 +94,7 @@
                        d-cache-line-size = <64>;
                        d-cache-sets = <256>;
                        next-level-cache = <&C0_L2>;
+                       cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
                };
                cpu2: cpu@200 {
                        device_type = "cpu";
                        d-cache-line-size = <64>;
                        d-cache-sets = <256>;
                        next-level-cache = <&C0_L2>;
+                       cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
                };
                cpu3: cpu@300 {
                        device_type = "cpu";
                        d-cache-line-size = <64>;
                        d-cache-sets = <256>;
                        next-level-cache = <&C0_L2>;
+                       cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
                };
                cpu4: cpu@10000 {
                        device_type = "cpu";
                        d-cache-line-size = <64>;
                        d-cache-sets = <256>;
                        next-level-cache = <&C1_L2>;
+                       cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
                };
                cpu5: cpu@10100 {
                        device_type = "cpu";
                        d-cache-line-size = <64>;
                        d-cache-sets = <256>;
                        next-level-cache = <&C1_L2>;
+                       cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
                };
                cpu6: cpu@10200 {
                        device_type = "cpu";
                        d-cache-line-size = <64>;
                        d-cache-sets = <256>;
                        next-level-cache = <&C1_L2>;
+                       cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
                };
                cpu7: cpu@10300 {
                        device_type = "cpu";
                        d-cache-line-size = <64>;
                        d-cache-sets = <256>;
                        next-level-cache = <&C1_L2>;
+                       cpu-idle-states = <&CPU_SLEEP_0 &CLUSTER_SLEEP_0>;
                };
                C0_L2: l2-cache0 {
                        compatible = "cache";
 
        memory@80000000 {
                device_type = "memory";
-               reg = <0x00000000 0x80000000 0 0x80000000>,
+               reg = <0x00000000 0x80000000 0 0x7c000000>,
                      <0x00000008 0x80000000 0 0x80000000>;
        };
 
                             <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
        };
 
+       timer@2a810000 {
+               compatible = "arm,armv7-timer-mem";
+               reg = <0x0 0x2a810000 0x0 0x10000>;
+               ranges = <0 0x0 0x2a820000 0x20000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               frame@2a830000 {
+                       frame-number = <1>;
+                       interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+                       reg = <0x10000 0x10000>;
+               };
+       };
+
        pmu {
                compatible = "arm,armv8-pmuv3";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
                interrupts = <GIC_PPI 5 IRQ_TYPE_LEVEL_HIGH>;
        };
 
+       ete-0 {
+               compatible = "arm,embedded-trace-extension";
+               cpu = <&cpu0>;
+               status = "disabled";
+       };
+
+       ete-1 {
+               compatible = "arm,embedded-trace-extension";
+               cpu = <&cpu1>;
+               status = "disabled";
+       };
+
+       ete-2 {
+               compatible = "arm,embedded-trace-extension";
+               cpu = <&cpu2>;
+               status = "disabled";
+       };
+
+       ete-3 {
+               compatible = "arm,embedded-trace-extension";
+               cpu = <&cpu3>;
+               status = "disabled";
+       };
+
+       ete-4 {
+               compatible = "arm,embedded-trace-extension";
+               cpu = <&cpu4>;
+               status = "disabled";
+       };
+
+       ete-5 {
+               compatible = "arm,embedded-trace-extension";
+               cpu = <&cpu5>;
+               status = "disabled";
+       };
+
+       ete-6 {
+               compatible = "arm,embedded-trace-extension";
+               cpu = <&cpu6>;
+               status = "disabled";
+       };
+
+       ete-7 {
+               compatible = "arm,embedded-trace-extension";
+               cpu = <&cpu7>;
+               status = "disabled";
+       };
+
+       trbe {
+               compatible = "arm,trace-buffer-extension";
+               interrupts = <GIC_PPI 15 IRQ_TYPE_LEVEL_LOW>;
+               status = "disabled";
+       };
+
        pci: pci@40000000 {
                #address-cells = <0x3>;
                #size-cells = <0x2>;
index 055764d0b9e5ad82b02aa4f476abdf5a7e542524..9ccb80821bdbba95983b45b0c5a7e6698668ebdb 100644 (file)
@@ -10,7 +10,6 @@
        memtimer: timer@2a810000 {
                compatible = "arm,armv7-timer-mem";
                reg = <0x0 0x2a810000 0x0 0x10000>;
-               clock-frequency = <50000000>;
                #address-cells = <1>;
                #size-cells = <1>;
                ranges = <0 0x0 0x2a820000 0x20000>;
index 7f7226711d4bb8446e9111894a0bea2eb0d22345..a4a29193d4eb3eb80ff2f3ea1e7c59a07210c4bd 100644 (file)
                             <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
                             <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
                             <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
-               clock-frequency = <100000000>;
        };
 
        pmu {
index 7e3cef2ed3522e202487e799b2021cd45398e006..fb5415eb347a028fc65090027a4c4fc89c8280f5 100644 (file)
                                  "UART1_TO_RSP";       /* GPIO_15 */
        };
 };
+
+&gpio0 {
+       status = "okay";
+       gpio-line-names = "PERST_N",            /* GPIO_0 */
+                         "LM96063_ALERT_N",    /* GPIO_1 */
+                         "INA3221_PV",         /* GPIO_2 */
+                         "INA3221_CRIT",       /* GPIO_3 */
+                         "INA3221_WARN",       /* GPIO_4 */
+                         "INA3221_TC",         /* GPIO_5 */
+                         "QSPI0_RST_N",        /* GPIO_6 */
+                         "LM96063_TCRIT_N",    /* GPIO_7 */
+                         "DSI_TCH_INT",        /* GPIO_8 */
+                         "DSI_RST",            /* GPIO_9 */
+                         "DSI_BL",             /* GPIO_10 */
+                         "DSI_INT",            /* GPIO_11 */
+                         "ETH_RST",            /* GPIO_12 */
+                         "CSI0_RST",           /* GPIO_13 */
+                         "CSI0_PWDN",          /* GPIO_14 */
+                         "CSI1_RST",           /* GPIO_15 */
+                         "CSI1_PWDN",          /* GPIO_16 */
+                         "CSI2_RST",           /* GPIO_17 */
+                         "CSI2_PWDN",          /* GPIO_18 */
+                         "CSI3_RST",           /* GPIO_19 */
+                         "CSI3_PWDN",          /* GPIO_20 */
+                         "ADAC_RST",           /* GPIO_21 */
+                         "SD_SW_VDD",          /* GPIO_22 */
+                         "SD_PON_VDD",         /* GPIO_23 */
+                         "GPIO_EXP_INT",       /* GPIO_24 */
+                         "BOARD_ID_0",         /* GPIO_25 */
+                         "SDIO1_SW_VDD",       /* GPIO_26 */
+                         "SDIO1_PON_VDD",      /* GPIO_27 */
+                         "SDIO2_SW_VDD",       /* GPIO_28 */
+                         "SDIO2_PON_VDD",      /* GPIO_29 */
+                         "BOARD_ID_1",         /* GPIO_30 */
+                         "BOARD_ID_2";         /* GPIO_31 */
+};
index 7d399e6a532f5b24385dd837be965be771c7d24c..5a6c882b2f57d57d304869dee877c996cbabb712 100644 (file)
                                                 IRQ_TYPE_LEVEL_LOW)>;
                };
 
+               gpio0: gpio@4c0000 {
+                       compatible = "blaize,blzp1600-gpio";
+                       reg = <0x4c0000 0x1000>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       ngpios = <32>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       status = "disabled";
+               };
+
                uart0: serial@4d0000 {
                        compatible = "ns16550a";
                        reg = <0x4d0000 0x1000>;
index fbc56309660f5ffdb588c6c0dbc30842b9b0e185..34470e3d7171c11a8b18d5c5fcd8c6ad3cffa923 100644 (file)
        clocks = <&firmware_clocks 13>, <&firmware_clocks 14>, <&dvp 1>, <&clk_27MHz>;
        clock-names = "hdmi", "bvb", "audio", "cec";
 };
+
+&pcie1 {
+       status = "okay";
+};
+
+&pcie2 {
+       status = "okay";
+};
index 9e610a89a3378e79250309f006d876cc26644ce6..0a9212d3106f1348ee11e585c695a37b7d673993 100644 (file)
@@ -64,7 +64,7 @@
                        i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
                        next-level-cache = <&l2_cache_l0>;
 
-                       l2_cache_l0: l2-cache-l0 {
+                       l2_cache_l0: l2-cache {
                                compatible = "cache";
                                cache-size = <0x80000>;
                                cache-line-size = <64>;
@@ -88,7 +88,7 @@
                        i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
                        next-level-cache = <&l2_cache_l1>;
 
-                       l2_cache_l1: l2-cache-l1 {
+                       l2_cache_l1: l2-cache {
                                compatible = "cache";
                                cache-size = <0x80000>;
                                cache-line-size = <64>;
                        i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
                        next-level-cache = <&l2_cache_l2>;
 
-                       l2_cache_l2: l2-cache-l2 {
+                       l2_cache_l2: l2-cache {
                                compatible = "cache";
                                cache-size = <0x80000>;
                                cache-line-size = <64>;
                        i-cache-sets = <256>; // 64KiB(size)/64(line-size)=1024ways/4-way set
                        next-level-cache = <&l2_cache_l3>;
 
-                       l2_cache_l3: l2-cache-l3 {
+                       l2_cache_l3: l2-cache {
                                compatible = "cache";
                                cache-size = <0x80000>;
                                cache-line-size = <64>;
                #address-cells = <1>;
                #size-cells = <1>;
 
+               pcie_rescal: reset-controller@119500 {
+                       compatible = "brcm,bcm7216-pcie-sata-rescal";
+                       reg = <0x00119500 0x10>;
+                       #reset-cells = <0>;
+               };
+
                sdio1: mmc@fff000 {
                        compatible = "brcm,bcm2712-sdhci",
                                     "brcm,sdhci-brcmstb";
                        mmc-ddr-3_3v;
                };
 
+               bcm_reset: reset-controller@1504318 {
+                       compatible = "brcm,brcmstb-reset";
+                       reg = <0x01504318 0x30>;
+                       #reset-cells = <1>;
+               };
+
                system_timer: timer@7c003000 {
                        compatible = "brcm,bcm2835-system-timer";
                        reg = <0x7c003000 0x1000>;
                vc4: gpu {
                        compatible = "brcm,bcm2712-vc6";
                };
+
+               pcie0: pcie@1000100000 {
+                       compatible = "brcm,bcm2712-pcie";
+                       reg = <0x10 0x00100000 0x00 0x9310>;
+                       device_type = "pci";
+                       linux,pci-domain = <0>;
+                       max-link-speed = <2>;
+                       num-lanes = <1>;
+                       #address-cells = <3>;
+                       #interrupt-cells = <1>;
+                       #size-cells = <2>;
+                       interrupt-parent = <&gicv2>;
+                       interrupts = <GIC_SPI 213 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 214 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "pcie", "msi";
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+                       interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &gicv2 GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &gicv2 GIC_SPI 211 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &gicv2 GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&pcie_rescal>, <&bcm_reset 42>;
+                       reset-names = "rescal", "bridge";
+                       msi-controller;
+                       msi-parent = <&pcie0>;
+
+                       ranges =
+                               /* ~4GiB, 32-bit, non-prefetchable at PCIe 00_0000_0000 */
+                               <0x02000000 0x00 0x00000000 0x17 0x00000000 0x00 0xfffffffc>,
+                               /* 12GiB, 64-bit, prefetchable at PCIe 04_0000_0000 */
+                               <0x43000000 0x04 0x00000000 0x14 0x00000000 0x03 0x00000000>;
+
+                       dma-ranges =
+                               /* 64GiB, 64-bit, prefetchable at PCIe 10_0000_0000 */
+                               <0x43000000 0x10 0x00000000 0x00 0x00000000 0x10 0x00000000>;
+
+                       status = "disabled";
+               };
+
+               pcie1: pcie@1000110000 {
+                       compatible = "brcm,bcm2712-pcie";
+                       reg = <0x10 0x00110000 0x00 0x9310>;
+                       device_type = "pci";
+                       linux,pci-domain = <1>;
+                       max-link-speed = <2>;
+                       num-lanes = <1>;
+                       #address-cells = <3>;
+                       #interrupt-cells = <1>;
+                       #size-cells = <2>;
+                       interrupt-parent = <&gicv2>;
+                       interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "pcie", "msi";
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+                       interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 219 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &gicv2 GIC_SPI 220 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &gicv2 GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &gicv2 GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&pcie_rescal>, <&bcm_reset 43>;
+                       reset-names = "rescal", "bridge";
+                       msi-controller;
+                       msi-parent = <&mip1>;
+
+                       ranges =
+                               /* ~4GiB, 32-bit, non-prefetchable at PCIe 00_0000_0000 */
+                               <0x02000000 0x00 0x00000000 0x1b 0x00000000 0x00 0xfffffffc>,
+                               /* 12GiB, 64-bit, prefetchable at PCIe 04_0000_0000 */
+                               <0x43000000 0x04 0x00000000 0x18 0x00000000 0x03 0x00000000>;
+
+                       dma-ranges =
+                               /* 64GiB, 64-bit, non-prefetchable at PCIe 10_0000_0000 */
+                               <0x03000000 0x10 0x00000000 0x00 0x00000000 0x10 0x00000000>,
+                               /* 4KiB, 64-bit, non-prefetchable at PCIe ff_ffff_f000 MIP1 */
+                               <0x03000000 0xff 0xfffff000 0x10 0x00131000 0x00 0x00001000>;
+
+                       status = "disabled";
+               };
+
+               pcie2: pcie@1000120000 {
+                       compatible = "brcm,bcm2712-pcie";
+                       reg = <0x10 0x00120000 0x00 0x9310>;
+                       device_type = "pci";
+                       linux,pci-domain = <2>;
+                       max-link-speed = <2>;
+                       num-lanes = <4>;
+                       #address-cells = <3>;
+                       #interrupt-cells = <1>;
+                       #size-cells = <2>;
+                       interrupt-parent = <&gicv2>;
+                       interrupts = <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "pcie", "msi";
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+                       interrupt-map = <0 0 0 1 &gicv2 GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &gicv2 GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &gicv2 GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &gicv2 GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&pcie_rescal>, <&bcm_reset 44>;
+                       reset-names = "rescal", "bridge";
+                       msi-controller;
+                       msi-parent = <&mip0>;
+
+                       ranges =
+                               /* ~4GiB, 32-bit, non-prefetchable at PCIe 00_0000_0000 */
+                               <0x02000000 0x00 0x00000000 0x1f 0x00000000 0x00 0xfffffffc>,
+                               /* 12GiB, 64-bit, prefetchable at PCIe 04_0000_0000 */
+                               <0x43000000 0x04 0x00000000 0x1c 0x00000000 0x03 0x00000000>;
+
+                       dma-ranges =
+                               /* 4MiB, 32-bit, non-prefetchable at PCIe 00_0000_0000 */
+                               <0x02000000 0x00 0x00000000 0x1f 0x00000000 0x00 0x00400000>,
+                               /* 64GiB, 64-bit, prefetchable at PCIe 10_0000_0000 */
+                               <0x43000000 0x10 0x00000000 0x00 0x00000000 0x10 0x00000000>,
+                               /* 4KiB, 64-bit, non-prefetchable at PCIe ff_ffff_f000 MIP0 */
+                               <0x03000000 0xff 0xfffff000 0x10 0x00130000 0x00 0x00001000>;
+
+                       status = "disabled";
+               };
+
+               mip0: msi-controller@1000130000 {
+                       compatible = "brcm,bcm2712-mip";
+                       reg = <0x10 0x00130000 0x00 0xc0>,
+                             <0xff 0xfffff000 0x00 0x1000>;
+                       msi-controller;
+                       msi-ranges = <&gicv2 GIC_SPI 128 IRQ_TYPE_EDGE_RISING 64>;
+                       brcm,msi-offset = <0>;
+               };
+
+               mip1: msi-controller@1000131000 {
+                       compatible = "brcm,bcm2712-mip";
+                       reg = <0x10 0x00131000 0x00 0xc0>,
+                             <0xff 0xfffff000 0x00 0x1000>;
+                       msi-controller;
+                       msi-ranges = <&gicv2 GIC_SPI 247 IRQ_TYPE_EDGE_RISING 8>;
+                       brcm,msi-offset = <8>;
+               };
        };
 
        timer {
diff --git a/src/arm64/broadcom/bcm2837-rpi-2-b.dts b/src/arm64/broadcom/bcm2837-rpi-2-b.dts
new file mode 100644 (file)
index 0000000..57742ed
--- /dev/null
@@ -0,0 +1,2 @@
+// SPDX-License-Identifier: GPL-2.0
+#include "arm/broadcom/bcm2837-rpi-2-b.dts"
diff --git a/src/arm64/exynos/exynos7870-a2corelte.dts b/src/arm64/exynos/exynos7870-a2corelte.dts
new file mode 100644 (file)
index 0000000..eb7b485
--- /dev/null
@@ -0,0 +1,630 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Samsung Galaxy A2 Core (a2corelte) device tree source
+ *
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Kaustabh Chakraborty <kauschluss@disroot.org>
+ */
+
+/dts-v1/;
+#include "exynos7870.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy A2 Core";
+       compatible = "samsung,a2corelte", "samsung,exynos7870";
+       chassis-type = "handset";
+
+       aliases {
+               mmc0 = &mmc0;
+               mmc1 = &mmc1;
+               mmc2 = &mmc2;
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &serial2;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               stdout-path = &serial2;
+
+               framebuffer@67000000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0x0 0x67000000 (540 * 960 * 4)>;
+                       width = <540>;
+                       height = <960>;
+                       stride = <(540 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               label = "GPIO Keys";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&key_power &key_voldown &key_volup>;
+
+               key-power {
+                       label = "Power Key";
+                       gpios = <&gpa0 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+               };
+
+               key-voldown {
+                       label = "Volume Down Key";
+                       gpios = <&gpa2 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+               };
+
+               key-volup {
+                       label = "Volume Up Key";
+                       gpios = <&gpa2 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+               };
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x0 0x40000000 0x3f200000>;
+       };
+
+       pwrseq_mmc1: pwrseq-mmc1 {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>;
+       };
+
+       /* mmc2: vmmc */
+       vdd_fixed_mmc2: regulator-fixed-mmc2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_fixed_mmc2";
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               gpio = <&gpc0 0 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       vdd_fixed_proxled: regulator-fixed-proxled {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_fixed_proxled";
+               regulator-boot-on;
+               regulator-always-on;
+               gpio = <&gpd4 3 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               ramoops@46800000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0x46800000 0x8000>;
+                       console-size = <0x4000>;
+                       pmsg-size = <0x4000>;
+               };
+
+               framebuffer@67000000 {
+                       reg = <0x0 0x67000000 (540 * 960 * 4)>;
+                       no-map;
+               };
+       };
+
+       vibrator {
+               compatible = "regulator-haptic";
+               haptic-supply = <&vdd_ldo32>;
+               min-microvolt = <3300000>;
+               max-microvolt = <3300000>;
+       };
+};
+
+&gpu {
+       status = "okay";
+};
+
+&hsi2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       status = "okay";
+
+       pmic@66 {
+               compatible = "samsung,s2mpu05-pmic";
+               reg = <0x66>;
+               interrupt-parent = <&gpa0>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_irq>;
+
+               regulators {
+                       vdd_buck1: buck1 {
+                               regulator-name = "vdd_buck1";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck2: buck2 {
+                               regulator-name = "vdd_buck2";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck3: buck3 {
+                               regulator-name = "vdd_buck3";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck4: buck4 {
+                               regulator-name = "vdd_buck4";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck5: buck5 {
+                               regulator-name = "vdd_buck5";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <2100000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo1: ldo1 {
+                               regulator-name = "vdd_ldo1";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* mmc2: vqmmc */
+                       vdd_ldo2: ldo2 {
+                               regulator-name = "vdd_ldo2";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo3: ldo3 {
+                               regulator-name = "vdd_ldo3";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo4: ldo4 {
+                               regulator-name = "vdd_ldo4";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo5: ldo5 {
+                               regulator-name = "vdd_ldo5";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo6: ldo6 {
+                               regulator-name = "vdd_ldo6";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo7: ldo7 {
+                               regulator-name = "vdd_ldo7";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* usbdrd: vdd33 */
+                       vdd_ldo8: ldo8 {
+                               regulator-name = "vdd_ldo8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3375000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo9: ldo9 {
+                               regulator-name = "vdd_ldo9";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo10: ldo10 {
+                               regulator-name = "vdd_ldo10";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo25: ldo25 {
+                               regulator-name = "vdd_ldo25";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* mmc0: vmmc */
+                       vdd_ldo26: ldo26 {
+                               regulator-name = "vdd_ldo26";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3375000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       /* mmc0: vqmmc */
+                       vdd_ldo27: ldo27 {
+                               regulator-name = "vdd_ldo27";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo29: ldo29 {
+                               regulator-name = "vdd_ldo29";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo30: ldo30 {
+                               regulator-name = "vdd_ldo30";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo31: ldo31 {
+                               regulator-name = "vdd_ldo31";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vibrator: haptic */
+                       vdd_ldo32: ldo32 {
+                               regulator-name = "vdd_ldo32";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo33: ldo33 {
+                               regulator-name = "vdd_ldo33";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo34: ldo34 {
+                               regulator-name = "vdd_ldo34";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* touchscreen: vdd */
+                       vdd_ldo35: ldo35 {
+                               regulator-name = "vdd_ldo35";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+               };
+       };
+};
+
+&i2c5 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <400000>;
+
+       status = "okay";
+
+       accelerometer@1d {
+               compatible = "st,lis2ds12";
+               reg = <0x1d>;
+               interrupt-parent = <&gpa2>;
+               interrupts = <3 IRQ_TYPE_EDGE_RISING>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&accel_irq>;
+
+               st,drdy-int-pin = <1>;
+       };
+
+       proximity@48 {
+               compatible = "sensortek,stk3013", "sensortek,stk3310";
+               reg = <0x48>;
+               interrupt-parent = <&gpa0>;
+               interrupts = <5 IRQ_TYPE_EDGE_BOTH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&proxm_irq>;
+
+               proximity-near-level = <25>;
+       };
+};
+
+&i2c6 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <400000>;
+
+       status = "okay";
+
+       touchscreen@4b {
+               compatible = "syna,rmi4-i2c";
+               reg = <0x4b>;
+               interrupt-parent = <&gpa0>;
+               interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_irq>;
+
+               vdd-supply = <&vdd_ldo35>;
+
+               syna,reset-delay-ms = <200>;
+               syna,startup-delay-ms = <200>;
+
+               rmi4-f01@1 {
+                       reg = <0x01>;
+                       syna,nosleep-mode = <1>;
+               };
+
+               rmi4-f12@12 {
+                       reg = <0x12>;
+                       syna,sensor-type = <1>;
+                       syna,rezero-wait-ms = <200>;
+                       syna,clip-x-high = <539>;
+                       syna,clip-y-high = <959>;
+                       touchscreen-x-mm = <62>;
+                       touchscreen-y-mm = <110>;
+               };
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_rdqs &sd0_bus1 &sd0_bus4 &sd0_bus8>;
+
+       vmmc-supply = <&vdd_ldo26>;
+       vqmmc-supply = <&vdd_ldo27>;
+
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 4>;
+       samsung,dw-mshc-ddr-timing = <2 4>;
+       non-removable;
+
+       status = "okay";
+};
+
+&mmc1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus1 &sd1_bus4>;
+
+       mmc-pwrseq = <&pwrseq_mmc1>;
+
+       bus-width = <4>;
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 3>;
+       samsung,dw-mshc-ddr-timing = <1 2>;
+       non-removable;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+
+       status = "okay";
+
+       wifi@1 {
+               compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac";
+               reg = <0x1>;
+               interrupt-names = "host-wake";
+               interrupt-parent = <&gpa2>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+
+               reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&mmc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4 &dwmmc2_irq>;
+
+       vmmc-supply = <&vdd_fixed_mmc2>;
+       vqmmc-supply = <&vdd_ldo2>;
+
+       bus-width = <4>;
+       card-detect-delay = <200>;
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 3>;
+       samsung,dw-mshc-ddr-timing = <1 2>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       broken-cd;
+       disable-wp;
+
+       status = "okay";
+};
+
+&oscclk {
+       clock-frequency = <26000000>;
+};
+
+&pinctrl_alive {
+       accel_irq: accel-irq-pins {
+               samsung,pins = "gpa2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       dwmmc2_irq: dwmmc2-irq-pins {
+               samsung,pins = "gpa0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       fuel_irq: fuel-irq-pins {
+               samsung,pins = "gpa0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_power: key-power-pins {
+               samsung,pins = "gpa0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_voldown: key-voldown-pins {
+               samsung,pins = "gpa2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_volup: key-volup-pins {
+               samsung,pins = "gpa2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       pmic_irq: pmic-irq-pins {
+               samsung,pins = "gpa0-2";
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       proxm_irq: proxm-irq-pins {
+               samsung,pins = "gpa0-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       touch_irq: touch-irq-pins {
+               samsung,pins = "gpa0-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       wlan_hostwake: wlan-hostwake-pins {
+               samsung,pins = "gpa2-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+       };
+};
+
+&pinctrl_top {
+       bt_enable: bt-enable-pins {
+               samsung,pins = "gpd4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       wlan_enable: wlan-enable-pins {
+               samsung,pins = "gpd3-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+               samsung,pin-val = <0>;
+       };
+};
+
+&serial1 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43430a1-bt";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_btwake &bt_hostwake &bt_enable>;
+
+               device-wakeup-gpios = <&gpa1 2 GPIO_ACTIVE_HIGH>;
+               host-wakeup-gpios = <&gpa1 6 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpd4 0 GPIO_ACTIVE_HIGH>;
+
+               max-speed = <3000000>;
+       };
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&usbdrd {
+       vdd33-supply = <&vdd_ldo8>;
+
+       status = "okay";
+};
diff --git a/src/arm64/exynos/exynos7870-j6lte.dts b/src/arm64/exynos/exynos7870-j6lte.dts
new file mode 100644 (file)
index 0000000..61eec1a
--- /dev/null
@@ -0,0 +1,613 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Samsung Galaxy J6 (j6lte) device tree source
+ *
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Kaustabh Chakraborty <kauschluss@disroot.org>
+ */
+
+/dts-v1/;
+#include "exynos7870.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy J6";
+       compatible = "samsung,j6lte", "samsung,exynos7870";
+       chassis-type = "handset";
+
+       aliases {
+               mmc0 = &mmc0;
+               mmc1 = &mmc1;
+               mmc2 = &mmc2;
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &serial2;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               stdout-path = &serial2;
+
+               framebuffer@67000000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0x0 0x67000000 (720 * 1480 * 4)>;
+                       width = <720>;
+                       height = <1480>;
+                       stride = <(720 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       gpio-hall-effect-sensor {
+               compatible = "gpio-keys";
+               label = "GPIO Hall Effect Sensor";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&hall_irq>;
+
+               event-hall-effect-sensor {
+                       label = "Hall Effect Sensor";
+                       gpios = <&gpa1 3 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       linux,can-disable;
+                       wakeup-source;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               label = "GPIO Keys";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&key_power &key_voldown &key_volup>;
+
+               key-power {
+                       label = "Power Key";
+                       gpios = <&gpa0 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+               };
+
+               key-voldown {
+                       label = "Volume Down Key";
+                       gpios = <&gpa2 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+               };
+
+               key-volup {
+                       label = "Volume Up Key";
+                       gpios = <&gpa2 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+               };
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x0 0x40000000 0x3d800000>,
+                     <0x0 0x80000000 0x7d800000>;
+       };
+
+       pwrseq_mmc1: pwrseq-mmc1 {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>;
+       };
+
+       /* mmc2: vmmc */
+       vdd_fixed_mmc2: regulator-fixed-mmc2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_fixed_mmc2";
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               gpio = <&gpc0 0 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               ramoops@46e00000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0x46e00000 0x8000>;
+                       console-size = <0x4000>;
+                       pmsg-size = <0x4000>;
+               };
+
+               framebuffer@67000000 {
+                       reg = <0x0 0x67000000 (720 * 1480 * 4)>;
+                       no-map;
+               };
+       };
+
+       vibrator {
+               compatible = "regulator-haptic";
+               haptic-supply = <&vdd_ldo32>;
+               min-microvolt = <3300000>;
+               max-microvolt = <3300000>;
+       };
+};
+
+&gpu {
+       status = "okay";
+};
+
+&hsi2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       status = "okay";
+
+       pmic@66 {
+               compatible = "samsung,s2mpu05-pmic";
+               reg = <0x66>;
+               interrupt-parent = <&gpa0>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_irq>;
+
+               regulators {
+                       vdd_buck1: buck1 {
+                               regulator-name = "vdd_buck1";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck2: buck2 {
+                               regulator-name = "vdd_buck2";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck3: buck3 {
+                               regulator-name = "vdd_buck3";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck4: buck4 {
+                               regulator-name = "vdd_buck4";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck5: buck5 {
+                               regulator-name = "vdd_buck5";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <2100000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo1: ldo1 {
+                               regulator-name = "vdd_ldo1";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* mmc2: vqmmc */
+                       vdd_ldo2: ldo2 {
+                               regulator-name = "vdd_ldo2";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo3: ldo3 {
+                               regulator-name = "vdd_ldo3";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo4: ldo4 {
+                               regulator-name = "vdd_ldo4";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo5: ldo5 {
+                               regulator-name = "vdd_ldo5";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo6: ldo6 {
+                               regulator-name = "vdd_ldo6";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo7: ldo7 {
+                               regulator-name = "vdd_ldo7";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* usbdrd: vdd33 */
+                       vdd_ldo8: ldo8 {
+                               regulator-name = "vdd_ldo8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3375000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo9: ldo9 {
+                               regulator-name = "vdd_ldo9";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo10: ldo10 {
+                               regulator-name = "vdd_ldo10";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo25: ldo25 {
+                               regulator-name = "vdd_ldo25";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* mmc0: vmmc */
+                       vdd_ldo26: ldo26 {
+                               regulator-name = "vdd_ldo26";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3375000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       /* mmc0: vqmmc */
+                       vdd_ldo27: ldo27 {
+                               regulator-name = "vdd_ldo27";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo29: ldo29 {
+                               regulator-name = "vdd_ldo29";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo30: ldo30 {
+                               regulator-name = "vdd_ldo30";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo31: ldo31 {
+                               regulator-name = "vdd_ldo31";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vibrator: haptic */
+                       vdd_ldo32: ldo32 {
+                               regulator-name = "vdd_ldo32";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo33: ldo33 {
+                               regulator-name = "vdd_ldo33";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* touchscreen: vdd */
+                       vdd_ldo34: ldo34 {
+                               regulator-name = "vdd_ldo34";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       vdd_ldo35: ldo35 {
+                               regulator-name = "vdd_ldo35";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
+
+&i2c5 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <400000>;
+
+       status = "okay";
+
+       accelerometer@1d {
+               compatible = "st,lis2ds12";
+               reg = <0x1d>;
+               interrupt-parent = <&gpa2>;
+               interrupts = <3 IRQ_TYPE_EDGE_RISING>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&accel_irq>;
+
+               mount-matrix = "-1", "0",  "0",
+                               "0", "1",  "0",
+                               "0", "0", "-1";
+
+               st,drdy-int-pin = <1>;
+       };
+};
+
+&i2c6 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <400000>;
+
+       status = "okay";
+
+       touchscreen@20 {
+               compatible = "zinitix,bt532";
+               reg = <0x20>;
+               interrupt-parent = <&gpa0>;
+               interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_irq>;
+
+               touchscreen-size-x = <720>;
+               touchscreen-size-y = <1480>;
+
+               vdd-supply = <&vdd_ldo34>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_rdqs &sd0_bus1 &sd0_bus4 &sd0_bus8>;
+
+       vmmc-supply = <&vdd_ldo26>;
+       vqmmc-supply = <&vdd_ldo27>;
+
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 4>;
+       samsung,dw-mshc-ddr-timing = <2 4>;
+       non-removable;
+
+       status = "okay";
+};
+
+&mmc1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus1 &sd1_bus4>;
+
+       mmc-pwrseq = <&pwrseq_mmc1>;
+
+       bus-width = <4>;
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 3>;
+       samsung,dw-mshc-ddr-timing = <1 2>;
+       non-removable;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+
+       status = "okay";
+
+       wifi@1 {
+               compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac";
+               reg = <0x1>;
+               interrupt-names = "host-wake";
+               interrupt-parent = <&gpa2>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+
+               reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&mmc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4 &dwmmc2_irq>;
+
+       vmmc-supply = <&vdd_fixed_mmc2>;
+       vqmmc-supply = <&vdd_ldo2>;
+
+       bus-width = <4>;
+       card-detect-delay = <200>;
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 3>;
+       samsung,dw-mshc-ddr-timing = <1 2>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       broken-cd;
+       disable-wp;
+
+       status = "okay";
+};
+
+&oscclk {
+       clock-frequency = <26000000>;
+};
+
+&pinctrl_alive {
+       accel_irq: accel-irq-pins {
+               samsung,pins = "gpa2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       dwmmc2_irq: dwmmc2-irq-pins {
+               samsung,pins = "gpa0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       fuel_irq: fuel-irq-pins {
+               samsung,pins = "gpa0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       hall_irq: hall-irq-pins {
+               samsung,pins = "gpa1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_power: key-power-pins {
+               samsung,pins = "gpa0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_voldown: key-voldown-pins {
+               samsung,pins = "gpa2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_volup: key-volup-pins {
+               samsung,pins = "gpa2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       pmic_irq: pmic-irq-pins {
+               samsung,pins = "gpa0-2";
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       touch_irq: touch-irq-pins {
+               samsung,pins = "gpa0-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       wlan_hostwake: wlan-hostwake-pins {
+               samsung,pins = "gpa2-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+       };
+};
+
+&pinctrl_top {
+       bt_enable: bt-enable-pins {
+               samsung,pins = "gpd4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       wlan_enable: wlan-enable-pins {
+               samsung,pins = "gpd3-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+               samsung,pin-val = <0>;
+       };
+};
+
+&serial1 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43430a1-bt";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_btwake &bt_hostwake &bt_enable>;
+
+               device-wakeup-gpios = <&gpa1 2 GPIO_ACTIVE_HIGH>;
+               host-wakeup-gpios = <&gpa1 6 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpd4 0 GPIO_ACTIVE_HIGH>;
+
+               max-speed = <3000000>;
+       };
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&usbdrd {
+       vdd33-supply = <&vdd_ldo8>;
+
+       status = "okay";
+};
diff --git a/src/arm64/exynos/exynos7870-on7xelte.dts b/src/arm64/exynos/exynos7870-on7xelte.dts
new file mode 100644 (file)
index 0000000..eb97dcc
--- /dev/null
@@ -0,0 +1,662 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Samsung Galaxy J7 Prime (on7xelte) device tree source
+ *
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Kaustabh Chakraborty <kauschluss@disroot.org>
+ */
+
+/dts-v1/;
+#include "exynos7870.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       model = "Samsung Galaxy J7 Prime";
+       compatible = "samsung,on7xelte", "samsung,exynos7870";
+       chassis-type = "handset";
+
+       aliases {
+               mmc0 = &mmc0;
+               mmc1 = &mmc1;
+               mmc2 = &mmc2;
+               serial0 = &serial0;
+               serial1 = &serial1;
+               serial2 = &serial2;
+       };
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               stdout-path = &serial2;
+
+               framebuffer@67000000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0x0 0x67000000 (1080 * 1920 * 4)>;
+                       width = <1080>;
+                       height = <1920>;
+                       stride = <(1080 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               label = "GPIO Keys";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&key_home &key_power &key_voldown &key_volup>;
+
+               key-home {
+                       label = "Home Key";
+                       gpios = <&gpa1 7 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_HOMEPAGE>;
+               };
+
+               key-power {
+                       label = "Power Key";
+                       gpios = <&gpa0 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_POWER>;
+               };
+
+               key-voldown {
+                       label = "Volume Down Key";
+                       gpios = <&gpa2 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEDOWN>;
+               };
+
+               key-volup {
+                       label = "Volume Up Key";
+                       gpios = <&gpa2 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+               };
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x0 0x40000000 0x3e400000>,
+                     <0x0 0x80000000 0xbe400000>;
+       };
+
+       pwrseq_mmc1: pwrseq-mmc1 {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>;
+       };
+
+       /* mmc2: vmmc */
+       vdd_fixed_mmc2: regulator-fixed-mmc2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_fixed_mmc2";
+               regulator-max-microvolt = <2800000>;
+               regulator-min-microvolt = <2800000>;
+               gpio = <&gpc0 0 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <1>;
+               ranges;
+
+               ramoops@46e00000 {
+                       compatible = "ramoops";
+                       reg = <0x0 0x46e00000 0x8000>;
+                       console-size = <0x4000>;
+                       pmsg-size = <0x4000>;
+               };
+
+               framebuffer@67000000 {
+                       reg = <0x0 0x67000000 (1080 * 1920 * 4)>;
+                       no-map;
+               };
+       };
+
+       vibrator {
+               compatible = "regulator-haptic";
+               haptic-supply = <&vdd_ldo32>;
+               min-microvolt = <3300000>;
+               max-microvolt = <3300000>;
+       };
+};
+
+&gpu {
+       status = "okay";
+};
+
+&hsi2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       status = "okay";
+
+       pmic@66 {
+               compatible = "samsung,s2mpu05-pmic";
+               reg = <0x66>;
+
+               interrupt-parent = <&gpa0>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_irq>;
+
+               regulators {
+                       vdd_buck1: buck1 {
+                               regulator-name = "vdd_buck1";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck2: buck2 {
+                               regulator-name = "vdd_buck2";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck3: buck3 {
+                               regulator-name = "vdd_buck3";
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck4: buck4 {
+                               regulator-name = "vdd_buck4";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_buck5: buck5 {
+                               regulator-name = "vdd_buck5";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <2100000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo1: ldo1 {
+                               regulator-name = "vdd_ldo1";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* mmc2: vqmmc */
+                       vdd_ldo2: ldo2 {
+                               regulator-name = "vdd_ldo2";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo3: ldo3 {
+                               regulator-name = "vdd_ldo3";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo4: ldo4 {
+                               regulator-name = "vdd_ldo4";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo5: ldo5 {
+                               regulator-name = "vdd_ldo5";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo6: ldo6 {
+                               regulator-name = "vdd_ldo6";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo7: ldo7 {
+                               regulator-name = "vdd_ldo7";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* usbdrd: vdd33 */
+                       vdd_ldo8: ldo8 {
+                               regulator-name = "vdd_ldo8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3375000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo9: ldo9 {
+                               regulator-name = "vdd_ldo9";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo10: ldo10 {
+                               regulator-name = "vdd_ldo10";
+                               regulator-min-microvolt = <650000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo25: ldo25 {
+                               regulator-name = "vdd_ldo25";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* mmc0: vmmc */
+                       vdd_ldo26: ldo26 {
+                               regulator-name = "vdd_ldo26";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* mmc0: vqmmc */
+                       vdd_ldo27: ldo27 {
+                               regulator-name = "vdd_ldo27";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2375000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo29: ldo29 {
+                               regulator-name = "vdd_ldo29";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo30: ldo30 {
+                               regulator-name = "vdd_ldo30";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo31: ldo31 {
+                               regulator-name = "vdd_ldo31";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       /* vibrator: haptic */
+                       vdd_ldo32: ldo32 {
+                               regulator-name = "vdd_ldo32";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12000>;
+                       };
+
+                       vdd_ldo33: ldo33 {
+                               regulator-name = "vdd_ldo33";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo34: ldo34 {
+                               regulator-name = "vdd_ldo34";
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-ramp-delay = <12000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       vdd_ldo35: ldo35 {
+                               regulator-name = "vdd_ldo35";
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <400000>;
+
+       status = "okay";
+
+       touchscreen@70 {
+               compatible = "syna,rmi4-i2c";
+               reg = <0x70>;
+               interrupt-parent = <&gpc3>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_irq>;
+
+               syna,reset-delay-ms = <200>;
+               syna,startup-delay-ms = <200>;
+
+               rmi4-f01@1 {
+                       reg = <0x01>;
+                       syna,nosleep-mode = <1>;
+               };
+
+               rmi4-f12@12 {
+                       reg = <0x12>;
+                       syna,sensor-type = <1>;
+                       syna,rezero-wait-ms = <200>;
+                       syna,clip-x-high = <1079>;
+                       syna,clip-y-high = <1919>;
+                       touchscreen-x-mm = <68>;
+                       touchscreen-y-mm = <121>;
+               };
+       };
+};
+
+&i2c7 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <400000>;
+
+       status = "okay";
+
+       accelerometer@1d {
+               compatible = "st,lis2hh12";
+               reg = <0x1d>;
+               interrupt-parent = <&gpa2>;
+               interrupts = <3 IRQ_TYPE_EDGE_RISING>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&accel_irq>;
+
+               mount-matrix = "1",  "0",  "0",
+                              "0", "-1",  "0",
+                              "0",  "0", "-1";
+
+               st,drdy-int-pin = <1>;
+       };
+};
+
+&i2c8 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       samsung,i2c-sda-delay = <100>;
+       samsung,i2c-max-bus-freq = <400000>;
+
+       status = "okay";
+
+       proximity@48 {
+               compatible = "sensortek,stk3013", "sensortek,stk3310";
+               reg = <0x48>;
+               interrupt-parent = <&gpa0>;
+               interrupts = <5 IRQ_TYPE_EDGE_BOTH>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&proxm_irq>;
+
+               proximity-near-level = <25>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_rdqs &sd0_bus1 &sd0_bus4 &sd0_bus8>;
+
+       vmmc-supply = <&vdd_ldo26>;
+       vqmmc-supply = <&vdd_ldo27>;
+
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 4>;
+       samsung,dw-mshc-ddr-timing = <2 4>;
+       non-removable;
+
+       status = "okay";
+};
+
+&mmc1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus1 &sd1_bus4>;
+
+       mmc-pwrseq = <&pwrseq_mmc1>;
+
+       bus-width = <4>;
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 3>;
+       samsung,dw-mshc-ddr-timing = <1 2>;
+       non-removable;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+
+       status = "okay";
+
+       wifi@1 {
+               compatible = "brcm,bcm43430a1-fmac", "brcm,bcm4329-fmac";
+               reg = <0x1>;
+               interrupt-names = "host-wake";
+               interrupt-parent = <&gpa2>;
+               interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
+
+               reset-gpios = <&gpd3 6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&mmc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4 &dwmmc2_irq>;
+
+       vmmc-supply = <&vdd_fixed_mmc2>;
+       vqmmc-supply = <&vdd_ldo2>;
+
+       bus-width = <4>;
+       card-detect-delay = <200>;
+       fifo-depth = <64>;
+       samsung,dw-mshc-ciu-div = <3>;
+       samsung,dw-mshc-sdr-timing = <0 3>;
+       samsung,dw-mshc-ddr-timing = <1 2>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       broken-cd;
+       disable-wp;
+
+       status = "okay";
+};
+
+&oscclk {
+       clock-frequency = <26000000>;
+};
+
+&pinctrl_alive {
+       accel_irq: accel-irq-pins {
+               samsung,pins = "gpa2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       dwmmc2_irq: dwmmc2-irq-pins {
+               samsung,pins = "gpa0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       fuel_irq: fuel-irq-pins {
+               samsung,pins = "gpa0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_home: key-home-pins {
+               samsung,pins = "gpa1-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_power: key-power-pins {
+               samsung,pins = "gpa0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_voldown: key-voldown-pins {
+               samsung,pins = "gpa2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       key_volup: key-volup-pins {
+               samsung,pins = "gpa2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       pmic_irq: pmic-irq-pins {
+               samsung,pins = "gpa0-2";
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       proxm_irq: proxm-irq-pins {
+               samsung,pins = "gpa0-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       tkey_irq: tkey-irq-pins {
+               samsung,pins = "gpa1-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       wlan_hostwake: wlan-hostwake-pins {
+               samsung,pins = "gpa2-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+       };
+};
+
+&pinctrl_top {
+       bt_enable: bt-enable-pins {
+               samsung,pins = "gpd4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       wlan_enable: wlan-enable-pins {
+               samsung,pins = "gpd3-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+               samsung,pin-val = <0>;
+       };
+};
+
+&pinctrl_touch {
+       touch_irq: touch-irq-pins {
+               samsung,pins = "gpc3-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+};
+
+&serial1 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43430a1-bt";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_btwake &bt_hostwake &bt_enable>;
+
+               device-wakeup-gpios = <&gpa1 2 GPIO_ACTIVE_HIGH>;
+               host-wakeup-gpios = <&gpa1 6 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpd4 1 GPIO_ACTIVE_HIGH>;
+
+               max-speed = <3000000>;
+       };
+};
+
+&serial2 {
+       status = "okay";
+};
+
+&usbdrd {
+       vdd33-supply = <&vdd_ldo8>;
+
+       status = "okay";
+};
diff --git a/src/arm64/exynos/exynos7870-pinctrl.dtsi b/src/arm64/exynos/exynos7870-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..99a28d0
--- /dev/null
@@ -0,0 +1,1021 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Samsung Exynos7870 SoC pin-mux and pin-config device tree source
+ *
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Kaustabh Chakraborty <kauschluss@disroot.org>
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include "exynos-pinctrl.h"
+
+&pinctrl_alive {
+       etc0: etc0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       etc1: etc1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpa0: gpa0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       gpa1: gpa1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+                            <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>;
+       };
+
+       gpa2: gpa2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpq0: gpq0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       bt_btwake: bt-btwake-pins {
+               samsung,pins = "gpa1-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       bt_hostwake: bt-hostwake-pins {
+               samsung,pins = "gpa1-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       gnss_sensor_i2c: gnss-sensor-i2c-pins {
+               samsung,pins = "gpa2-5", "gpa2-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_6>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       gnss_sensor_irq: gnss-sensor-irq-pins {
+               samsung,pins = "gpa2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_6>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+       };
+
+       nfc_int: nfc-int-pins {
+               samsung,pins = "gpa2-6";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+
+       uart2_bus: uart2-bus-pins {
+               samsung,pins = "gpa1-1", "gpa1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+       };
+
+       uart2_sleep: uart2-sleep-pins {
+               samsung,pins = "gpa1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+       };
+};
+
+&pinctrl_dispaud {
+       gpz0: gpz0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpz1: gpz1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpz2: gpz2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       i2s_amp_bus: i2s-amp-bus-pins {
+               samsung,pins = "gpz1-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       i2s_amp_bus_idle: i2s-amp-bus-idle-pins {
+               samsung,pins = "gpz1-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       i2s_bt_bus: i2s-bt-bus-pins {
+               samsung,pins = "gpz0-0", "gpz0-1", "gpz0-2", "gpz0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       i2s_bt_bus_idle: i2s-bt-bus-idle-pins {
+               samsung,pins = "gpz0-0", "gpz0-1", "gpz0-2", "gpz0-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       i2s_pmic_amp_bus: i2s-pmic-amp-bus-pins {
+               samsung,pins = "gpz1-0", "gpz1-1", "gpz1-2", "gpz1-3", "gpz1-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR6>;
+       };
+
+       i2s_pmic_amp_bus_idle: i2s-pmic-amp-bus-idle-pins {
+               samsung,pins = "gpz1-0", "gpz1-1", "gpz1-2", "gpz1-3", "gpz1-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR6>;
+       };
+
+       i2s_pmic_bus: i2s-pmic-bus-pins {
+               samsung,pins = "gpz1-0", "gpz1-2", "gpz1-3", "gpz1-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR6>;
+       };
+
+       i2s_pmic_bus_idle: i2s-pmic-bus-idle-pins {
+               samsung,pins = "gpz1-0", "gpz1-2", "gpz1-3", "gpz1-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR6>;
+       };
+
+       i2s_fm_bus: i2s-fm-bus-pins {
+               samsung,pins = "gpz2-0", "gpz2-1", "gpz2-2", "gpz2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       i2s_fm_bus_idle: i2s-fm-bus-idle-pins {
+               samsung,pins = "gpz2-0", "gpz2-1", "gpz2-2", "gpz2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+};
+
+&pinctrl_ese {
+       gpc7: gpc7-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       spi0_bus: spi0-bus-pins {
+               samsung,pins = "gpc7-3", "gpc7-2", "gpc7-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       spi0_cs0: spi0-cs0-pins {
+               samsung,pins = "gpc7-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       spi0_cs1: spi0-cs1-pins {
+               samsung,pins = "gpc7-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+};
+
+&pinctrl_fsys {
+       gpr0: gpr0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpr1: gpr1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpr2: gpr2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpr3: gpr3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpr4: gpr4-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gic>;
+               interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       sd0_bus1: sd0-bus-width1-pins {
+               samsung,pins = "gpr1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd0_bus4: sd0-bus-width4-pins {
+               samsung,pins = "gpr1-1", "gpr1-2", "gpr1-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd0_bus8: sd0-bus-width8-pins {
+               samsung,pins = "gpr1-4", "gpr1-5", "gpr1-6", "gpr1-7";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd0_clk: sd0-clk-pins {
+               samsung,pins = "gpr0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd0_clk_fast_slew_rate_1x: sd0-clk-fast-slew-rate-1x-pins {
+               samsung,pins = "gpr0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       sd0_clk_fast_slew_rate_2x: sd0-clk-fast-slew-rate-2x-pins {
+               samsung,pins = "gpr0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR2>;
+       };
+
+       sd0_clk_fast_slew_rate_3x: sd0-clk-fast-slew-rate-3x-pins {
+               samsung,pins = "gpr0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd0_clk_fast_slew_rate_4x: sd0-clk-fast-slew-rate-4x-pins {
+               samsung,pins = "gpr0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       sd0_clk_fast_slew_rate_5x: sd0-clk-fast-slew-rate-5x-pins {
+               samsung,pins = "gpr0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR5>;
+       };
+
+       sd0_clk_fast_slew_rate_6x: sd0-clk-fast-slew-rate-6x-pins {
+               samsung,pins = "gpr0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR6>;
+       };
+
+       sd0_cmd: sd0-cmd-pins {
+               samsung,pins = "gpr0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd0_rdqs: sd0-rdqs-pins {
+               samsung,pins = "gpr0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd1_bus1: sd1-bus-width1-pins {
+               samsung,pins = "gpr3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd1_bus4: sd1-bus-width4-pins {
+               samsung,pins = "gpr3-1", "gpr3-2", "gpr3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_INPUT>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd1_clk: sd1-clk-pins {
+               samsung,pins = "gpr2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd1_cmd: sd1-cmd-pins {
+               samsung,pins = "gpr2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd2_bus1: sd2-bus-width1-pins {
+               samsung,pins = "gpr4-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd2_bus4: sd2-bus-width4-pins {
+               samsung,pins = "gpr4-3", "gpr4-4", "gpr4-5";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd2_clk: sd2-clk-pins {
+               samsung,pins = "gpr4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd2_clk_fast_slew_rate_1x: sd2-clk-fast-slew-rate-1x-pins {
+               samsung,pins = "gpr4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       sd2_clk_fast_slew_rate_2x: sd2-clk-fast-slew-rate-2x-pins {
+               samsung,pins = "gpr4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR2>;
+       };
+
+       sd2_clk_fast_slew_rate_3x: sd2-clk-fast-slew-rate-3x-pins {
+               samsung,pins = "gpr4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       sd2_clk_fast_slew_rate_4x: sd2-clk-fast-slew-rate-4x-pins {
+               samsung,pins = "gpr4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       sd2_cmd: sd2-cmd-pins {
+               samsung,pins = "gpr4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+};
+
+&pinctrl_mif {
+       gpm0: gpm0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       hsi2c0_bus: hsi2c0-bus-pins {
+               samsung,pins = "gpm0-1", "gpm0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+};
+
+&pinctrl_nfc {
+       gpc2: gpc2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       i2c6_bus: i2c6-bus-pins {
+               samsung,pins = "gpc2-1", "gpc2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       nfc_en: nfc-en-pins {
+               samsung,pins = "gpc2-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+               samsung,pin-val = <1>;
+       };
+
+       nfc_n5_clk_req: nfc-n5-clk-req-pins {
+               samsung,pins = "gpc2-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       nfc_pd: nfc-pd-pins {
+               samsung,pins = "gpc2-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+};
+
+&pinctrl_top {
+       gpb0: gpb0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc0: gpc0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc1: gpc1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc4: gpc4-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc5: gpc5-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc6: gpc6-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc8: gpc8-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc9: gpc9-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd1: gpd1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd2: gpd2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd3: gpd3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd4: gpd4-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpe0: gpe0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf0: gpf0-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf1: gpf1-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf2: gpf2-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf3: gpf3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpf4: gpf4-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       decon_te_off: decon-te-off-pins {
+               samsung,pins = "gpe0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+       };
+
+       decon_te_on: decon-te-on-pins {
+               samsung,pins = "gpe0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+
+       ese_pvdd_en: ese-pvdd-en-pins {
+               samsung,pins = "gpf4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       fimc_is_flash: fimc-is-flash-pins {
+               samsung,pins = "gpd3-2", "gpd3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       fimc_is_mclk0_fn: fimc-is-mclk0-fn-pins {
+               samsung,pins = "gpe0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR2>;
+       };
+
+       fimc_is_mclk0_in: fimc-is-mclk0-in-pins {
+               samsung,pins = "gpe0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       fimc_is_mclk0_out: fimc-is-mclk0-out-pins {
+               samsung,pins = "gpe0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       fimc_is_mclk1_fn: fimc-is-mclk1-fn-pins {
+               samsung,pins = "gpe0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR2>;
+       };
+
+       fimc_is_mclk1_in: fimc-is-mclk1-in-pins {
+               samsung,pins = "gpe0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       fimc_is_mclk1_out: fimc-is-mclk1-out-pins {
+               samsung,pins = "gpe0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       fimc_is_mclk2_fn: fimc-is-mclk2-fn-pins {
+               samsung,pins = "gpf4-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+       };
+
+       fimc_is_mclk2_out: fimc-is-mclk2-out-pins {
+               samsung,pins = "gpf4-4";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR3>;
+               samsung,pin-val = <0>;
+       };
+
+       hsi2c1_bus: hsi2c1-bus-pins {
+               samsung,pins = "gpf0-1", "gpf0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       hsi2c2_bus: hsi2c2-bus-pins {
+               samsung,pins = "gpf1-1", "gpf1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       hsi2c3_bus: hsi2c3-bus-pins {
+               samsung,pins = "gpf0-3", "gpf0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       hsi2c4_bus: hsi2c4-bus-pins {
+               samsung,pins = "gpf2-1", "gpf2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       hsi2c5_bus: hsi2c5-bus-pins {
+               samsung,pins = "gpf3-0", "gpf3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       hsi2c6_bus: hsi2c6-bus-pins {
+               samsung,pins = "gpf3-2", "gpf3-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       i2c0_bus: i2c0-bus-pins {
+               samsung,pins = "gpc4-1", "gpc4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       i2c2_bus: i2c2-bus-pins {
+               samsung,pins = "gpc8-1", "gpc8-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       i2c3_bus: i2c3-bus-pins {
+               samsung,pins = "gpc9-1", "gpc9-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       i2c4_bus: i2c4-bus-pins {
+               samsung,pins = "gpc1-1", "gpc1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-con-pdn = <EXYNOS_PIN_PDN_PREV>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       i2c5_bus: i2c5-bus-pins {
+               samsung,pins = "gpc1-3", "gpc1-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       i2c7_bus: i2c7-bus-pins {
+               samsung,pins = "gpc4-3", "gpc4-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       i2c8_bus: i2c8-bus-pins {
+               samsung,pins = "gpc5-1", "gpc5-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       nfc_n5_firm: nfc-n5-firm-pins {
+               samsung,pins = "gpd4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-val = <1>;
+       };
+
+       nfc_pvdd_en: nfc-pvdd-en-pins {
+               samsung,pins = "gpd2-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       pwm_tout0: pwm-tout0-pins {
+               samsung,pins = "gpc0-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       pwm_tout1: pwm-tout1-pins {
+               samsung,pins = "gpc0-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi1_bus: spi1-bus-pins {
+               samsung,pins = "gpf3-3", "gpf3-2", "gpf3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi1_cs0: spi1-cs0-pins {
+               samsung,pins = "gpf3-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi1_cs1: spi1-cs1-pins {
+               samsung,pins = "gpd1-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi2_bus: spi2-bus-pins {
+               samsung,pins = "gpf4-3", "gpf4-2", "gpf4-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi2_cs0: spi2-cs0-pins {
+               samsung,pins = "gpf4-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi2_cs1: spi2-cs1-pins {
+               samsung,pins = "gpd1-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi3_bus: spi3-bus-pins {
+               samsung,pins = "gpc6-0", "gpc6-2", "gpc6-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi3_bus_suspend: spi3-bus-suspend-pins {
+               samsung,pins = "gpc6-0", "gpc6-2", "gpc6-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi3_cs: spi3-cs-pins {
+               samsung,pins = "gpc6-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi4_bus: spi4-bus-pins {
+               samsung,pins = "gpc4-2", "gpc5-0", "gpc5-1";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi4_cs: spi4-cs-pins {
+               samsung,pins = "gpc4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi4_cs_func: spi4-cs-func-pins {
+               samsung,pins = "gpc4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       spi4_miso: spi4-miso-pins {
+               samsung,pins = "gpc5-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud-pdn = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       spi4_mosi_sck_ssn: spi4-mosi-sck-ssn-pins {
+               samsung,pins = "gpc5-1", "gpc4-2", "gpc4-3";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_3>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR4>;
+       };
+
+       uart0_bus: uart0-bus-pins {
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pins = "gpd2-3", "gpd2-2", "gpd2-1", "gpd2-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+
+       uart1_bus: uart1-bus-pins {
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pins = "gpb0-3", "gpb0-2", "gpb0-1", "gpb0-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+       };
+};
+
+&pinctrl_touch {
+       gpc3: gpc3-gpio-bank {
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       i2c1_bus: i2c1-bus-pins {
+               samsung,pins = "gpc3-1", "gpc3-0";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_2>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+
+       ese_cs_func: ese-cs-func-pins {
+               samsung,pins = "gpc3-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+               samsung,pin-val = <1>;
+       };
+
+       ese_cs_func_suspend: ese-cs-func-suspend-pins {
+               samsung,pins = "gpc3-2";
+               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
+               samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
+               samsung,pin-drv = <EXYNOS5433_PIN_DRV_FAST_SR1>;
+       };
+};
diff --git a/src/arm64/exynos/exynos7870.dtsi b/src/arm64/exynos/exynos7870.dtsi
new file mode 100644 (file)
index 0000000..5cba8c9
--- /dev/null
@@ -0,0 +1,712 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Samsung Exynos7870 SoC device tree source
+ *
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 Kaustabh Chakraborty <kauschluss@disroot.org>
+ */
+
+#include <dt-bindings/clock/samsung,exynos7870-cmu.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+       compatible = "samsung,exynos7870";
+       #address-cells = <2>;
+       #size-cells = <1>;
+
+       interrupt-parent = <&gic>;
+
+       aliases {
+               pinctrl0 = &pinctrl_alive;
+               pinctrl1 = &pinctrl_dispaud;
+               pinctrl2 = &pinctrl_ese;
+               pinctrl3 = &pinctrl_fsys;
+               pinctrl4 = &pinctrl_mif;
+               pinctrl5 = &pinctrl_nfc;
+               pinctrl6 = &pinctrl_top;
+               pinctrl7 = &pinctrl_touch;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu-map {
+                       cluster0 {
+                               core0 {
+                                       cpu = <&cpu0>;
+                               };
+                               core1 {
+                                       cpu = <&cpu1>;
+                               };
+                               core2 {
+                                       cpu = <&cpu2>;
+                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+                       };
+
+                       cluster1 {
+                               core0 {
+                                       cpu = <&cpu4>;
+                               };
+                               core1 {
+                                       cpu = <&cpu5>;
+                               };
+                               core2 {
+                                       cpu = <&cpu6>;
+                               };
+                               core3 {
+                                       cpu = <&cpu7>;
+                               };
+                       };
+               };
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0>;
+                       enable-method = "psci";
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x1>;
+                       enable-method = "psci";
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x2>;
+                       enable-method = "psci";
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x3>;
+                       enable-method = "psci";
+               };
+
+               cpu4: cpu@100 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x100>;
+                       enable-method = "psci";
+               };
+
+               cpu5: cpu@101 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x101>;
+                       enable-method = "psci";
+               };
+
+               cpu6: cpu@102 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x102>;
+                       enable-method = "psci";
+               };
+
+               cpu7: cpu@103 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x103>;
+                       enable-method = "psci";
+               };
+       };
+
+       oscclk: oscclk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+       };
+
+       psci {
+               compatible = "arm,psci";
+               method = "smc";
+               cpu_suspend = <0xc4000001>;
+               cpu_off = <0x84000002>;
+               cpu_on = <0xc4000003>;
+       };
+
+       soc: soc@0 {
+               compatible = "simple-bus";
+               ranges = <0x0 0x0 0x0 0x20000000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               chipid@10100000 {
+                       compatible = "samsung,exynos7870-chipid",
+                                    "samsung,exynos4210-chipid";
+                       reg = <0x10100000 0x100>;
+               };
+
+               cmu_peri: clock-controller@101f0000 {
+                       compatible = "samsung,exynos7870-cmu-peri";
+                       reg = <0x101f0000 0x1000>;
+                       #clock-cells = <1>;
+
+                       clock-names = "oscclk", "bus", "spi0", "spi1", "spi2",
+                                     "spi3", "spi4", "uart0", "uart1", "uart2";
+                       clocks = <&oscclk>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_BUS>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI0>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI1>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI2>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI3>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_SPI4>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_UART0>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_UART1>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_PERI_UART2>;
+               };
+
+               cmu_mif: clock-controller@10460000 {
+                       compatible = "samsung,exynos7870-cmu-mif";
+                       reg = <0x10460000 0x1000>;
+                       #clock-cells = <1>;
+
+                       clock-names = "oscclk";
+                       clocks = <&oscclk>;
+               };
+
+               pmu_system_controller: system-controller@10480000 {
+                       compatible = "samsung,exynos7870-pmu",
+                                    "samsung,exynos7-pmu", "syscon";
+                       reg = <0x10480000 0x10000>;
+
+                       reboot-mode {
+                               compatible = "syscon-reboot-mode";
+                               offset = <0x080c>;
+                               mode-bootloader = <0x1234567d>;
+                               mode-download = <0x12345671>;
+                               mode-recovery = <0x12345674>;
+                       };
+               };
+
+               gic: interrupt-controller@104e1000 {
+                       compatible = "arm,cortex-a15-gic";
+                       reg = <0x104e1000 0x1000>,
+                             <0x104e2000 0x1000>,
+                             <0x104e4000 0x2000>,
+                             <0x104e6000 0x2000>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) |
+                                                IRQ_TYPE_LEVEL_HIGH)>;
+                       interrupt-controller;
+                       #address-cells = <0>;
+                       #interrupt-cells = <3>;
+               };
+
+               hsi2c0: i2c@10510000 {
+                       compatible = "samsung,exynos7870-hsi2c",
+                                    "samsung,exynos7-hsi2c";
+                       reg = <0x10510000 0x2000>;
+                       interrupts = <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&hsi2c0_bus>;
+
+                       clock-names = "hsi2c";
+                       clocks = <&cmu_mif CLK_GOUT_MIF_HSI2C_IPCLK>;
+
+                       status = "disabled";
+               };
+
+               pinctrl_mif: pinctrl@10530000 {
+                       compatible = "samsung,exynos7870-pinctrl";
+                       reg = <0x10530000 0x1000>;
+                       interrupts = <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               gpu: gpu@11400000 {
+                       compatible = "samsung,exynos7870-mali", "arm,mali-t830";
+                       reg = <0x11400000 0x5000>;
+                       interrupt-names = "job", "mmu", "gpu";
+                       interrupts = <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clock-names = "core", "bus";
+                       clocks = <&cmu_g3d CLK_GOUT_G3D_CLK>,
+                                <&cmu_g3d CLK_GOUT_G3D_ASYNCS_D0_CLK>;
+
+                       status = "disabled";
+               };
+
+               cmu_g3d: clock-controller@11460000 {
+                       compatible = "samsung,exynos7870-cmu-g3d";
+                       reg = <0x11460000 0x1000>;
+                       #clock-cells = <1>;
+
+                       clock-names = "oscclk", "switch";
+                       clocks = <&oscclk>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_G3D_SWITCH>;
+               };
+
+               cmu_mfcmscl: clock-controller@12cb0000 {
+                       compatible = "samsung,exynos7870-cmu-mfcmscl";
+                       reg = <0x12cb0000 0x1000>;
+                       #clock-cells = <1>;
+
+                       clock-names = "oscclk", "mfc", "mscl";
+                       clocks = <&oscclk>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_MFCMSCL_MFC>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_MFCMSCL_MSCL>;
+               };
+
+               mmc0: mmc@13540000 {
+                       compatible = "samsung,exynos7870-dw-mshc-smu";
+                       reg = <0x13540000 0x2000>;
+                       interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clock-names = "biu", "ciu";
+                       clocks = <&cmu_fsys CLK_GOUT_FSYS_MMC0_ACLK>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_FSYS_MMC0>;
+
+                       status = "disabled";
+               };
+
+               mmc1: mmc@13550000 {
+                       compatible = "samsung,exynos7870-dw-mshc-smu";
+                       reg = <0x13550000 0x2000>;
+                       interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clock-names = "biu", "ciu";
+                       clocks = <&cmu_fsys CLK_GOUT_FSYS_MMC1_ACLK>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_FSYS_MMC1>;
+
+                       status = "disabled";
+               };
+
+               mmc2: mmc@13560000 {
+                       compatible = "samsung,exynos7870-dw-mshc-smu";
+                       reg = <0x13560000 0x2000>;
+                       interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clock-names = "biu", "ciu";
+                       clocks = <&cmu_fsys CLK_GOUT_FSYS_MMC2_ACLK>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_FSYS_MMC2>;
+
+                       status = "disabled";
+               };
+
+               usbdrd_phy: phy@135c0000 {
+                       compatible = "samsung,exynos7870-usbdrd-phy";
+                       reg = <0x135c0000 0x100>;
+                       #phy-cells = <1>;
+
+                       clock-names = "phy", "ref";
+                       clocks = <&cmu_fsys CLK_GOUT_FSYS_MUX_USB20DRD_PHYCLOCK_USER>,
+                                <&cmu_fsys CLK_GOUT_FSYS_MUX_USB_PLL>;
+
+                       samsung,pmu-syscon = <&pmu_system_controller>;
+               };
+
+               usbdrd: usb@13600000 {
+                       compatible = "samsung,exynos7870-dwusb3";
+                       ranges = <0x0 0x13600000 0x10000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       clock-names = "bus_early", "ref", "ctrl";
+                       clocks = <&cmu_fsys CLK_GOUT_FSYS_USB20DRD_ACLK_HSDRD>,
+                                <&cmu_fsys CLK_GOUT_FSYS_USB20DRD_HSDRD_REF_CLK>,
+                                <&cmu_fsys CLK_GOUT_FSYS_USB20DRD_HCLK_USB20_CTRL>;
+
+                       status = "disabled";
+
+                       usb@0 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0 0x10000>;
+                               interrupts = <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>;
+
+                               phy-names = "usb2-phy";
+                               phys = <&usbdrd_phy 0>;
+
+                               usb-role-switch;
+                       };
+               };
+
+               cmu_fsys: clock-controller@13730000 {
+                       compatible = "samsung,exynos7870-cmu-fsys";
+                       reg = <0x13730000 0x1000>;
+                       #clock-cells = <1>;
+
+                       clock-names = "oscclk", "bus", "usb20drd";
+                       clocks = <&oscclk>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_FSYS_BUS>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_FSYS_USB20DRD_REFCLK>;
+               };
+
+               pinctrl_fsys: pinctrl@13750000 {
+                       compatible = "samsung,exynos7870-pinctrl";
+                       reg = <0x13750000 0x1000>;
+                       interrupts = <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               serial0: serial@13800000 {
+                       compatible = "samsung,exynos7870-uart",
+                                    "samsung,exynos8895-uart";
+                       reg = <0x13800000 0x100>;
+                       interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&uart0_bus>;
+
+                       clock-names = "uart", "clk_uart_baud0";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_UART0_PCLK>,
+                                <&cmu_peri CLK_GOUT_PERI_UART0_EXT_UCLK>;
+
+                       samsung,uart-fifosize = <16>;
+
+                       status = "disabled";
+               };
+
+               serial1: serial@13810000 {
+                       compatible = "samsung,exynos7870-uart",
+                                    "samsung,exynos8895-uart";
+                       reg = <0x13810000 0x100>;
+                       interrupts = <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&uart1_bus>;
+
+                       clock-names = "uart", "clk_uart_baud0";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_UART1_PCLK>,
+                                <&cmu_peri CLK_GOUT_PERI_UART1_EXT_UCLK>;
+
+                       samsung,uart-fifosize = <256>;
+
+                       status = "disabled";
+               };
+
+               serial2: serial@13820000 {
+                       compatible = "samsung,exynos7870-uart",
+                                    "samsung,exynos8895-uart";
+                       reg = <0x13820000 0x100>;
+                       interrupts = <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&uart2_bus>;
+
+                       clock-names = "uart", "clk_uart_baud0";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_UART2_PCLK>,
+                                <&cmu_peri CLK_GOUT_PERI_UART2_EXT_UCLK>;
+
+                       samsung,uart-fifosize = <256>;
+
+                       status = "disabled";
+               };
+
+               i2c0: i2c@13830000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x13830000 0x100>;
+                       interrupts = <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c0_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C0_PCLK>;
+
+                       status = "disabled";
+               };
+
+               i2c1: i2c@13840000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x13840000 0x100>;
+                       interrupts = <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c1_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C1_PCLK>;
+
+                       status = "disabled";
+               };
+
+               i2c2: i2c@13850000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x13850000 0x100>;
+                       interrupts = <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c2_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C2_PCLK>;
+
+                       status = "disabled";
+               };
+
+               i2c3: i2c@13860000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x13860000 0x100>;
+                       interrupts = <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c3_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C3_PCLK>;
+
+                       status = "disabled";
+               };
+
+               i2c4: i2c@13870000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x13870000 0x100>;
+                       interrupts = <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c4_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C4_PCLK>;
+
+                       status = "disabled";
+               };
+
+               i2c5: i2c@13880000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x13880000 0x100>;
+                       interrupts = <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c5_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C5_PCLK>;
+
+                       status = "disabled";
+               };
+
+               i2c6: i2c@13890000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x13890000 0x100>;
+                       interrupts = <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c6_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C6_PCLK>;
+
+                       status = "disabled";
+               };
+
+               hsi2c1: i2c@138a0000 {
+                       compatible = "samsung,exynos7870-hsi2c",
+                                    "samsung,exynos7-hsi2c";
+                       reg = <0x138a0000 0x1000>;
+                       interrupts = <GIC_SPI 449 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&hsi2c1_bus>;
+
+                       clock-names = "hsi2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_HSI2C1_IPCLK>;
+
+                       status = "disabled";
+               };
+
+               hsi2c2: i2c@138b0000 {
+                       compatible = "samsung,exynos7870-hsi2c",
+                                    "samsung,exynos7-hsi2c";
+                       reg = <0x138b0000 0x1000>;
+                       interrupts = <GIC_SPI 450 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&hsi2c2_bus>;
+
+                       clock-names = "hsi2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_HSI2C2_IPCLK>;
+
+                       status = "disabled";
+               };
+
+               hsi2c3: i2c@138c0000 {
+                       compatible = "samsung,exynos7870-hsi2c",
+                                    "samsung,exynos7-hsi2c";
+                       reg = <0x138c0000 0x1000>;
+                       interrupts = <GIC_SPI 451 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&hsi2c3_bus>;
+
+                       clock-names = "hsi2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_HSI2C3_IPCLK>;
+
+                       status = "disabled";
+               };
+
+               i2c7: i2c@138d0000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x138d0000 0x100>;
+                       interrupts = <GIC_SPI 453 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c7_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C7_PCLK>;
+
+                       status = "disabled";
+               };
+
+               i2c8: i2c@138e0000 {
+                       compatible = "samsung,exynos7870-i2c",
+                                    "samsung,s3c2440-i2c";
+                       reg = <0x138e0000 0x100>;
+                       interrupts = <GIC_SPI 454 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c8_bus>;
+
+                       clock-names = "i2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_I2C8_PCLK>;
+
+                       status = "disabled";
+               };
+
+               hsi2c4: i2c@138f0000 {
+                       compatible = "samsung,exynos7870-hsi2c",
+                                    "samsung,exynos7-hsi2c";
+                       reg = <0x138f0000 0x1000>;
+                       interrupts = <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&hsi2c4_bus>;
+
+                       clock-names = "hsi2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_HSI2C4_IPCLK>;
+
+                       status = "disabled";
+               };
+
+               hsi2c5: i2c@13950000 {
+                       compatible = "samsung,exynos7870-hsi2c",
+                                    "samsung,exynos7-hsi2c";
+                       reg = <0x13950000 0x1000>;
+                       interrupts = <GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&hsi2c5_bus>;
+
+                       clock-names = "hsi2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_HSI2C5_IPCLK>;
+
+                       status = "disabled";
+               };
+
+               hsi2c6: i2c@13960000 {
+                       compatible = "samsung,exynos7870-hsi2c",
+                                    "samsung,exynos7-hsi2c";
+                       reg = <0x13960000 0x1000>;
+                       interrupts = <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&hsi2c6_bus>;
+
+                       clock-names = "hsi2c";
+                       clocks = <&cmu_peri CLK_GOUT_PERI_HSI2C6_IPCLK>;
+
+                       status = "disabled";
+               };
+
+               pinctrl_top: pinctrl@139b0000 {
+                       compatible = "samsung,exynos7870-pinctrl";
+                       reg = <0x139b0000 0x1000>;
+                       interrupts = <GIC_SPI 438 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_nfc: pinctrl@139c0000 {
+                       compatible = "samsung,exynos7870-pinctrl";
+                       reg = <0x139c0000 0x1000>;
+                       interrupts = <GIC_SPI 439 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_touch: pinctrl@139d0000 {
+                       compatible = "samsung,exynos7870-pinctrl";
+                       reg = <0x139d0000 0x1000>;
+                       interrupts = <GIC_SPI 440 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_ese: pinctrl@139e0000 {
+                       compatible = "samsung,exynos7870-pinctrl";
+                       reg = <0x139e0000 0x1000>;
+                       interrupts = <GIC_SPI 441 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               pinctrl_alive: pinctrl@139f0000 {
+                       compatible = "samsung,exynos7870-pinctrl";
+                       reg = <0x139f0000 0x1000>;
+
+                       wakeup-interrupt-controller {
+                               compatible = "samsung,exynos7870-wakeup-eint",
+                                            "samsung,exynos7-wakeup-eint";
+                               interrupt-parent = <&gic>;
+                               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               cmu_isp: clock-controller@144d0000 {
+                       compatible = "samsung,exynos7870-cmu-isp";
+                       reg = <0x144d0000 0x1000>;
+                       #clock-cells = <1>;
+
+                       clock-names = "oscclk", "cam", "isp", "vra";
+                       clocks = <&oscclk>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_ISP_CAM>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_ISP_ISP>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_ISP_VRA>;
+               };
+
+               pinctrl_dispaud: pinctrl@148c0000 {
+                       compatible = "samsung,exynos7870-pinctrl";
+                       reg = <0x148c0000 0x1000>;
+                       interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               cmu_dispaud: clock-controller@148d0000 {
+                       compatible = "samsung,exynos7870-cmu-dispaud";
+                       reg = <0x148d0000 0x1000>;
+                       #clock-cells = <1>;
+
+                       clock-names = "oscclk", "bus", "decon_eclk", "decon_vclk";
+                       clocks = <&oscclk>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_DISPAUD_BUS>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_DISPAUD_DECON_ECLK>,
+                                <&cmu_mif CLK_GOUT_MIF_CMU_DISPAUD_DECON_VCLK>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
+
+               /*
+                * Non-updatable, broken stock Samsung bootloader does not
+                * configure CNTFRQ_EL0
+                */
+               clock-frequency = <26000000>;
+       };
+};
+
+#include "exynos7870-pinctrl.dtsi"
+#include "arm/samsung/exynos-syscon-restart.dtsi"
index f1c8b4613cbc60f3bd756e14230f1431158afa24..cb55015c8dcebfaf8efece4b0e76607594a299f8 100644 (file)
                        compatible = "samsung,exynos850-usi";
                        reg = <0x138200c0 0x20>;
                        samsung,sysreg = <&sysreg_peri 0x1010>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        compatible = "samsung,exynos850-usi";
                        reg = <0x138a00c0 0x20>;
                        samsung,sysreg = <&sysreg_peri 0x1020>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        compatible = "samsung,exynos850-usi";
                        reg = <0x138b00c0 0x20>;
                        samsung,sysreg = <&sysreg_peri 0x1030>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        compatible = "samsung,exynos850-usi";
                        reg = <0x138c00c0 0x20>;
                        samsung,sysreg = <&sysreg_peri 0x1040>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        compatible = "samsung,exynos850-usi";
                        reg = <0x139400c0 0x20>;
                        samsung,sysreg = <&sysreg_peri 0x1050>;
-                       samsung,mode = <USI_V2_SPI>;
+                       samsung,mode = <USI_MODE_SPI>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        compatible = "samsung,exynos850-usi";
                        reg = <0x11d000c0 0x20>;
                        samsung,sysreg = <&sysreg_cmgp 0x2000>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        compatible = "samsung,exynos850-usi";
                        reg = <0x11d200c0 0x20>;
                        samsung,sysreg = <&sysreg_cmgp 0x2010>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
index b36292a7db640815a3755e5b21c50c29e7b224cc..66628cb32776e4eeda8b8839b05c99a3f3bf1fd7 100644 (file)
                                     "samsung,exynos850-usi";
                        reg = <0x103000c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1000>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103100c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1004>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103200c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1008>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103300c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x100c>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103400c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1010>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103500c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1014>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103600c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1018>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103700c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x101c>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103800c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1020>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103900c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1024>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103a00c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1028>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x103b00c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x102c>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109000c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1000>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109100c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1004>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109200c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1008>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109300c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x100c>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109400c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1010>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109500c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1014>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109600c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1018>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109700c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x101c>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109800c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1020>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109900c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1024>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109a00c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x1028>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                                     "samsung,exynos850-usi";
                        reg = <0x109b00c0 0x20>;
                        samsung,sysreg = <&syscon_peric1 0x102c>;
-                       samsung,mode = <USI_V2_I2C>;
+                       samsung,mode = <USI_MODE_I2C>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
index fc6ac531d597ec8c93258746b9614d4cd06fd290..2cb8041c8a9f86cc3e2faf829581f9e305233af3 100644 (file)
                                     "samsung,exynos850-usi";
                        reg = <0x108800c0 0x20>;
                        samsung,sysreg = <&syscon_peric0 0x1000>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        };
                };
 
+               usi_1: usi@108a00c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x108a00c0 0x20>;
+                       samsung,sysreg = <&syscon_peric0 0x1008>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                <&cmu_peric0 CLK_DOUT_PERIC0_USI01_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_1: serial@108a0000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x108a0000 0xc0>;
+                               interrupts = <GIC_SPI 766 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart1_bus>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI01_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <256>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_2: usi@108c00c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x108c00c0 0x20>;
+                       samsung,sysreg = <&syscon_peric0 0x1010>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                <&cmu_peric0 CLK_DOUT_PERIC0_USI02_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_2: serial@108c0000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x108c0000 0xc0>;
+                               interrupts = <GIC_SPI 768 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart2_bus>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI02_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_3: usi@108e00c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x108e00c0 0x20>;
+                       samsung,sysreg = <&syscon_peric0 0x1018>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                <&cmu_peric0 CLK_DOUT_PERIC0_USI03_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_3: serial@108e0000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x108e0000 0xc0>;
+                               interrupts = <GIC_SPI 770 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart3_bus>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI03_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_4: usi@109000c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x109000c0 0x20>;
+                       samsung,sysreg = <&syscon_peric0 0x1020>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                <&cmu_peric0 CLK_DOUT_PERIC0_USI04_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_4: serial@10900000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10900000 0xc0>;
+                               interrupts = <GIC_SPI 772 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart4_bus>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI04_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_5: usi@109200c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x109200c0 0x20>;
+                       samsung,sysreg = <&syscon_peric0 0x1028>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                <&cmu_peric0 CLK_DOUT_PERIC0_USI05_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_5: serial@10920000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10920000 0xc0>;
+                               interrupts = <GIC_SPI 774 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart5_bus>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI05_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_6: usi@109400c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x109400c0 0x20>;
+                       samsung,sysreg = <&syscon_peric0 0x1030>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                <&cmu_peric0 CLK_DOUT_PERIC0_USI06_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_6: serial@10940000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10940000 0xc0>;
+                               interrupts = <GIC_SPI 776 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart6_bus>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI06_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_7: usi@109600c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x109600c0 0x20>;
+                       samsung,sysreg = <&syscon_peric0 0x1038>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                <&cmu_peric0 CLK_DOUT_PERIC0_USI07_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_7: serial@10960000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10960000 0xc0>;
+                               interrupts = <GIC_SPI 778 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart7_bus>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI07_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_8: usi@109800c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x109800c0 0x20>;
+                       samsung,sysreg = <&syscon_peric0 0x1040>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                <&cmu_peric0 CLK_DOUT_PERIC0_USI08_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_8: serial@10980000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10980000 0xc0>;
+                               interrupts = <GIC_SPI 780 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart8_bus>;
+                               clocks = <&cmu_peric0 CLK_MOUT_PERIC0_NOC_USER>,
+                                        <&cmu_peric0 CLK_DOUT_PERIC0_USI08_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
                pwm: pwm@109b0000 {
                        compatible = "samsung,exynosautov920-pwm",
                                     "samsung,exynos4210-pwm";
                        interrupts = <GIC_SPI 781 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               usi_9: usi@10c800c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10c800c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1000>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI09_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_9: serial@10c8000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10c80000 0xc0>;
+                               interrupts = <GIC_SPI 787 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart9_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI09_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <256>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_10: usi@10ca00c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10ca00c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1008>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI10_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_10: serial@10ca0000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10ca0000 0xc0>;
+                               interrupts = <GIC_SPI 789 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart10_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI10_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_11: usi@10cc00c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10cc00c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1010>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI11_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_11: serial@10cc0000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10cc0000 0xc0>;
+                               interrupts = <GIC_SPI 791 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart11_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI11_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_12: usi@10ce00c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10ce00c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1018>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI12_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_12: serial@10ce0000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10ce0000 0xc0>;
+                               interrupts = <GIC_SPI 793 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart12_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI12_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_13: usi@10d000c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10d000c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1020>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI13_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_13: serial@10d00000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10d00000 0xc0>;
+                               interrupts = <GIC_SPI 795 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart13_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI13_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_14: usi@10d200c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10d200c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1028>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI14_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_14: serial@10d20000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10d20000 0xc0>;
+                               interrupts = <GIC_SPI 797 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart14_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI14_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_15: usi@10d400c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10d400c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1030>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI15_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_15: serial@10d40000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10d40000 0xc0>;
+                               interrupts = <GIC_SPI 799 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart15_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI15_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_16: usi@10d600c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10d600c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1038>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI16_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_16: serial@10d60000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10d60000 0xc0>;
+                               interrupts = <GIC_SPI 801 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart16_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI16_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
+               usi_17: usi@10d800c0 {
+                       compatible = "samsung,exynosautov920-usi",
+                                    "samsung,exynos850-usi";
+                       reg = <0x10d800c0 0x20>;
+                       samsung,sysreg = <&syscon_peric1 0x1040>;
+                       samsung,mode = <USI_V2_UART>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                <&cmu_peric1 CLK_DOUT_PERIC1_USI17_USI>;
+                       clock-names = "pclk", "ipclk";
+                       status = "disabled";
+
+                       serial_17: serial@10d80000 {
+                               compatible = "samsung,exynosautov920-uart",
+                                            "samsung,exynos850-uart";
+                               reg = <0x10d80000 0xc0>;
+                               interrupts = <GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&uart17_bus>;
+                               clocks = <&cmu_peric1 CLK_MOUT_PERIC1_NOC_USER>,
+                                        <&cmu_peric1 CLK_DOUT_PERIC1_USI17_USI>;
+                               clock-names = "uart", "clk_uart_baud0";
+                               samsung,uart-fifosize = <64>;
+                               status = "disabled";
+                       };
+               };
+
                cmu_top: clock-controller@11000000 {
                        compatible = "samsung,exynosautov920-cmu-top";
                        reg = <0x11000000 0x8000>;
                        compatible = "samsung,exynosautov920-pinctrl";
                        reg = <0x1a460000 0x10000>;
                };
+
+               cmu_cpucl0: clock-controller@1ec00000 {
+                       compatible = "samsung,exynosautov920-cmu-cpucl0";
+                       reg = <0x1ec00000 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top DOUT_CLKCMU_CPUCL0_SWITCH>,
+                                <&cmu_top DOUT_CLKCMU_CPUCL0_CLUSTER>,
+                                <&cmu_top DOUT_CLKCMU_CPUCL0_DBG>;
+                       clock-names = "oscclk",
+                                     "switch",
+                                     "cluster",
+                                     "dbg";
+               };
+
+               cmu_cpucl1: clock-controller@1ed00000 {
+                       compatible = "samsung,exynosautov920-cmu-cpucl1";
+                       reg = <0x1ed00000 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top DOUT_CLKCMU_CPUCL1_SWITCH>,
+                                <&cmu_top DOUT_CLKCMU_CPUCL1_CLUSTER>;
+                       clock-names = "oscclk",
+                                     "switch",
+                                     "cluster";
+               };
+
+               cmu_cpucl2: clock-controller@1ee00000 {
+                       compatible = "samsung,exynosautov920-cmu-cpucl2";
+                       reg = <0x1ee00000 0x8000>;
+                       #clock-cells = <1>;
+
+                       clocks = <&xtcxo>,
+                                <&cmu_top DOUT_CLKCMU_CPUCL2_SWITCH>,
+                                <&cmu_top DOUT_CLKCMU_CPUCL2_CLUSTER>;
+                       clock-names = "oscclk",
+                                     "switch",
+                                     "cluster";
+               };
        };
 
        timer {
index b25230495c64dce60916b7cd5dcb9a7cce5d0e4e..d6ddcc13f7b20c6dfbe92e86abafe965870d0c78 100644 (file)
 };
 
 &usi8 {
-       samsung,mode = <USI_V2_I2C>;
+       samsung,mode = <USI_MODE_I2C>;
        status = "okay";
 };
 
 &usi12 {
-       samsung,mode = <USI_V2_I2C>;
+       samsung,mode = <USI_MODE_I2C>;
        status = "okay";
 };
 
index 3de3a758f113a8a373faca51b3e043d614458497..48c691fd0a3ae430b5d66b402610d23b72b144d7 100644 (file)
                                 <&cmu_peric0 CLK_GOUT_PERIC0_PERIC0_TOP1_IPCLK_0>;
                        clock-names = "pclk", "ipclk";
                        samsung,sysreg = <&sysreg_peric0 0x1020>;
-                       samsung,mode = <USI_V2_UART>;
+                       samsung,mode = <USI_MODE_UART>;
                        status = "disabled";
 
                        serial_0: serial@10a00000 {
                pmu_system_controller: system-controller@17460000 {
                        compatible = "google,gs101-pmu", "syscon";
                        reg = <0x17460000 0x10000>;
+                       google,pmu-intr-gen-syscon = <&pmu_intr_gen>;
 
                        poweroff: syscon-poweroff {
                                compatible = "syscon-poweroff";
                        };
                };
 
+               pmu_intr_gen: syscon@17470000 {
+                       compatible = "google,gs101-pmu-intr-gen", "syscon";
+                       reg = <0x17470000 0x10000>;
+               };
+
                pinctrl_gpio_alive: pinctrl@174d0000 {
                        compatible = "google,gs101-pinctrl";
                        reg = <0x174d0000 0x00001000>;
index 0baf256b44003f83dd89e8c710c6911a3f7c3121..983b2f0e87970aa5c1eedaa5305de284e30d45af 100644 (file)
                };
 
                wdog0: watchdog@2ad0000 {
-                       compatible = "fsl,imx21-wdt";
+                       compatible = "fsl,ls1046a-wdt", "fsl,imx21-wdt";
                        reg = <0x0 0x2ad0000 0x0 0x10000>;
                        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
                                            QORIQ_CLK_PLL_DIV(2)>;
+                       big-endian;
                };
 
                edma0: dma-controller@2c00000 {
similarity index 64%
rename from src/arm64/freescale/imx8mp-evk-pcie-ep.dtso
rename to src/arm64/freescale/imx-pcie0-ep.dtso
index 244e820699b50f6793feb24d4de06ef23bbdbbb5..ed73284d9bb61818e9d5fb9d8309aae1f653f29d 100644 (file)
@@ -6,12 +6,10 @@
 /dts-v1/;
 /plugin/;
 
-&pcie {
+&pcie0 {
        status = "disabled";
 };
 
-&pcie_ep {
-       pinctrl-0 = <&pinctrl_pcie0>;
-       pinctrl-names = "default";
+&pcie0_ep {
        status = "okay";
 };
diff --git a/src/arm64/freescale/imx-pcie1-ep.dtso b/src/arm64/freescale/imx-pcie1-ep.dtso
new file mode 100644 (file)
index 0000000..0e7ef7e
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 NXP
+ */
+
+/dts-v1/;
+/plugin/;
+
+&pcie1 {
+       status = "disabled";
+};
+
+&pcie1_ep {
+       status = "okay";
+};
index dc127298715b3cf73ad93d25aff7b7b56e4049ab..311d4950793cff168507be70e4ed71fe988c9679 100644 (file)
        status = "okay";
 };
 
-/* TODO: Apalis PCIE1 */
+/* Apalis PCIE1 */
+&pciea {
+       status = "okay";
+};
 
 /* TODO: Apalis BKL1_PWM */
 
        status = "okay";
 };
 
-/* TODO: Apalis SATA1 */
+/* Apalis SATA1 */
+&sata {
+       status = "okay";
+};
 
 /* Apalis SPDIF1 */
 &spdif0 {
index d4a1ad528f650d16e9de22e2e21d2e2cc684163e..3d8731504ce15c616492c595c254c4ec6dc76bf9 100644 (file)
        status = "okay";
 };
 
-/* TODO: Apalis PCIE1 */
+/* Apalis PCIE1 */
+&pciea {
+       status = "okay";
+};
 
 /* TODO: Apalis BKL1_PWM */
 
        status = "okay";
 };
 
-/* TODO: Apalis SATA1 */
+/* Apalis SATA1 */
+&sata {
+       status = "okay";
+};
 
 /* Apalis SPDIF1 */
 &spdif0 {
index 5e132c83e1b26b19840aac12d2c1014811c75c78..106e802a68ba582e3872e83ea6d9fdb3f1823cd4 100644 (file)
        status = "okay";
 };
 
-/* TODO: Apalis PCIE1 */
+/* Apalis PCIE1 */
+&pciea {
+       status = "okay";
+};
 
 /* TODO: Apalis BKL1_PWM */
 
        status = "okay";
 };
 
-/* TODO: Apalis SATA1 */
+/* Apalis SATA1 */
+&sata {
+       status = "okay";
+};
 
 /* Apalis SPDIF1 */
 &spdif0 {
index dbea1eefdeecf12895674bf2e63a088058d4a5f7..6f27a9cc249461aef34705bf1cada3fe215f1060 100644 (file)
        pinctrl-0 = <&pinctrl_flexcan3>;
 };
 
+&hsio_phy {
+       fsl,hsio-cfg = "pciea-pcieb-sata";
+       fsl,refclk-pad-mode = "input";
+       status = "okay";
+};
+
+&hsio_refa_clk {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie_sata_refclk>;
+       enable-gpios = <&lsio_gpio4 11 GPIO_ACTIVE_HIGH>;
+};
+
+&hsio_refb_clk {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie_wifi_refclk>;
+       clocks = <&hsio_refa_clk>;
+       enable-gpios = <&lsio_gpio2 11 GPIO_ACTIVE_HIGH>;
+};
+
 /* TODO: Apalis HDMI1 */
 
 &gpu_alert0 {
                          "MXM3_112",
                          "MXM3_118",
                          "MXM3_114",
-                         "MXM3_116";
+                         "MXM3_116",
+                         "",
+                         "",
+                         "MXM3_26";
 };
 
 &lsio_gpio1 {
                          "MXM3_183",
                          "MXM3_185",
                          "MXM3_187";
-
-       pcie-wifi-hog {
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_pcie_wifi_refclk>;
-               gpio-hog;
-               gpios = <11 GPIO_ACTIVE_HIGH>;
-               line-name = "PCIE_WIFI_CLK";
-               output-high;
-       };
 };
 
 &lsio_gpio3 {
                          "MXM3_291",
                          "MXM3_289",
                          "MXM3_287";
-
-       /* Enable pcie root / sata ref clock unconditionally */
-       pcie-sata-hog {
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_pcie_sata_refclk>;
-               gpio-hog;
-               gpios = <11 GPIO_ACTIVE_HIGH>;
-               line-name = "PCIE_SATA_CLK";
-               output-high;
-       };
 };
 
 &lsio_gpio5 {
        status = "okay";
 };
 
-/* TODO: Apalis PCIE1 */
+/* Apalis PCIE1 */
+&pciea {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_reset_moci>;
+       phys = <&hsio_phy 0 PHY_TYPE_PCIE 0>;
+       phy-names = "pcie-phy";
+       reset-gpio = <&lsio_gpio0 30 GPIO_ACTIVE_LOW>;
+       vpcie-supply = <&reg_pcie_switch>;
+};
+
+/* On-module Wi-Fi */
+&pcieb {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcieb>, <&pinctrl_wifi>;
+       phys = <&hsio_phy 1 PHY_TYPE_PCIE 1>;
+       phy-names = "pcie-phy";
+       reset-gpio = <&lsio_gpio5 0 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
 
-/* TODO: On-module Wi-Fi */
+&phyx2_lpcg {
+       clocks = <&hsio_refa_clk>, <&hsio_refb_clk>,
+                <&hsio_refa_clk>, <&hsio_per_clk>;
+};
 
 /* TODO: Apalis BKL1_PWM */
 
                               <722534400>, <45158400>, <11289600>, <49152000>;
 };
 
-/* TODO: Apalis SATA1 */
-
 /* Apalis SPDIF1 */
 &spdif0 {
        assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
index 5f3b4014e1521eb2e226797c77d15951cfde3187..b6d64d3906eafab226c8e0ccae66fe763fdc8c25 100644 (file)
        status = "okay";
 };
 
-&pcieb {
+&pcie0 {
        phys = <&hsio_phy 0 PHY_TYPE_PCIE 0>;
        phy-names = "pcie-phy";
        pinctrl-0 = <&pinctrl_pcieb>;
        status = "okay";
 };
 
+&pcie0_ep{
+       phys = <&hsio_phy 0 PHY_TYPE_PCIE 0>;
+       phy-names = "pcie-phy";
+       pinctrl-0 = <&pinctrl_pcieb>;
+       pinctrl-names = "default";
+       reset-gpio = <&lsio_gpio4 0 GPIO_ACTIVE_LOW>;
+       vpcie-supply = <&reg_pcieb>;
+       status = "disabled";
+};
+
 &sai0 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_sai0>;
index afbe962d78ce1e2e9b88808619cb5d3c0f9f870d..bbc6abb0fdf25b650dacb8dfcbbbe5dac9ed5cce 100644 (file)
                power-domains = <&pd IMX_SC_R_SERDES_1>;
                status = "disabled";
        };
-};
 
-&pcieb {
-       #interrupt-cells = <1>;
-       interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
-       interrupt-names = "msi";
-       interrupt-map = <0 0 0 1 &gic 0 47 4>,
-                        <0 0 0 2 &gic 0 48 4>,
-                        <0 0 0 3 &gic 0 49 4>,
-                        <0 0 0 4 &gic 0 50 4>;
-       interrupt-map-mask = <0 0 0 0x7>;
+       pcie0: pcie@5f010000 {
+               #interrupt-cells = <1>;
+               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "msi";
+               interrupt-map = <0 0 0 1 &gic 0 47 4>,
+                               <0 0 0 2 &gic 0 48 4>,
+                               <0 0 0 3 &gic 0 49 4>,
+                               <0 0 0 4 &gic 0 50 4>;
+               interrupt-map-mask = <0 0 0 0x7>;
+       };
+
+       pcie0_ep: pcie-ep@5f010000 {
+               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "dma";
+       };
 };
diff --git a/src/arm64/freescale/imx8dxp-tqma8xdps-mb-smarc-2.dts b/src/arm64/freescale/imx8dxp-tqma8xdps-mb-smarc-2.dts
new file mode 100644 (file)
index 0000000..331787d
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2021-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+/dts-v1/;
+
+#include "imx8dxp-tqma8xdps.dtsi"
+#include "tqma8xxs-mb-smarc-2.dtsi"
+
+/ {
+       model = "TQ-Systems i.MX8DXP TQMa8XDPS on MB-SMARC-2";
+       compatible = "tq,imx8dxp-tqma8xdps-mb-smarc-2", "tq,imx8dxp-tqma8xdps", "fsl,imx8dxp";
+};
diff --git a/src/arm64/freescale/imx8dxp-tqma8xdps.dtsi b/src/arm64/freescale/imx8dxp-tqma8xdps.dtsi
new file mode 100644 (file)
index 0000000..a97286f
--- /dev/null
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2021-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+#include "imx8dxp.dtsi"
+#include "tqma8xxs.dtsi"
+
+/ {
+       model = "TQ-Systems i.MX8DXP TQMa8XDPS";
+       compatible = "tq,imx8dxp-tqma8xdps", "fsl,imx8dxp";
+};
+
+&pmic0_thermal {
+       cooling-maps {
+               map0 {
+                       cooling-device =
+                               <&A35_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                               <&A35_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+               };
+       };
+};
index 97ff1ddd6318882a29b5ac4f9b75fc03ff2a637c..734a75198f06e01da99a441a3dd8e3617c5a9c71 100644 (file)
        assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
        assigned-clock-rates = <24576000>;
        #sound-dai-cells = <0>;
+       fsl,sai-mclk-direction-output;
        status = "okay";
 };
 
index 62ed64663f49521a9c14927886018058e489c914..21bcd82fd092f271b3f5e4ecac52478ad7176ce0 100644 (file)
@@ -78,6 +78,9 @@
                ethphy0: ethernet-phy@0 {
                        compatible = "ethernet-phy-ieee802.3-c22";
                        reg = <0>;
+                       reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
+                       interrupt-parent = <&gpio1>;
+                       interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
                };
        };
 };
        rtc: rtc@51 {
                compatible = "nxp,pcf85263";
                reg = <0x51>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+               quartz-load-femtofarads = <12500>;
+               wakeup-source;
        };
 };
 
        mmc-pwrseq = <&usdhc1_pwrseq>;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                pinctrl-names = "default";
                        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             0x146
                        MX8MM_IOMUXC_SAI2_RXC_GPIO4_IO22        0x19
                >;
        };
                >;
        };
 
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_GPIO1_IO13_GPIO1_IO13      0x146
+               >;
+       };
+
        pinctrl_uart1: uart1grp {
                fsl,pins = <
                        MX8MM_IOMUXC_UART1_RXD_UART1_DCE_RX     0x140
index 5f8336217bb88b1d0501e6208c936c51ce23b312..622caaa78eaf16a1f51be7a9c84e72c09f76295c 100644 (file)
        status = "okay";
 };
 
+&pcie0_ep {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie0>;
+       clocks = <&clk IMX8MM_CLK_PCIE1_ROOT>, <&pcie0_refclk>,
+                <&clk IMX8MM_CLK_PCIE1_AUX>;
+       assigned-clocks = <&clk IMX8MM_CLK_PCIE1_AUX>,
+                         <&clk IMX8MM_CLK_PCIE1_CTRL>;
+       assigned-clock-rates = <10000000>, <250000000>;
+       assigned-clock-parents = <&clk IMX8MM_SYS_PLL2_50M>,
+                                <&clk IMX8MM_SYS_PLL2_250M>;
+       status = "disabled";
+};
+
 &sai2 {
        #sound-dai-cells = <0>;
        pinctrl-names = "default";
index 840f8329345244b256c4da65ed4233cdefd37266..e5ca5a664b61e20e9c30c9e5ca01a6ae6da57596 100644 (file)
                        reg = <2>;
                        bridge_out: endpoint {
                                remote-endpoint = <&panel_in>;
+                               ti,lvds-vod-swing-clock-microvolt = <200000 600000>;
+                               ti,lvds-vod-swing-data-microvolt = <200000 600000>;
                        };
                };
        };
index cdfacbc35db57b654f7b965a513cf04cb4a697b9..190bde4edcd72d112c0308dc6fa0b27fabf08e10 100644 (file)
        keep-power-in-suspend;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
index b46566f3ce20569b75917cb964c0a8edfbd86a2f..1594ce9182a5826357d376fa70899b6dc333e3ef 100644 (file)
                        };
 
                        reg_nvcc_sd: LDO5 {
+                               regulator-always-on;
                                regulator-max-microvolt = <3300000>;
                                regulator-min-microvolt = <1800000>;
                                regulator-name = "On-module +V3.3_1.8_SD (LDO5)";
        };
 
        eeprom@50 {
-               compatible = "st,24c02";
+               compatible = "st,24c02", "atmel,24c02";
                pagesize = <16>;
                reg = <0x50>;
        };
 
        /* EEPROM on display adapter (MIPI DSI Display Adapter) */
        eeprom_display_adapter: eeprom@50 {
-               compatible = "st,24c02";
+               compatible = "st,24c02", "atmel,24c02";
                pagesize = <16>;
                reg = <0x50>;
                status = "disabled";
 
        /* EEPROM on carrier board */
        eeprom_carrier_board: eeprom@57 {
-               compatible = "st,24c02";
+               compatible = "st,24c02", "atmel,24c02";
                pagesize = <16>;
                reg = <0x57>;
                status = "disabled";
index 4de3bf22902b5b00f64485f21e3ebcd3039ff759..cfebaa01217eb02b9514c51ae7dabc6cd7b7245a 100644 (file)
@@ -62,7 +62,6 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x0>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clk IMX8MM_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
@@ -83,7 +82,6 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x1>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clk IMX8MM_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x2>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clk IMX8MM_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x3>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clk IMX8MM_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
index 1df5ceb1138793a0e9a1b54ff2f552eb9f3100f9..37fc5ed98d7f61f17130cf352136103a110edcb2 100644 (file)
        assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
        assigned-clock-rates = <24576000>;
        #sound-dai-cells = <0>;
+       fsl,sai-mclk-direction-output;
        status = "okay";
 };
 
index 2a64115eebf1c68b69eb0076aa08558eface5705..67a99383a63247f5373efc8cd20da75ef55516e1 100644 (file)
@@ -88,6 +88,9 @@
                ethphy0: ethernet-phy@0 {
                        compatible = "ethernet-phy-ieee802.3-c22";
                        reg = <0>;
+                       reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
+                       interrupt-parent = <&gpio1>;
+                       interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
                };
        };
 };
        rtc: rtc@51 {
                compatible = "nxp,pcf85263";
                reg = <0x51>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+               quartz-load-femtofarads = <12500>;
+               wakeup-source;
        };
 };
 
        mmc-pwrseq = <&usdhc1_pwrseq>;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                pinctrl-names = "default";
                        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             0x146
                        MX8MN_IOMUXC_SAI2_RXC_GPIO4_IO22        0x19
                >;
        };
                >;
        };
 
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX8MN_IOMUXC_GPIO1_IO13_GPIO1_IO13      0x146
+               >;
+       };
+
        pinctrl_uart1: uart1grp {
                fsl,pins = <
                        MX8MN_IOMUXC_UART1_RXD_UART1_DCE_RX     0x140
index bbb07c650da9c273a540976142197d9ff1bd5389..d20393c2d9014c33f400c68f4ebbbbe0ce9555e0 100644 (file)
        non-removable;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                compatible = "brcm,bcm4329-fmac";
                reg = <1>;
                pinctrl-names = "default";
index b364307868f25eb05507c651afa6fee8d0c8423f..38ef9e4fdf07b01d10f67ba7d4e19373ad6da7c9 100644 (file)
        keep-power-in-suspend;
        status = "okay";
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
        };
index a5f9cfb46e5dd76c7d8d7bde5915b746ce36ad02..848ba5e46ee679166e96327f089904f317b0cf95 100644 (file)
@@ -62,7 +62,6 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x0>;
-                       clock-latency = <61036>;
                        clocks = <&clk IMX8MN_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
@@ -83,7 +82,6 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x1>;
-                       clock-latency = <61036>;
                        clocks = <&clk IMX8MN_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x2>;
-                       clock-latency = <61036>;
                        clocks = <&clk IMX8MN_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x3>;
-                       clock-latency = <61036>;
                        clocks = <&clk IMX8MN_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
index 15f7ab58db36cca562ab18ef249cc7219f17331b..6a62cb32e22ecea200ef89c546395a03595c34e7 100644 (file)
        rtc: rtc@51 {
                compatible = "nxp,pcf85263";
                reg = <0x51>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+               quartz-load-femtofarads = <12500>;
+               wakeup-source;
        };
 };
 
                >;
        };
 
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO13__GPIO1_IO13     0x1d0
+               >;
+       };
+
        pinctrl_uart1: uart1grp {
                fsl,pins = <
                        MX8MP_IOMUXC_UART1_RXD__UART1_DCE_RX    0x140
index a90e28c07e3f1d5b3b29d9288528e98a868e1b3f..7f754e0a5d693fc23c1885e223558c80f351cedb 100644 (file)
        #address-cells = <1>;
        #size-cells = <0>;
 
-       brcmf: bcrmf@1 {        /* muRata 2AE */
+       brcmf: wifi@1 { /* muRata 2AE */
                reg = <1>;
                compatible = "cypress,cyw4373-fmac", "brcm,bcm4329-fmac";
                /*
index c26954e5a6056676b19467a5f31f1f4c6af9c6da..1ba3018c621e25c00e23cb2683c1bb0c51fa7365 100644 (file)
        status = "okay";
 };
 
+&dsp_reserved {
+       status = "okay";
+};
+
+&dsp {
+       memory-region = <&dsp_vdev0buffer>, <&dsp_vdev0vring0>,
+                       <&dsp_vdev0vring1>, <&dsp_reserved>;
+       status = "okay";
+};
+
 &eqos {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_eqos>;
        };
 };
 
+&mu2 {
+       status = "okay";
+};
+
 &pcie_phy {
        fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_INPUT>;
        clocks = <&pcie0_refclk>;
        status = "okay";
 };
 
-&pcie {
+&pcie0 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pcie0>;
        reset-gpio = <&gpio2 7 GPIO_ACTIVE_LOW>;
        status = "okay";
 };
 
+&pcie0_ep {
+       pinctrl-0 = <&pinctrl_pcie0>;
+       pinctrl-names = "default";
+       status = "disabled";
+};
+
 &pwm1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pwm1>;
diff --git a/src/arm64/freescale/imx8mp-libra-rdk-fpsc-lvds-etml1010g3dra.dtso b/src/arm64/freescale/imx8mp-libra-rdk-fpsc-lvds-etml1010g3dra.dtso
new file mode 100644 (file)
index 0000000..1dcf249
--- /dev/null
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/clock/imx8mp-clock.h>
+
+/dts-v1/;
+/plugin/;
+
+&backlight_lvds0 {
+       brightness-levels = <0 8 16 32 64 128 255>;
+       default-brightness-level = <8>;
+       enable-gpios = <&gpio5 23 GPIO_ACTIVE_LOW>;
+       num-interpolated-steps = <2>;
+       pwms = <&pwm1 0 66667 0>;
+       status = "okay";
+};
+
+&lcdif2 {
+       status = "okay";
+};
+
+&lvds_bridge {
+       assigned-clocks = <&clk IMX8MP_CLK_MEDIA_LDB>, <&clk IMX8MP_VIDEO_PLL1>;
+       assigned-clock-parents = <&clk IMX8MP_VIDEO_PLL1_OUT>;
+       /*
+        * The LVDS panel uses 72.4 MHz pixel clock, set IMX8MP_VIDEO_PLL1 to
+        * 72.4 * 7 = 506.8 MHz so the LDB serializer and LCDIFv3 scanout
+        * engine can reach accurate pixel clock of exactly 72.4 MHz.
+        */
+       assigned-clock-rates = <0>, <506800000>;
+       status = "okay";
+};
+
+&panel0_lvds {
+       compatible = "edt,etml1010g3dra";
+       status = "okay";
+};
+
+&pwm1 {
+       status = "okay";
+};
diff --git a/src/arm64/freescale/imx8mp-libra-rdk-fpsc.dts b/src/arm64/freescale/imx8mp-libra-rdk-fpsc.dts
new file mode 100644 (file)
index 0000000..6f3a7b8
--- /dev/null
@@ -0,0 +1,290 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/leds-pca9532.h>
+#include <dt-bindings/phy/phy-imx8-pcie.h>
+#include <dt-bindings/pwm/pwm.h>
+#include "imx8mp-phycore-fpsc.dtsi"
+
+/ {
+       compatible = "phytec,imx8mp-libra-rdk-fpsc",
+                    "phytec,imx8mp-phycore-fpsc", "fsl,imx8mp";
+       model = "PHYTEC i.MX8MP Libra RDK FPSC";
+
+       backlight_lvds0: backlight0 {
+               compatible = "pwm-backlight";
+               pinctrl-0 = <&pinctrl_lvds0>;
+               pinctrl-names = "default";
+               power-supply = <&reg_vdd_12v0>;
+               status = "disabled";
+       };
+
+       chosen {
+               stdout-path = &uart4;
+       };
+
+       panel0_lvds: panel-lvds {
+               /* compatible panel in overlay */
+               backlight = <&backlight_lvds0>;
+               power-supply = <&reg_vdd_3v3>;
+               status = "disabled";
+
+               port {
+                       panel0_in: endpoint {
+                               remote-endpoint = <&ldb_lvds_ch0>;
+                       };
+               };
+       };
+
+       reg_can1_stby: regulator-can1-stby {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "can1-stby";
+               gpio = <&gpio_expander 10 GPIO_ACTIVE_LOW>;
+       };
+
+       reg_can2_stby: regulator-can2-stby {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "can2-stby";
+               gpio = <&gpio_expander 9 GPIO_ACTIVE_LOW>;
+       };
+
+       reg_vdd_12v0: regulator-vdd-12v0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <12000000>;
+               regulator-min-microvolt = <12000000>;
+               regulator-name = "VDD_12V0";
+       };
+
+       reg_vdd_1v8: regulator-vdd-1v8 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "VDD_1V8";
+       };
+
+       reg_vdd_3v3: regulator-vdd-3v3 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "VDD_3V3";
+       };
+
+       reg_vdd_5v0: regulator-vdd-5v0 {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "VDD_5V0";
+       };
+};
+
+&eqos {
+       phy-handle = <&ethphy1>;
+       status = "okay";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy1: ethernet-phy@1 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0x1>;
+                       enet-phy-lane-no-swap;
+                       ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+                       ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>;
+               };
+       };
+};
+
+/* CAN FD */
+&flexcan1 {
+       xceiver-supply = <&reg_can1_stby>;
+       status = "okay";
+};
+
+&flexcan2 {
+       xceiver-supply = <&reg_can2_stby>;
+       status = "okay";
+};
+
+&flexspi {
+       status = "okay";
+
+       spi_nor: flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <80000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <1>;
+               vcc-supply = <&reg_vdd_1v8>;
+       };
+};
+
+&gpio5 {
+       gpio-line-names = "", "", "", "", "I2C5_SDA",
+                         "GPIO1", "", "", "", "SPI1_CS",
+                         "", "", "", "SPI2_CS", "I2C1_SCL",
+                         "I2C1_SDA", "I2C2_SCL", "I2C2_SDA", "I2C3_SCL", "I2C3_SDA",
+                         "", "GPIO2", "", "LVDS1_BL_EN", "SPI3_CS",
+                         "", "GPIO3";
+};
+
+&i2c2 {
+       clock-frequency = <400000>;
+       status = "okay";
+
+       eeprom@51 {
+               compatible = "atmel,24c02";
+               reg = <0x51>;
+               pagesize = <16>;
+               vcc-supply = <&reg_vdd_1v8>;
+       };
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+       status = "okay";
+
+       leds@62 {
+               compatible = "nxp,pca9533";
+               reg = <0x62>;
+
+               led-1 {
+                       type = <PCA9532_TYPE_LED>;
+               };
+
+               led-2 {
+                       type = <PCA9532_TYPE_LED>;
+               };
+
+               led-3 {
+                       type = <PCA9532_TYPE_LED>;
+               };
+       };
+};
+
+&i2c5 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       gpio_expander: gpio@20 {
+               compatible = "ti,tca6416";
+               reg = <0x20>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               gpio-line-names = "CSI1_CTRL1", "CSI1_CTRL2", "CSI1_CTRL3",
+                                 "CSI1_CTRL4", "CSI2_CTRL1", "CSI2_CTRL2",
+                                 "CSI2_CTRL3", "CSI2_CTRL4", "CLK_EN_AV",
+                                 "nCAN2_EN", "nCAN1_EN", "PCIE1_nWAKE",
+                                 "PCIE2_nWAKE", "PCIE2_nALERT_3V3",
+                                 "UART1_BT_RS_SEL", "UART1_RS232_485_SEL";
+               vcc-supply = <&reg_vdd_1v8>;
+
+               uart1_bt_rs_sel: bt-rs-hog {
+                       gpios = <14 GPIO_ACTIVE_HIGH>;
+                       gpio-hog;
+                       line-name = "UART1_BT_RS_SEL";
+                       output-low;     /* default RS232/RS485 */
+               };
+
+               uart1_rs232_485_sel: rs232-485-hog {
+                       gpios = <15 GPIO_ACTIVE_HIGH>;
+                       gpio-hog;
+                       line-name = "UART1_RS232_485_SEL";
+                       output-high;    /* default RS232 */
+               };
+       };
+};
+
+&iomuxc {
+       pinctrl_lvds0: lvds0grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART1_TXD__GPIO5_IO23      0x12
+               >;
+       };
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART2_TXD__GPIO5_IO25      0x1C0
+               >;
+       };
+};
+
+&lvds_bridge {
+       ports {
+               port@1 {
+                       ldb_lvds_ch0: endpoint {
+                               remote-endpoint = <&panel0_in>;
+                       };
+               };
+       };
+};
+
+/* Mini PCIe */
+&pcie {
+       reset-gpio = <&gpio1 8 GPIO_ACTIVE_LOW>;
+       vpcie-supply = <&reg_vdd_3v3>;
+       status = "okay";
+};
+
+&pcie_phy {
+       clocks = <&hsio_blk_ctrl>;
+       clock-names = "ref";
+       fsl,clkreq-unsupported;
+       fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>;
+       status = "okay";
+};
+
+&reg_vdd_io {
+       regulator-max-microvolt = <1800000>;
+       regulator-min-microvolt = <1800000>;
+};
+
+&rv3028 {
+       interrupt-parent = <&gpio5>;
+       interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
+       aux-voltage-chargeable = <1>;
+       pinctrl-0 = <&pinctrl_rtc>;
+       pinctrl-names = "default";
+       trickle-resistor-ohms = <3000>;
+       wakeup-source;
+};
+
+&snvs_pwrkey {
+       status = "okay";
+};
+
+/* debug console */
+&uart4 {
+       status = "okay";
+};
+
+/* SD-Card */
+&usdhc2 {
+       assigned-clocks = <&clk IMX8MP_CLK_USDHC2>;
+       assigned-clock-rates = <200000000>;
+       bus-width = <4>;
+       disable-wp;
+       status = "okay";
+};
diff --git a/src/arm64/freescale/imx8mp-nitrogen-enc-carrier-board.dts b/src/arm64/freescale/imx8mp-nitrogen-enc-carrier-board.dts
new file mode 100644 (file)
index 0000000..1df9488
--- /dev/null
@@ -0,0 +1,452 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2020 Boundary Devices
+ * Copyright 2025 Collabora Ltd.
+ */
+
+/dts-v1/;
+
+#include "imx8mp-nitrogen-som.dtsi"
+
+/ {
+       model = "Boundary Devices Nitrogen8M Plus ENC Carrier Board";
+       compatible = "boundary,imx8mp-nitrogen-enc-carrier-board",
+                       "boundary,imx8mp-nitrogen-som", "fsl,imx8mp";
+
+       chosen {
+               stdout-path = &uart2;
+       };
+
+       connector {
+               compatible = "usb-c-connector";
+               data-role = "dual";
+               label = "USB-C";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               hs_ep: endpoint {
+                                       remote-endpoint = <&usb3_hs_ep>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               ss_ep: endpoint {
+                                       remote-endpoint = <&hd3ss3220_in_ep>;
+                               };
+                       };
+               };
+       };
+
+       hdmi-connector {
+               compatible = "hdmi-connector";
+               label = "hdmi";
+               type = "a";
+
+               port {
+                       hdmi_connector_in: endpoint {
+                               remote-endpoint = <&hdmi_tx_out>;
+                       };
+               };
+       };
+
+       reg_usb_vbus: regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usb_vbus>;
+               regulator-name = "usb_vbus";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+};
+
+&ecspi2 {
+       cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&gpio1 {
+       usb-hub-reset-hog {
+               gpio-hog;
+               gpios = <6 GPIO_ACTIVE_LOW>;
+               line-name = "usb-hub-reset";
+               output-low;
+       };
+};
+
+&hdmi_pvi {
+       status = "okay";
+};
+
+&hdmi_tx {
+       pinctrl-0 = <&pinctrl_hdmi>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       ports {
+               port@1 {
+                       hdmi_tx_out: endpoint {
+                               remote-endpoint = <&hdmi_connector_in>;
+                       };
+               };
+       };
+};
+
+&hdmi_tx_phy {
+       status = "okay";
+};
+
+&i2c2 {
+       i2c-mux@70 {
+               compatible = "nxp,pca9546";
+               reg = <0x70>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-0 = <&pinctrl_i2c2_pca9546>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+
+               i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <100000>;
+               };
+
+               i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clock-frequency = <100000>;
+
+                       rtc@52 {
+                               compatible = "microcrystal,rv3028";
+                               reg = <0x52>;
+                               interrupts-extended = <&gpio1 4 IRQ_TYPE_LEVEL_LOW>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pinctrl_rv3028>;
+                               wakeup-source;
+                       };
+               };
+       };
+};
+
+&i2c4 {
+       usb-mux@47 {
+               compatible = "ti,hd3ss3220";
+               reg = <0x47>;
+               interrupts-extended = <&gpio1 8 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c4_hd3ss3220>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               hd3ss3220_in_ep: endpoint {
+                                       remote-endpoint = <&ss_ep>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               hd3ss3220_out_ep: endpoint {
+                                       remote-endpoint = <&usb3_role_switch>;
+                               };
+                       };
+               };
+       };
+};
+
+&isp_0 {
+       status = "okay";
+};
+
+&lcdif3 {
+       status = "okay";
+};
+
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm1>;
+       status = "okay";
+};
+
+&pwm2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm2>;
+       status = "okay";
+};
+
+&pwm4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm4>;
+       status = "okay";
+};
+
+&snvs_pwrkey {
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       status = "okay";
+};
+
+&uart3 {
+       assigned-clocks = <&clk IMX8MP_CLK_UART3>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart3>;
+       status = "okay";
+};
+
+&uart4 {
+       assigned-clocks = <&clk IMX8MP_CLK_UART4>;
+       assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_80M>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+       status = "okay";
+};
+
+&usb3_0 {
+       fsl,over-current-active-low;
+       status = "okay";
+};
+
+&usb3_1 {
+       status = "okay";
+};
+
+&usb3_phy0 {
+       vbus-supply = <&reg_usb_vbus>;
+       status = "okay";
+};
+
+&usb3_phy1 {
+       vbus-supply = <&reg_usb_vbus>;
+       status = "okay";
+};
+
+&usb_dwc3_0 {
+       dr_mode = "otg";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb3_0>;
+       usb-role-switch;
+       status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+
+                       usb3_hs_ep: endpoint {
+                               remote-endpoint = <&hs_ep>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+
+                       usb3_role_switch: endpoint {
+                               remote-endpoint = <&hd3ss3220_out_ep>;
+                       };
+               };
+       };
+};
+
+&usb_dwc3_1 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usdhc1 {
+       bus-width = <4>;
+       cd-gpios = <&gpio2 11 GPIO_ACTIVE_LOW>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>, <&pinctrl_usdhc1_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>, <&pinctrl_usdhc1_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>, <&pinctrl_usdhc1_gpio>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       pinctrl_ecspi2: ecspi2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO           0x82
+                       MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI           0x82
+                       MX8MP_IOMUXC_ECSPI2_SCLK__ECSPI2_SCLK           0x82
+                       MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13             0x143
+               >;
+       };
+
+       pinctrl_hdmi: hdmigrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_HDMI_CEC         0x40000019
+                       MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL     0x400001c3
+                       MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA     0x400001c3
+                       MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_HDMI_HPD         0x40000019
+               >;
+       };
+
+       pinctrl_hog: hoggrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO06__GPIO1_IO06             0x100
+                       MX8MP_IOMUXC_NAND_DATA01__GPIO3_IO07            0x119
+                       MX8MP_IOMUXC_SAI1_MCLK__GPIO4_IO20              0x16
+                       MX8MP_IOMUXC_SAI1_TXD7__GPIO4_IO19              0x1c4
+                       MX8MP_IOMUXC_SD1_DATA4__GPIO2_IO06              0x41
+                       MX8MP_IOMUXC_SD1_DATA5__GPIO2_IO07              0x41
+                       MX8MP_IOMUXC_SD1_DATA6__GPIO2_IO08              0x41
+                       MX8MP_IOMUXC_SD1_RESET_B__GPIO2_IO10            0x41
+                       MX8MP_IOMUXC_SPDIF_EXT_CLK__GPIO5_IO05          0x41
+                       MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04               0x41
+                       MX8MP_IOMUXC_SPDIF_TX__GPIO5_IO03               0x41
+               >;
+       };
+
+       pinctrl_i2c2_pca9546: i2c2-pca9546grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO05__GPIO1_IO05             0x100
+               >;
+       };
+
+       pinctrl_i2c4_hd3ss3220: i2c4-hd3ss3220grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO08__GPIO1_IO08             0x16
+                       MX8MP_IOMUXC_SAI1_RXD0__GPIO4_IO02              0x03
+               >;
+       };
+
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO01__PWM1_OUT               0x100
+               >;
+       };
+
+       pinctrl_pwm2: pwm2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO09__PWM2_OUT               0xd6
+                       MX8MP_IOMUXC_SAI5_RXD0__PWM2_OUT                0xd6
+               >;
+       };
+
+       pinctrl_pwm4: pwm4grp {
+               fsl,pins = <
+               MX8MP_IOMUXC_SAI5_RXFS__PWM4_OUT                        0x116
+               >;
+       };
+
+       pinctrl_reg_usb_vbus: reg-usb-vbusgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12             0x100
+               >;
+       };
+
+       pinctrl_rv3028: rv3028grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04             0x1c0
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX            0x140
+                       MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX            0x140
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ECSPI1_MOSI__UART3_DCE_TX          0x140
+                       MX8MP_IOMUXC_ECSPI1_SCLK__UART3_DCE_RX          0x140
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART4_RXD__UART4_DCE_RX            0x140
+                       MX8MP_IOMUXC_UART4_TXD__UART4_DCE_TX            0x140
+               >;
+       };
+
+       pinctrl_usb3_0: usb3-0grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO13__USB1_OTG_OC            0x1c0
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO03__USDHC1_VSELECT         0x116
+                       MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK                0x190
+                       MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD                0x1d0
+                       MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0            0x1d0
+                       MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1            0x1d0
+                       MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2            0x1d0
+                       MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3            0x1d0
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK                0x194
+                       MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD                0x1d4
+                       MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0            0x1d4
+                       MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1            0x1d4
+                       MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2            0x1d4
+                       MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3            0x1d4
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK                0x196
+                       MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD                0x1d6
+                       MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0            0x1d6
+                       MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1            0x1d6
+                       MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2            0x1d6
+                       MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3            0x1d6
+               >;
+       };
+
+       pinctrl_usdhc1_gpio: usdhc1-gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD1_STROBE__GPIO2_IO11             0x1c4
+               >;
+       };
+};
diff --git a/src/arm64/freescale/imx8mp-nitrogen-som.dtsi b/src/arm64/freescale/imx8mp-nitrogen-som.dtsi
new file mode 100644 (file)
index 0000000..f658309
--- /dev/null
@@ -0,0 +1,409 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2020 Boundary Devices
+ * Copyright 2025 Collabora Ltd.
+ */
+
+#include "imx8mp.dtsi"
+
+/ {
+       model = "Boundary Devices Nitrogen8M Plus Som";
+       compatible = "boundary,imx8mp-nitrogen-som", "fsl,imx8mp";
+
+       rfkill-bt {
+               compatible = "rfkill-gpio";
+               label = "rfkill-bluetooth";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rfkill_bt>;
+               radio-type = "bluetooth";
+               shutdown-gpios = <&gpio3 9 GPIO_ACTIVE_LOW>;
+       };
+
+       rfkill-wlan {
+               compatible = "rfkill-gpio";
+               label = "rfkill-wlan";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rfkill_wlan>;
+               radio-type = "wlan";
+               shutdown-gpios = <&gpio2 19 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&A53_0 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_1 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_2 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_3 {
+       cpu-supply = <&buck2>;
+};
+
+&eqos {
+       phy-handle = <&ethphy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_eqos>;
+       status = "okay";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@4 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <4>;
+                       eee-broken-1000t;
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio5 14 GPIO_OPEN_DRAIN>;
+       sda-gpios = <&gpio5 15 GPIO_OPEN_DRAIN>;
+       status = "okay";
+
+       pmic: pmic@25 {
+               compatible = "nxp,pca9450c";
+               reg = <0x25>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&pinctrl_pmic>;
+
+               regulators {
+
+                       buck1: BUCK1 {
+                               regulator-name = "VDD_SOC (BUCK1)";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <2187500>;
+                               regulator-min-microvolt = <600000>;
+                               regulator-ramp-delay = <3125>;
+                       };
+
+                       buck2: BUCK2 {
+                               regulator-name = "VDD_ARM (BUCK2)";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <2187500>;
+                               regulator-min-microvolt = <600000>;
+                               regulator-ramp-delay = <3125>;
+                       };
+
+                       buck4: BUCK4 {
+                               regulator-name = "VDD_3P3V (BUCK4)";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-min-microvolt = <600000>;
+                       };
+
+                       buck5: BUCK5 {
+                               regulator-name = "VDD_1P8V (BUCK5)";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-min-microvolt = <600000>;
+                       };
+
+                       buck6: BUCK6 {
+                               regulator-name = "NVCC_DRAM_1P1V (BUCK6)";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-min-microvolt = <600000>;
+                       };
+
+                       ldo1: LDO1 {
+                               regulator-name = "NVCC_SNVS_1V8 (LDO1)";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <1600000>;
+                       };
+
+                       ldo3: LDO3 {
+                               regulator-name = "VDDA_1V8 (LDO3)";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <800000>;
+                       };
+
+                       ldo5: LDO5 {
+                               regulator-name = "NVCC_SD1 (LDO5)";
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <1800000>;
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       scl-gpios = <&gpio5 16 GPIO_OPEN_DRAIN>;
+       sda-gpios = <&gpio5 17 GPIO_OPEN_DRAIN>;
+       status = "okay";
+};
+
+&i2c3 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       scl-gpios = <&gpio5 18 GPIO_OPEN_DRAIN>;
+       sda-gpios = <&gpio5 19 GPIO_OPEN_DRAIN>;
+       status = "okay";
+};
+
+&i2c4 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c4>;
+       pinctrl-1 = <&pinctrl_i2c4_gpio>;
+       scl-gpios = <&gpio5 20 GPIO_OPEN_DRAIN>;
+       sda-gpios = <&gpio5 21 GPIO_OPEN_DRAIN>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&usdhc2 {
+       bus-width = <4>;
+       keep-power-in-suspend;
+       non-removable;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       status = "okay";
+};
+
+&usdhc3 {
+       bus-width = <8>;
+       non-removable;
+       no-mmc-hs400;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_eqos: eqosgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC                             0x20
+                       MX8MP_IOMUXC_ENET_MDIO__ENET_QOS_MDIO                           0xa0
+                       MX8MP_IOMUXC_ENET_RD0__ENET_QOS_RGMII_RD0                       0x91
+                       MX8MP_IOMUXC_ENET_RD1__ENET_QOS_RGMII_RD1                       0x91
+                       MX8MP_IOMUXC_ENET_RD2__ENET_QOS_RGMII_RD2                       0x91
+                       MX8MP_IOMUXC_ENET_RD3__ENET_QOS_RGMII_RD3                       0x91
+                       MX8MP_IOMUXC_ENET_RX_CTL__ENET_QOS_RGMII_RX_CTL                 0x91
+                       MX8MP_IOMUXC_ENET_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK       0x91
+                       MX8MP_IOMUXC_ENET_TD0__ENET_QOS_RGMII_TD0                       0x1f
+                       MX8MP_IOMUXC_ENET_TD1__ENET_QOS_RGMII_TD1                       0x1f
+                       MX8MP_IOMUXC_ENET_TD2__ENET_QOS_RGMII_TD2                       0x1f
+                       MX8MP_IOMUXC_ENET_TD3__ENET_QOS_RGMII_TD3                       0x1f
+                       MX8MP_IOMUXC_ENET_TX_CTL__ENET_QOS_RGMII_TX_CTL                 0x1f
+                       MX8MP_IOMUXC_ENET_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK       0x1f
+
+                       MX8MP_IOMUXC_NAND_CE1_B__GPIO3_IO02                             0x10
+                       MX8MP_IOMUXC_NAND_READY_B__GPIO3_IO16                           0x100
+               >;
+       };
+
+       pinctrl_i2c1_gpio: i2c1gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C1_SCL__GPIO5_IO14       0x1c3
+                       MX8MP_IOMUXC_I2C1_SDA__GPIO5_IO15       0x1c3
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C1_SCL__I2C1_SCL         0x400001c3
+                       MX8MP_IOMUXC_I2C1_SDA__I2C1_SDA         0x400001c3
+               >;
+       };
+
+       pinctrl_i2c2_gpio: i2c2gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C2_SCL__GPIO5_IO16       0x1c3
+                       MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17       0x1c3
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL         0x400001c3
+                       MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA         0x400001c3
+               >;
+       };
+
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C3_SCL__GPIO5_IO18       0x1c3
+                       MX8MP_IOMUXC_I2C3_SDA__GPIO5_IO19       0x1c3
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C3_SCL__I2C3_SCL         0x400001c3
+                       MX8MP_IOMUXC_I2C3_SDA__I2C3_SDA         0x400001c3
+               >;
+       };
+
+       pinctrl_i2c4_gpio: i2c4gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C4_SCL__GPIO5_IO20       0x1c3
+                       MX8MP_IOMUXC_I2C4_SDA__GPIO5_IO21       0x1c3
+               >;
+       };
+
+       pinctrl_i2c4: i2c4grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C4_SCL__I2C4_SCL         0x400001c3
+                       MX8MP_IOMUXC_I2C4_SDA__I2C4_SDA         0x400001c3
+               >;
+       };
+
+       pinctrl_pmic: pmicirqgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_ALE__GPIO3_IO00       0x41
+               >;
+       };
+
+       pinctrl_rfkill_bt: rfkill-btgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_DATA03__GPIO3_IO09    0x119
+               >;
+       };
+
+       pinctrl_rfkill_wlan: rfkill-wlangrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19    0x16
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART1_RXD__UART1_DCE_RX    0x140
+                       MX8MP_IOMUXC_UART1_TXD__UART1_DCE_TX    0x140
+                       MX8MP_IOMUXC_UART3_RXD__UART1_DCE_CTS   0x140
+                       MX8MP_IOMUXC_UART3_TXD__UART1_DCE_RTS   0x140
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK        0x190
+                       MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD        0x1d0
+                       MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0    0x1d0
+                       MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1    0x1d0
+                       MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2    0x1d0
+                       MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3    0x1d0
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK        0x194
+                       MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD        0x1d4
+                       MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0    0x1d4
+                       MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1    0x1d4
+                       MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2    0x1d4
+                       MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3    0x1d4
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK        0x196
+                       MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD        0x1d6
+                       MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0    0x1d6
+                       MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1    0x1d6
+                       MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2    0x1d6
+                       MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3    0x1d6
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK      0x10
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD      0x150
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0  0x150
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1  0x150
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2  0x150
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3  0x150
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4    0x150
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5   0x150
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6   0x150
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7     0x150
+                       MX8MP_IOMUXC_NAND_CE0_B__GPIO3_IO01     0x140
+
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK      0x14
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD      0x154
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0  0x154
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1  0x154
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2  0x154
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3  0x154
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4    0x154
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5   0x154
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6   0x154
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7     0x154
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK      0x12
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD      0x152
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0  0x152
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1  0x152
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2  0x152
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3  0x152
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4    0x152
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5   0x152
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6   0x152
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7     0x152
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B   0xc6
+               >;
+       };
+};
diff --git a/src/arm64/freescale/imx8mp-phycore-fpsc.dtsi b/src/arm64/freescale/imx8mp-phycore-fpsc.dtsi
new file mode 100644 (file)
index 0000000..8b0e8cf
--- /dev/null
@@ -0,0 +1,796 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ */
+
+#include <dt-bindings/net/ti-dp83867.h>
+#include "imx8mp.dtsi"
+
+/ {
+       compatible = "phytec,imx8mp-phycore-fpsc", "fsl,imx8mp";
+       model = "PHYTEC phyCORE-i.MX8MP FPSC";
+
+       aliases {
+               rtc0 = &rv3028;
+               rtc1 = &snvs_rtc;
+       };
+
+       memory@40000000 {
+               device_type = "memory";
+               reg = <0x0 0x40000000 0x0 0x80000000>;
+       };
+
+       reg_usdhc2_vmmc: regulator-usdhc2 {
+                compatible = "regulator-fixed";
+                off-on-delay-us = <12000>;
+                pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
+                pinctrl-names = "default";
+                regulator-max-microvolt = <3300000>;
+                regulator-min-microvolt = <3300000>;
+                regulator-name = "VDDSW_SD2";
+                startup-delay-us = <100>;
+                gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
+                enable-active-high;
+        };
+
+       reg_vdd_io: regulator-vdd-io {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-name = "VDD_IO";
+       };
+};
+
+&A53_0 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_1 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_2 {
+       cpu-supply = <&buck2>;
+};
+
+&A53_3 {
+       cpu-supply = <&buck2>;
+};
+
+&ecspi1 { /* FPSC SPI1 */
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       pinctrl-names = "default";
+};
+
+&ecspi2 { /* FPSC SPI2 */
+       pinctrl-0 = <&pinctrl_ecspi2>;
+       pinctrl-names = "default";
+};
+
+&ecspi3 { /* FPSC SPI3 */
+       pinctrl-0 = <&pinctrl_ecspi3>;
+       pinctrl-names = "default";
+};
+
+&eqos { /* FPSC RGMII2 */
+       phy-mode = "rgmii-id";
+       pinctrl-0 = <&pinctrl_eqos>;
+       pinctrl-names = "default";
+};
+
+&fec { /* FPSC GB_ETH1 */
+       phy-handle = <&ethphy0>;
+       phy-mode = "rgmii-id";
+       pinctrl-0 = <&pinctrl_fec>;
+       pinctrl-names = "default";
+       fsl,magic-packet;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       interrupt-parent = <&gpio4>;
+                       interrupts = <19 IRQ_TYPE_LEVEL_LOW>;
+                       enet-phy-lane-no-swap;
+                       ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+                       ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       ti,min-output-impedance;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_1_50_NS>;
+               };
+       };
+};
+
+&flexcan1 { /* FPSC CAN1 */
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       pinctrl-names = "default";
+};
+
+&flexcan2 { /* FPSC CAN2 */
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       pinctrl-names = "default";
+};
+
+&flexspi { /* FPSC QSPI */
+       pinctrl-0 = <&pinctrl_flexspi>;
+       pinctrl-names = "default";
+};
+
+&gpio1 {
+       gpio-line-names = "", "", "", "", "",
+                         "", "", "", "PCIE1_nPERST";
+};
+
+&gpio2 {
+       gpio-line-names = "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "", "", "", "SD2_RESET_B";
+};
+
+&gpio3 {
+       gpio-line-names = "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "", "", "", "I2C6_SCL",
+                         "I2C6_SDA", "I2C5_SCL";
+};
+
+&gpio4 { /* FPSC GPIO */
+       gpio-line-names = "GPIO6", "RGMII2_nINT", "GPIO7", "GPIO4", "",
+                         "", "", "", "", "",
+                         "", "", "", "", "",
+                         "", "", "", "X_PMIC_IRQ_B", "",
+                         "", "GPIO5", "", "", "RGMII2_EVENT_OUT",
+                         "", "", "RGMII2_EVENT_IN";
+       pinctrl-0 = <&pinctrl_gpio4>;
+       pinctrl-names = "default";
+};
+
+&gpio5 { /* FPSC GPIO */
+       gpio-line-names = "", "", "", "", "I2C5_SDA",
+                         "GPIO1", "", "", "", "SPI1_CS",
+                         "", "", "", "SPI2_CS", "I2C1_SCL",
+                         "I2C1_SDA", "I2C2_SCL", "I2C2_SDA", "I2C3_SCL", "I2C3_SDA",
+                         "", "GPIO2", "", "", "SPI3_CS",
+                         "", "GPIO3";
+       pinctrl-0 = <&pinctrl_gpio5>;
+       pinctrl-names = "default";
+};
+
+&i2c1 { /* FPSC I2C1 */
+       clock-frequency = <400000>;
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+
+       pmic: pmic@25 {
+               compatible = "nxp,pca9450c";
+               reg = <0x25>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&pinctrl_pmic>;
+               pinctrl-names = "default";
+
+               regulators {
+                       buck1: BUCK1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <950000>;
+                               regulator-min-microvolt = <850000>;
+                               regulator-name = "VDD_SOC (BUCK1)";
+                               regulator-ramp-delay = <3125>;
+                       };
+
+                       buck2: BUCK2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-min-microvolt = <850000>;
+                               regulator-name = "VDD_ARM (BUCK2)";
+                               regulator-ramp-delay = <3125>;
+                               nxp,dvs-run-voltage = <950000>;
+                               nxp,dvs-standby-voltage = <850000>;
+                       };
+
+                       buck4: BUCK4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-name = "VDD_3V3 (BUCK4)";
+                       };
+
+                       buck5: BUCK5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "VDD_1V8 (BUCK5)";
+                       };
+
+                       buck6: BUCK6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1155000>;
+                               regulator-min-microvolt = <1045000>;
+                               regulator-name = "NVCC_DRAM_1V1 (BUCK6)";
+                       };
+
+                       ldo1: LDO1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "NVCC_SNVS_1V8 (LDO1)";
+                       };
+
+                       ldo3: LDO3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "VDDA_1V8 (LDO3)";
+                       };
+
+                       ldo5: LDO5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "NVCC_SD2 (LDO5)";
+                       };
+               };
+       };
+
+       /* User EEPROM */
+       eeprom@50 {
+               compatible = "atmel,24c32";
+               reg = <0x50>;
+               pagesize = <32>;
+               vcc-supply = <&reg_vdd_io>;
+       };
+
+       /* factory EEPROM */
+       eeprom@51 {
+               compatible = "atmel,24c32";
+               reg = <0x51>;
+               pagesize = <32>;
+               read-only;
+               vcc-supply = <&reg_vdd_io>;
+       };
+
+       rv3028: rtc@52 {
+               compatible = "microcrystal,rv3028";
+               reg = <0x52>;
+       };
+};
+
+&i2c2 { /* FPSC I2C2 */
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+};
+
+&i2c3 { /* FPSC I2C3 */
+       pinctrl-0 = <&pinctrl_i2c3>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+};
+
+&i2c5 { /* FPSC I2C4 */
+       pinctrl-0 = <&pinctrl_i2c5>;
+       pinctrl-1 = <&pinctrl_i2c5_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio3 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+};
+
+&i2c6 { /* FPSC I2C5 */
+       pinctrl-0 = <&pinctrl_i2c6>;
+       pinctrl-1 = <&pinctrl_i2c6_gpio>;
+       pinctrl-names = "default", "gpio";
+       scl-gpios = <&gpio3 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio3 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+};
+
+&iomuxc {
+       pinctrl_flexcan1: can1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI2_RXC__CAN1_TX          0x154   /* CAN1_TX */
+                       MX8MP_IOMUXC_SAI2_TXC__CAN1_RX          0x154   /* CAN1_RX */
+               >;
+       };
+
+       pinctrl_flexcan2: can2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI2_TXD0__CAN2_TX         0x154   /* CAN2_TX */
+                       MX8MP_IOMUXC_UART3_TXD__CAN2_RX         0x154   /* CAN2_RX */
+               >;
+       };
+
+       pinctrl_eqos: eqosgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI1_RXC__GPIO4_IO01                               0x10    /* RGMII2_nINT */
+                       MX8MP_IOMUXC_SAI2_MCLK__GPIO4_IO27                              0x10    /* RGMII2_EVENT_IN */
+                       MX8MP_IOMUXC_SAI2_TXFS__GPIO4_IO24                              0x10    /* RGMII2_EVENT_OUT */
+                       MX8MP_IOMUXC_ENET_MDIO__ENET_QOS_MDIO                           0x2     /* RGMII2_MDIO */
+                       MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC                             0x2     /* RGMII2_MDC */
+                       MX8MP_IOMUXC_ENET_TD3__ENET_QOS_RGMII_TD3                       0x12    /* RGMII2_TX_D3 */
+                       MX8MP_IOMUXC_ENET_TD2__ENET_QOS_RGMII_TD2                       0x12    /* RGMII2_TX_D2 */
+                       MX8MP_IOMUXC_ENET_TD1__ENET_QOS_RGMII_TD1                       0x12    /* RGMII2_TX_D1 */
+                       MX8MP_IOMUXC_ENET_TD0__ENET_QOS_RGMII_TD0                       0x12    /* RGMII2_TX_D0 */
+                       MX8MP_IOMUXC_ENET_TX_CTL__ENET_QOS_RGMII_TX_CTL                 0x12    /* RGMII2_TX_CTL */
+                       MX8MP_IOMUXC_ENET_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK       0x12    /* RGMII2_TXC */
+                       MX8MP_IOMUXC_ENET_RD3__ENET_QOS_RGMII_RD3                       0x90    /* RGMII2_RX_D3 */
+                       MX8MP_IOMUXC_ENET_RD2__ENET_QOS_RGMII_RD2                       0x90    /* RGMII2_RX_D2 */
+                       MX8MP_IOMUXC_ENET_RD1__ENET_QOS_RGMII_RD1                       0x90    /* RGMII2_RX_D1 */
+                       MX8MP_IOMUXC_ENET_RD0__ENET_QOS_RGMII_RD0                       0x90    /* RGMII2_RX_D0 */
+                       MX8MP_IOMUXC_ENET_RX_CTL__ENET_QOS_RGMII_RX_CTL                 0x90    /* RGMII2_RX_CTL */
+                       MX8MP_IOMUXC_ENET_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK       0x90    /* RGMII2_RXC */
+               >;
+       };
+
+       pinctrl_fec: fecgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI1_RXD2__ENET1_MDC               0x2
+                       MX8MP_IOMUXC_SAI1_RXD3__ENET1_MDIO              0x2
+                       MX8MP_IOMUXC_SAI1_RXD4__ENET1_RGMII_RD0         0x90
+                       MX8MP_IOMUXC_SAI1_RXD5__ENET1_RGMII_RD1         0x90
+                       MX8MP_IOMUXC_SAI1_RXD6__ENET1_RGMII_RD2         0x90
+                       MX8MP_IOMUXC_SAI1_RXD7__ENET1_RGMII_RD3         0x90
+                       MX8MP_IOMUXC_SAI1_TXD7__GPIO4_IO19              0x140
+                       MX8MP_IOMUXC_SAI1_TXC__ENET1_RGMII_RXC          0x90
+                       MX8MP_IOMUXC_SAI1_TXD0__ENET1_RGMII_TD0         0x12
+                       MX8MP_IOMUXC_SAI1_TXD1__ENET1_RGMII_TD1         0x12
+                       MX8MP_IOMUXC_SAI1_TXD2__ENET1_RGMII_TD2         0x14
+                       MX8MP_IOMUXC_SAI1_TXD3__ENET1_RGMII_TD3         0x14
+                       MX8MP_IOMUXC_SAI1_TXD4__ENET1_RGMII_TX_CTL      0x14
+                       MX8MP_IOMUXC_SAI1_TXD5__ENET1_RGMII_TXC         0x14
+                       MX8MP_IOMUXC_SAI1_TXFS__ENET1_RGMII_RX_CTL      0x90
+               >;
+       };
+
+       pinctrl_flexspi: flexspigrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_CE0_B__FLEXSPI_A_SS0_B        0x82    /* QSPI_CE */
+                       MX8MP_IOMUXC_NAND_ALE__FLEXSPI_A_SCLK           0x1c2   /* QSPI_CLK */
+                       MX8MP_IOMUXC_NAND_DATA00__FLEXSPI_A_DATA00      0x82    /* QSPI_DATA_0 */
+                       MX8MP_IOMUXC_NAND_DATA01__FLEXSPI_A_DATA01      0x82    /* QSPI_DATA_1 */
+                       MX8MP_IOMUXC_NAND_DATA02__FLEXSPI_A_DATA02      0x82    /* QSPI_DATA_2 */
+                       MX8MP_IOMUXC_NAND_DATA03__FLEXSPI_A_DATA03      0x82    /* QSPI_DATA_3 */
+                       MX8MP_IOMUXC_NAND_DQS__FLEXSPI_A_DQS            0x82    /* QSPI_DQS */
+               >;
+       };
+
+       pinctrl_gpio4: gpio4grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI1_RXD1__GPIO4_IO03      0x40    /* GPIO4 */
+                       MX8MP_IOMUXC_SAI2_RXFS__GPIO4_IO21      0x106   /* GPIO5 */
+                       MX8MP_IOMUXC_SAI1_RXFS__GPIO4_IO00      0x106   /* GPIO6 */
+                       MX8MP_IOMUXC_SAI1_RXD0__GPIO4_IO02      0x106   /* GPIO7 */
+               >;
+       };
+
+       pinctrl_gpio5: gpio5grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SPDIF_EXT_CLK__GPIO5_IO05  0x106   /* GPIO1 */
+                       MX8MP_IOMUXC_I2C4_SDA__GPIO5_IO21       0x106   /* GPIO2 */
+                       MX8MP_IOMUXC_UART3_RXD__GPIO5_IO26      0x106   /* GPIO3 */
+               >;
+       };
+
+       pinctrl_hdmi: hdmigrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_HDMI_CEC__HDMIMIX_HDMI_CEC         0x106   /* HDMI_CEC */
+                       MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL     0x106   /* HDMI_SCL */
+                       MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA     0x106   /* HDMI_SDA */
+                       MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_HDMI_HPD         0x106   /* HDMI_HPD */
+               >;
+       };
+
+       pinctrl_i2c1_gpio: i2c1gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C1_SDA__GPIO5_IO15       0x1e2
+                       MX8MP_IOMUXC_I2C1_SCL__GPIO5_IO14       0x1e2
+               >;
+       };
+
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C1_SDA__I2C1_SDA         0x400001c2      /* I2C1_SDA_DNU */
+                       MX8MP_IOMUXC_I2C1_SCL__I2C1_SCL         0x400001c2      /* I2C1_SCL_DNU */
+               >;
+       };
+
+       pinctrl_i2c2_gpio: i2c2gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17       0x1e2
+                       MX8MP_IOMUXC_I2C2_SCL__GPIO5_IO16       0x1e2
+               >;
+       };
+
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA         0x400001c2      /* I2C2_SDA */
+                       MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL         0x400001c2      /* I2C2_SCL */
+               >;
+       };
+
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C3_SDA__GPIO5_IO19       0x1e2
+                       MX8MP_IOMUXC_I2C3_SCL__GPIO5_IO18       0x1e2
+               >;
+       };
+
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C3_SDA__I2C3_SDA         0x400001c2      /* I2C3_SDA */
+                       MX8MP_IOMUXC_I2C3_SCL__I2C3_SCL         0x400001c2      /* I2C3_SCL */
+               >;
+       };
+
+       pinctrl_i2c5_gpio: i2c5gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04       0x1e2
+                       MX8MP_IOMUXC_SAI5_RXD0__GPIO3_IO21      0x1e2
+               >;
+       };
+
+       pinctrl_i2c5: i2c5grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SPDIF_RX__I2C5_SDA         0x400001c2      /* I2C4_SDA */
+                       MX8MP_IOMUXC_SAI5_RXD0__I2C5_SCL        0x400001c2      /* I2C4_SCL */
+               >;
+       };
+
+       pinctrl_i2c6_gpio: i2c6gpiogrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI5_RXC__GPIO3_IO20       0x1e2
+                       MX8MP_IOMUXC_SAI5_RXFS__GPIO3_IO19      0x1e2
+               >;
+       };
+
+       pinctrl_i2c6: i2c6grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI5_RXC__I2C6_SDA         0x400001c2      /* I2C5_SDA */
+                       MX8MP_IOMUXC_SAI5_RXFS__I2C6_SCL        0x400001c2      /* I2C5_SCL */
+               >;
+       };
+
+       pinctrl_pcie0: pcie0grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_I2C4_SCL__PCIE_CLKREQ_B    0x10    /* PCIE1_nCLKREQ */
+                       MX8MP_IOMUXC_GPIO1_IO08__GPIO1_IO08     0x40    /* PCIE1_nPERST */
+               >;
+       };
+
+       pinctrl_pmic: pmicirqgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI1_TXD6__GPIO4_IO18      0x140
+               >;
+       };
+
+       pinctrl_pwm1: pwm1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO01__PWM1_OUT       0x106   /* PWM1 */
+               >;
+       };
+
+       pinctrl_pwm2: pwm2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO09__PWM2_OUT       0x106   /* PWM2 */
+               >;
+       };
+
+       pinctrl_pwm3: pwm3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SPDIF_TX__PWM3_OUT         0x106   /* PWM3 */
+               >;
+       };
+
+       pinctrl_pwm4: pwm4grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI3_MCLK__PWM4_OUT        0x106   /* PWM4 */
+               >;
+       };
+
+       pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19    0x40
+               >;
+       };
+
+       pinctrl_sai5: sai5grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI5_MCLK__AUDIOMIX_SAI5_MCLK      0x106   /* SAI1_MCLK */
+                       MX8MP_IOMUXC_SAI3_RXFS__AUDIOMIX_SAI5_RX_SYNC   0x106   /* SAI1_RX_SYNC */
+                       MX8MP_IOMUXC_SAI3_RXC__AUDIOMIX_SAI5_RX_BCLK    0x106   /* SAI1_RX_BCLK */
+                       MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI5_RX_DATA00  0x106   /* SAI1_RX_DATA */
+                       MX8MP_IOMUXC_SAI5_RXD1__AUDIOMIX_SAI5_TX_SYNC   0x106   /* SAI1_TX_SYNC */
+                       MX8MP_IOMUXC_SAI5_RXD2__AUDIOMIX_SAI5_TX_BCLK   0x106   /* SAI1_TX_BCLK */
+                       MX8MP_IOMUXC_SAI2_RXD0__AUDIOMIX_SAI5_TX_DATA00 0x106   /* SAI1_TX_DATA */
+               >;
+       };
+
+       pinctrl_ecspi1: spi1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK   0x82    /* SPI1_SCLK */
+                       MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI   0x82    /* SPI1_MOSI */
+                       MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO   0x82    /* SPI1_MISO */
+                       MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09     0x106   /* SPI1_CS */
+               >;
+       };
+
+       pinctrl_ecspi2: spi2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_ECSPI2_SCLK__ECSPI2_SCLK   0x82    /* SPI2_SCLK */
+                       MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI   0x82    /* SPI2_MOSI */
+                       MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO   0x82    /* SPI2_MISO */
+                       MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13     0x106     /* SPI2_CS */
+               >;
+       };
+
+       pinctrl_ecspi3: spi3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART1_RXD__ECSPI3_SCLK     0x82    /* SPI3_SCLK */
+                       MX8MP_IOMUXC_UART1_TXD__ECSPI3_MOSI     0x82    /* SPI3_MOSI */
+                       MX8MP_IOMUXC_UART2_RXD__ECSPI3_MISO     0x82    /* SPI3_MISO */
+                       MX8MP_IOMUXC_UART2_RXD__GPIO5_IO24      0x106     /* SPI3_CS */
+               >;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SAI3_TXC__UART2_DTE_RX     0x140   /* UART2_RXD */
+                       MX8MP_IOMUXC_SAI3_TXFS__UART2_DTE_TX    0x140   /* UART2_TXD */
+                       MX8MP_IOMUXC_SD1_DATA5__UART2_DTE_RTS   0x140   /* UART2_RTS */
+                       MX8MP_IOMUXC_SD1_DATA4__UART2_DTE_CTS   0x140   /* UART2_CTS */
+               >;
+       };
+
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD1_DATA6__UART3_DTE_RX    0x140   /* UART1_RXD */
+                       MX8MP_IOMUXC_SD1_DATA7__UART3_DTE_TX    0x140   /* UART1_TXD */
+                       MX8MP_IOMUXC_SD1_STROBE__UART3_DTE_RTS  0x140   /* UART1_RTS */
+                       MX8MP_IOMUXC_SD1_RESET_B__UART3_DTE_CTS 0x140   /* UART1_CTS */
+               >;
+       };
+
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_UART4_RXD__UART4_DCE_RX    0x140   /* UART3_RXD */
+                       MX8MP_IOMUXC_UART4_TXD__UART4_DCE_TX    0x140   /* UART3_TXD */
+               >;
+       };
+
+       pinctrl_usb0: usb0grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO12__USB1_OTG_PWR   0x106   /* USB1_PWR_EN */
+                       MX8MP_IOMUXC_GPIO1_IO13__USB1_OTG_OC    0x106   /* USB1_OC */
+                       MX8MP_IOMUXC_GPIO1_IO10__USB1_OTG_ID    0x106   /* USB1_ID */
+               >;
+       };
+
+       pinctrl_usb1: usb1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO14__USB2_OTG_PWR   0x106   /* USB2_PWR_EN */
+                       MX8MP_IOMUXC_GPIO1_IO15__USB2_OTG_OC    0x106   /* USB2_OC */
+                       MX8MP_IOMUXC_GPIO1_IO11__USB2_OTG_ID    0x106   /* USB2_ID */
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO07__USDHC1_WP      0x106   /* SDIO_WP */
+                       MX8MP_IOMUXC_GPIO1_IO06__USDHC1_CD_B    0x106   /* SDIO_CD */
+                       MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK        0x106   /* SDIO_CLK */
+                       MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD        0x106   /* SDIO_CLK */
+                       MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0    0x106   /* SDIO_DATA0 */
+                       MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1    0x106   /* SDIO_DATA1 */
+                       MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2    0x106   /* SDIO_DATA2 */
+                       MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3    0x106   /* SDIO_DATA3 */
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_CD_B__USDHC2_CD_B      0x40    /* SDCARD_CD */
+                       MX8MP_IOMUXC_SD2_WP__USDHC2_WP          0x40    /* SDCARD_WP */
+                       MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK        0x190   /* SDCARD_CLK */
+                       MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD        0x1d0   /* SDCARD_CMD */
+                       MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0    0x1d0   /* SDCARD_DATA0 */
+                       MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1    0x1d0   /* SDCARD_DATA1 */
+                       MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2    0x1d0   /* SDCARD_DATA2 */
+                       MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3    0x1d0   /* SDCARD_DATA3 */
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc0
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_CD_B__USDHC2_CD_B      0x40    /* SDCARD_CD */
+                       MX8MP_IOMUXC_SD2_WP__USDHC2_WP          0x40    /* SDCARD_WP */
+                       MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK        0x194   /* SDCARD_CLK */
+                       MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD        0x1d4   /* SDCARD_CMD */
+                       MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0    0x1d4   /* SDCARD_DATA0 */
+                       MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1    0x1d4   /* SDCARD_DATA1 */
+                       MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2    0x1d4   /* SDCARD_DATA2 */
+                       MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3    0x1d4   /* SDCARD_DATA3 */
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc0
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_SD2_CD_B__USDHC2_CD_B      0x40    /* SDCARD_CD */
+                       MX8MP_IOMUXC_SD2_WP__USDHC2_WP          0x40    /* SDCARD_WP */
+                       MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK        0x196   /* SDCARD_CLK */
+                       MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD        0x1d6   /* SDCARD_CMD */
+                       MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0    0x1d6   /* SDCARD_DATA0 */
+                       MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1    0x1d6   /* SDCARD_DATA1 */
+                       MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2    0x1d6   /* SDCARD_DATA2 */
+                       MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3    0x1d6   /* SDCARD_DATA3 */
+                       MX8MP_IOMUXC_GPIO1_IO04__USDHC2_VSELECT 0xc0
+               >;
+       };
+
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE  0x190
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5   0x1d0
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6   0x1d0
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7     0x1d0
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0  0x1d0
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1  0x1d0
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2  0x1d0
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3  0x1d0
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4    0x1d0
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK      0x190
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD      0x1d0
+               >;
+       };
+
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE  0x194
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5   0x1d4
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6   0x1d4
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7     0x1d4
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0  0x1d4
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1  0x1d4
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2  0x1d4
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3  0x1d4
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4    0x1d4
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK      0x194
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD      0x1d4
+               >;
+       };
+
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE  0x196
+                       MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5   0x1d2
+                       MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6   0x1d2
+                       MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7     0x1d2
+                       MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0  0x1d2
+                       MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1  0x1d2
+                       MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2  0x1d2
+                       MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3  0x1d2
+                       MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4    0x1d2
+                       MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK      0x196
+                       MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD      0x1d6
+               >;
+       };
+
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <
+                       MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B   0xe6
+               >;
+       };
+};
+
+&pcie { /* FPSC PCIE1 */
+       pinctrl-0 = <&pinctrl_pcie0>;
+       pinctrl-names = "default";
+};
+
+&pwm1 { /* FPSC PWM1 */
+       pinctrl-0 = <&pinctrl_pwm1>;
+       pinctrl-names = "default";
+};
+
+&pwm2 { /* FPSC PWM2 */
+       pinctrl-0 = <&pinctrl_pwm2>;
+       pinctrl-names = "default";
+};
+
+&pwm3 { /* FPSC PWM3 */
+       pinctrl-0 = <&pinctrl_pwm3>;
+       pinctrl-names = "default";
+};
+
+&pwm4 { /* FPSC PWM4 */
+       pinctrl-0 = <&pinctrl_pwm4>;
+       pinctrl-names = "default";
+};
+
+&sai5 { /* FPSC SAI1 */
+       pinctrl-0 = <&pinctrl_sai5>;
+       pinctrl-names = "default";
+};
+
+&uart2 { /* FPSC UART2 */
+       pinctrl-0 = <&pinctrl_uart2>;
+       pinctrl-names = "default";
+       fsl,dte-mode;
+};
+
+&uart3 { /* FPSC UART1 */
+       pinctrl-0 = <&pinctrl_uart3>;
+       pinctrl-names = "default";
+       fsl,dte-mode;
+};
+
+&uart4 { /* FPSC UART3 */
+       pinctrl-0 = <&pinctrl_uart4>;
+       pinctrl-names = "default";
+};
+
+&usb3_0 { /* FPSC USB1 */
+       pinctrl-0 = <&pinctrl_usb0>;
+       pinctrl-names = "default";
+};
+
+&usb3_1 { /* FPSC USB2 */
+       pinctrl-0 = <&pinctrl_usb1>;
+       pinctrl-names = "default";
+};
+
+&usdhc1 { /* FPSC SDIO */
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-names = "default";
+};
+
+&usdhc2 { /* FPSC SDCARD */
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       sd-uhs-sdr104;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       vqmmc-supply = <&ldo5>;
+};
+
+/* eMMC */
+&usdhc3 {
+       assigned-clocks = <&clk IMX8MP_CLK_USDHC3_ROOT>;
+       assigned-clock-rates = <400000000>;
+       bus-width = <8>;
+       non-removable;
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-0 = <&pinctrl_wdog>;
+       pinctrl-names = "default";
+       fsl,ext-reset-output;
+       status = "okay";
+};
diff --git a/src/arm64/freescale/imx8mp-toradex-smarc-dev.dts b/src/arm64/freescale/imx8mp-toradex-smarc-dev.dts
new file mode 100644 (file)
index 0000000..55b8c5c
--- /dev/null
@@ -0,0 +1,304 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (C) 2025 Toradex */
+
+/dts-v1/;
+
+#include <dt-bindings/pwm/pwm.h>
+
+#include "imx8mp-toradex-smarc.dtsi"
+
+/ {
+       model = "Toradex SMARC iMX8M Plus on Toradex SMARC Development Board";
+       compatible = "toradex,smarc-imx8mp-dev",
+                    "toradex,smarc-imx8mp",
+                    "fsl,imx8mp";
+
+       hdmi-connector {
+               compatible = "hdmi-connector";
+               label = "J64";
+               type = "a";
+
+               port {
+                       native_hdmi_connector_in: endpoint {
+                               remote-endpoint = <&hdmi_tx_out>;
+                       };
+               };
+       };
+
+       reg_carrier_1p8v: regulator-carrier-1p8v {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "On-carrier 1V8";
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,format = "i2s";
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,name = "tdx-smarc-wm8904";
+               simple-audio-card,routing =
+                       "Headphone Jack", "HPOUTL",
+                       "Headphone Jack", "HPOUTR",
+                       "IN2L", "Line In Jack",
+                       "IN2R", "Line In Jack",
+                       "Microphone Jack", "MICBIAS",
+                       "IN1L", "Microphone Jack";
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack",
+                       "Line", "Line In Jack";
+
+               codec_dai: simple-audio-card,codec {
+                       clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
+                       sound-dai = <&wm8904_1a>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai1>;
+               };
+       };
+};
+
+&aud2htx {
+       status = "okay";
+};
+
+/* SMARC SPI0 */
+&ecspi1 {
+       status = "okay";
+};
+
+/* SMARC GBE0 */
+&eqos {
+       status = "okay";
+};
+
+/* SMARC GBE1 */
+&fec {
+       status = "okay";
+};
+
+/* SMARC CAN1 */
+&flexcan1 {
+       status = "okay";
+};
+
+/* SMARC CAN0 */
+&flexcan2 {
+       status = "okay";
+};
+
+&gpio1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio7>,
+                   <&pinctrl_gpio8>,
+                   <&pinctrl_gpio9>,
+                   <&pinctrl_gpio10>,
+                   <&pinctrl_gpio11>,
+                   <&pinctrl_gpio12>,
+                   <&pinctrl_gpio13>;
+};
+
+&gpio3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lvds_dsi_sel>;
+};
+
+&gpio4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio4>, <&pinctrl_gpio6>;
+};
+
+&hdmi_pvi {
+       status = "okay";
+};
+
+/* SMARC HDMI */
+&hdmi_tx {
+       status = "okay";
+
+       ports {
+               port@1 {
+                       hdmi_tx_out: endpoint {
+                               remote-endpoint = <&native_hdmi_connector_in>;
+                       };
+               };
+       };
+};
+
+&hdmi_tx_phy {
+       status = "okay";
+};
+
+/* SMARC I2C_LCD */
+&i2c2 {
+       status = "okay";
+
+       i2c-mux@70 {
+               compatible = "nxp,pca9543";
+               reg = <0x70>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* I2C on DSI Connector Pins 4/6 */
+               i2c_dsi_0: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               /* I2C on DSI Connector Pins 52/54 */
+               i2c_dsi_1: i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+       };
+};
+
+/* SMARC I2C_CAM0 */
+&i2c3 {
+       status = "okay";
+};
+
+/* SMARC I2C_GP */
+&i2c4 {
+       /* Audio Codec */
+       wm8904_1a: audio-codec@1a {
+               compatible = "wlf,wm8904";
+               reg = <0x1a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_sai1>, <&pinctrl_sai1_mclk>;
+               #sound-dai-cells = <0>;
+               clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI1_MCLK1>;
+               clock-names = "mclk";
+               AVDD-supply = <&reg_carrier_1p8v>;
+               CPVDD-supply = <&reg_carrier_1p8v>;
+               DBVDD-supply = <&reg_carrier_1p8v>;
+               DCVDD-supply = <&reg_carrier_1p8v>;
+               MICVDD-supply = <&reg_carrier_1p8v>;
+       };
+
+       /* On-Carrier Temperature Sensor */
+       temperature-sensor@4f {
+               compatible = "ti,tmp1075";
+               reg = <0x4f>;
+       };
+
+       /* On-Carrier EEPROM */
+       eeprom@57 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x57>;
+               pagesize = <16>;
+       };
+};
+
+/* SMARC I2C_CAM1 */
+&i2c5 {
+       status = "okay";
+};
+
+/* SMARC I2C_PM */
+&i2c6 {
+       clock-frequency = <100000>;
+       status = "okay";
+
+       /* Fan controller */
+       fan_controller: fan@18 {
+               compatible = "ti,amc6821";
+               reg = <0x18>;
+               #pwm-cells = <2>;
+
+               fan {
+                       pwms = <&fan_controller 40000 PWM_POLARITY_INVERTED>;
+               };
+       };
+
+       /* Current measurement into module VDD */
+       hwmon@40 {
+               compatible = "ti,ina226";
+               reg = <0x40>;
+               shunt-resistor = <5000>;
+       };
+};
+
+&lcdif3 {
+       status = "okay";
+};
+
+/* SMARC PCIE_A, M2 Key B */
+&pcie {
+       status = "okay";
+};
+
+&pcie_phy {
+       status = "okay";
+};
+
+/* SMARC LCD1_BKLT_PWM */
+&pwm1 {
+       status = "okay";
+};
+
+/* SMARC LCD0_BKLT_PWM */
+&pwm2 {
+       status = "okay";
+};
+
+/* SMARC I2S0 */
+&sai1 {
+       assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
+       assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <24576000>;
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+/* SMARC HDMI Audio */
+&sound_hdmi {
+       status = "okay";
+};
+
+/* SMARC SER0, RS485. Optional M.2 KEY E */
+&uart1 {
+       linux,rs485-enabled-at-boot-time;
+       rs485-rts-active-low;
+       rs485-rx-during-tx;
+       status = "okay";
+};
+
+/* SMARC SER2 */
+&uart2 {
+       status = "okay";
+};
+
+/* SMARC SER1, used as the Linux Console */
+&uart4 {
+       status = "okay";
+};
+
+/* SMARC USB0 */
+&usb3_0 {
+       status = "okay";
+};
+
+/* SMARC USB1..4 */
+&usb3_1 {
+       status = "okay";
+};
+
+&usb3_phy0 {
+       status = "okay";
+};
+
+&usb3_phy1 {
+       status = "okay";
+};
+
+/* SMARC SDIO */
+&usdhc2 {
+       status = "okay";
+};
diff --git a/src/arm64/freescale/imx8mp-toradex-smarc.dtsi b/src/arm64/freescale/imx8mp-toradex-smarc.dtsi
new file mode 100644 (file)
index 0000000..22f6daa
--- /dev/null
@@ -0,0 +1,1314 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/* Copyright (C) 2025 Toradex */
+
+#include <dt-bindings/phy/phy-imx8-pcie.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include "imx8mp.dtsi"
+
+/ {
+       aliases {
+               can0 = &flexcan2;
+               can1 = &flexcan1;
+               ethernet0 = &eqos;
+               ethernet1 = &fec;
+               mmc0 = &usdhc3;
+               mmc1 = &usdhc2;
+               mmc2 = &usdhc1;
+               rtc0 = &rtc_i2c;
+               rtc1 = &snvs_rtc;
+               serial0 = &uart1;
+               serial1 = &uart4;
+               serial2 = &uart2;
+               serial3 = &uart3;
+       };
+
+       chosen {
+               stdout-path = &uart4;
+       };
+
+       connector {
+               compatible = "gpio-usb-b-connector", "usb-b-connector";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usb0_id>;
+               id-gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>;
+               label = "USB0";
+               self-powered;
+               type = "micro";
+               vbus-supply = <&reg_usb0_vbus>;
+
+               port {
+                       usb_dr_connector: endpoint {
+                               remote-endpoint = <&usb3_0_dwc>;
+                       };
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_sleep>;
+
+               smarc_key_sleep: key-sleep {
+                       gpios = <&gpio3 1 GPIO_ACTIVE_LOW>;
+                       label = "SMARC_SLEEP#";
+                       wakeup-source;
+                       linux,code = <KEY_SLEEP>;
+               };
+
+               smarc_switch_lid: switch-lid {
+                       gpios = <&som_ec_gpio_expander 2 GPIO_ACTIVE_LOW>;
+                       label = "SMARC_LID#";
+                       linux,code = <SW_LID>;
+                       linux,input-type = <EV_SW>;
+               };
+       };
+
+       reg_usb0_vbus: regulator-usb0-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usb0_en_oc>;
+               gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-name = "USB0_EN_OC#";
+       };
+
+       reg_usb1_vbus: regulator-usb1-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usb1_en_oc>;
+               gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-name = "USB2_EN_OC#";
+       };
+
+       reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usdhc2_pwr_en>;
+               gpios = <&gpio2 19 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               off-on-delay-us = <100000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "3V3_SD";
+               startup-delay-us = <20000>;
+       };
+
+       reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
+               compatible = "regulator-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usdhc2_vsel>;
+               gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <1800000>;
+               states = <1800000 0x1>,
+                        <3300000 0x0>;
+               regulator-name = "PMIC_USDHC_VSELECT";
+               vin-supply = <&reg_sd_3v3_1v8>;
+       };
+
+       reg_wifi_en: regulator-wifi-en {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_wifi_pwr_en>;
+               gpios = <&gpio3 14 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "CTRL_EN_WIFI";
+               startup-delay-us = <2000>;
+       };
+
+       reserved-memory {
+               linux,cma {
+                       size = <0 0x20000000>;
+                       alloc-ranges = <0 0x40000000 0 0x80000000>;
+               };
+       };
+
+       sound_hdmi: sound-hdmi {
+               compatible = "fsl,imx-audio-hdmi";
+               model = "audio-hdmi";
+               audio-cpu = <&aud2htx>;
+               hdmi-out;
+               status = "disabled";
+       };
+};
+
+&A53_0 {
+       cpu-supply = <&reg_vdd_arm>;
+};
+
+&A53_1 {
+       cpu-supply = <&reg_vdd_arm>;
+};
+
+&A53_2 {
+       cpu-supply = <&reg_vdd_arm>;
+};
+
+&A53_3 {
+       cpu-supply = <&reg_vdd_arm>;
+};
+
+/* SMARC SPI0 */
+&ecspi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1>;
+       cs-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>, <&gpio4 28 GPIO_ACTIVE_LOW>;
+};
+
+/* SMARC SPI1 */
+&ecspi2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi2>, <&pinctrl_tpm_cs>;
+       cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>,
+                  <&gpio4 3 GPIO_ACTIVE_LOW>,
+                  <&gpio3 6 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       tpm@2 {
+               compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+               reg = <2>;
+               spi-max-frequency = <18500000>;
+       };
+};
+
+/* SMARC GBE0 */
+&eqos {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_eqos>,
+                   <&pinctrl_eth_mdio>,
+                   <&pinctrl_eqos_1588_event>;
+       phy-handle = <&eqos_phy>;
+       phy-mode = "rgmii-id";
+       snps,force_thresh_dma_mode;
+       snps,mtl-rx-config = <&mtl_rx_setup>;
+       snps,mtl-tx-config = <&mtl_tx_setup>;
+
+       mdio: mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+       };
+
+       mtl_rx_setup: rx-queues-config {
+               snps,rx-queues-to-use = <5>;
+
+               queue0 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0x1>;
+                       snps,map-to-dma-channel = <0>;
+               };
+
+               queue1 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0x2>;
+                       snps,map-to-dma-channel = <1>;
+               };
+
+               queue2 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0x4>;
+                       snps,map-to-dma-channel = <2>;
+               };
+
+               queue3 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0x8>;
+                       snps,map-to-dma-channel = <3>;
+               };
+
+               queue4 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0xf0>;
+                       snps,map-to-dma-channel = <4>;
+               };
+       };
+
+       mtl_tx_setup: tx-queues-config {
+               snps,tx-queues-to-use = <5>;
+
+               queue0 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0x1>;
+               };
+
+               queue1 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0x2>;
+               };
+
+               queue2 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0x4>;
+               };
+
+               queue3 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0x8>;
+               };
+
+               queue4 {
+                       snps,dcb-algorithm;
+                       snps,priority = <0xf0>;
+               };
+       };
+};
+
+/* SMARC GBE1 */
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec>, <&pinctrl_fec_1588_event>;
+       phy-handle = <&fec_phy>;
+       phy-mode = "rgmii-id";
+       fsl,magic-packet;
+};
+
+/* SMARC CAN1 */
+&flexcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+};
+
+/* SMARC CAN0 */
+&flexcan2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+};
+
+&gpio1 {
+       gpio-line-names = "SMARC_GPIO7", /* 0 */
+                         "SMARC_GPIO8",
+                         "",
+                         "PMIC_INT#",
+                         "PMIC_USDHC_VSELECT",
+                         "SMARC_GPIO9",
+                         "SMARC_GPIO10",
+                         "SMARC_GPIO11",
+                         "SMARC_GPIO12",
+                         "",
+                         "SMARC_GPIO5", /* 10 */
+                         "",
+                         "SMARC_USB0_EN_OC#",
+                         "SMARC_GPIO13",
+                         "SMARC_USB2_EN_OC#";
+};
+
+&gpio2 {
+       gpio-line-names = "", /* 0 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "", /* 10 */
+                         "",
+                         "SMARC_SDIO_CD#",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SMARC_SDIO_PWR_EN",
+                         "SMARC_SDIO_WP"; /* 20 */
+};
+
+&gpio3 {
+       gpio-line-names = "ETH_0_INT#", /* 0 */
+                         "SLEEP#",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "TPM_CS#",
+                         "LVDS_DSI_SEL",
+                         "MCU_INT#",
+                         "GPIO_EX_INT#",
+                         "", /* 10 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SMARC_SMB_ALERT#",
+                         "",
+                         "",
+                         "",
+                         "SMARC_I2C_PM_DAT", /* 20 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SMARC_I2C_PM_CK";
+
+       lvds_dsi_mux_hog: lvds-dsi-mux-hog {
+               gpio-hog;
+               gpios = <7 GPIO_ACTIVE_HIGH>;
+               line-name = "LVDS_DSI_SEL";
+               /* LVDS_DSI_SEL as DSI */
+               output-low;
+       };
+};
+
+&gpio4 {
+       gpio-line-names = "SMARC_PCIE_WAKE#", /* 0 */
+                         "",
+                         "",
+                         "SMARC_SPI1_CS1#",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "", /* 10 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SMARC_GPIO4",
+                         "SMARC_PCIE_A_RST#",
+                         "", /* 20 */
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SMARC_SPI0_CS1#",
+                         "SMARC_GPIO6";
+};
+
+&gpio5 {
+       gpio-line-names = "", /* 0 */
+                         "",
+                         "SMARC_USB0_OTG_ID",
+                         "SMARC_I2C_CAM1_CK",
+                         "SMARC_I2C_CAM1_DAT",
+                         "",
+                         "",
+                         "",
+                         "",
+                         "SMARC_SPI0_CS0#",
+                         "", /* 10 */
+                         "",
+                         "",
+                         "SMARC_SPI1_CS0#",
+                         "CTRL_I2C_SCL",
+                         "CTRL_I2C_SDA",
+                         "SMARC_I2C_LCD_CK",
+                         "SMARC_I2C_LCD_DAT",
+                         "SMARC_I2C_CAM0_CK",
+                         "SMARC_I2C_CAM0_DAT",
+                         "SMARC_I2C_GP_CK", /* 20 */
+                         "SMARC_I2C_GP_DAT";
+};
+
+/* SMARC HDMI */
+&hdmi_tx {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hdmi>;
+};
+
+/* On-module I2C */
+&i2c1 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       clock-frequency = <400000>;
+       scl-gpios = <&gpio5 14 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 15 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       single-master;
+       status = "okay";
+
+       som_gpio_expander: gpio@21 {
+               compatible = "nxp,pcal6408";
+               reg = <0x21>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pcal6408>;
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               interrupt-parent = <&gpio3>;
+               interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               gpio-line-names =
+                       "SMARC_GPIO0",
+                       "SMARC_GPIO1",
+                       "SMARC_GPIO2",
+                       "SMARC_GPIO3",
+                       "SMARC_LCD0_VDD_EN",
+                       "SMARC_LCD0_BKLT_EN",
+                       "SMARC_LCD1_VDD_EN",
+                       "SMARC_LCD1_BKLT_EN";
+       };
+
+       pca9450: pmic@25 {
+               compatible = "nxp,pca9450c";
+               reg = <0x25>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pmic>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+
+               regulators {
+                       BUCK1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-min-microvolt = <805000>;
+                               regulator-name = "+VDD_SOC (PMIC BUCK1)";
+                               regulator-ramp-delay = <3125>;
+                       };
+
+                       reg_vdd_arm: BUCK2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-min-microvolt = <805000>;
+                               regulator-name = "+VDD_ARM (PMIC BUCK2)";
+                               regulator-ramp-delay = <3125>;
+                               nxp,dvs-run-voltage = <950000>;
+                               nxp,dvs-standby-voltage = <850000>;
+                       };
+
+                       reg_3v3: BUCK4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-name = "+V3.3 (PMIC BUCK4)";
+                       };
+
+                       reg_1v8: BUCK5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "+V1.8 (PMIC BUCK5)";
+                       };
+
+                       BUCK6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1155000>;
+                               regulator-min-microvolt = <1045000>;
+                               regulator-name = "+VDD_DDR (PMIC BUCK6)";
+                       };
+
+                       LDO1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1950000>;
+                               regulator-min-microvolt = <1710000>;
+                               regulator-name = "+V1.8_SNVS (PMIC LDO1)";
+                       };
+
+                       LDO3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "+V1.8A (PMIC LDO3)";
+                       };
+
+                       LDO4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-name = "+V3.3_ADC (PMIC LDO4)";
+                       };
+
+                       reg_sd_3v3_1v8: LDO5 {
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "+V3.3_1.8_SD (PMIC LDO5)";
+                       };
+               };
+       };
+
+       embedded-controller@28 {
+               compatible = "toradex,smarc-imx8mp-ec", "toradex,smarc-ec";
+               reg = <0x28>;
+       };
+
+       som_ec_gpio_expander: gpio@29 {
+               compatible = "toradex,ecgpiol16", "nxp,pcal6416";
+               reg = <0x29>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_mcu_int>;
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               interrupt-parent = <&gpio3>;
+               interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               gpio-line-names =
+                       "SMARC_CHARGER_PRSNT#",
+                       "SMARC_CHARGING#",
+                       "SMARC_LID#",
+                       "SMARC_BATLOW#";
+       };
+
+       rtc_i2c: rtc@32 {
+               compatible = "epson,rx8130";
+               reg = <0x32>;
+       };
+
+       temperature-sensor@48 {
+               compatible = "ti,tmp1075";
+               reg = <0x48>;
+       };
+
+       eeprom@50 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x50>;
+               pagesize = <16>;
+       };
+};
+
+/* SMARC I2C_LCD */
+&i2c2 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c2>;
+       pinctrl-1 = <&pinctrl_i2c2_gpio>;
+       clock-frequency = <100000>;
+       scl-gpios = <&gpio5 16 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       single-master;
+};
+
+/* SMARC I2C_CAM0 */
+&i2c3 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c3>;
+       pinctrl-1 = <&pinctrl_i2c3_gpio>;
+       clock-frequency = <400000>;
+       scl-gpios = <&gpio5 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 19 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       single-master;
+};
+
+/* SMARC I2C_GP */
+&i2c4 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c4>;
+       pinctrl-1 = <&pinctrl_i2c4_gpio>;
+       clock-frequency = <400000>;
+       scl-gpios = <&gpio5 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 21 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       single-master;
+       status = "okay";
+
+       eeprom@50 {
+               compatible = "st,24c32", "atmel,24c32";
+               reg = <0x50>;
+               pagesize = <32>;
+       };
+};
+
+/* SMARC I2C_CAM1 */
+&i2c5 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c5>;
+       pinctrl-1 = <&pinctrl_i2c5_gpio>;
+       clock-frequency = <400000>;
+       scl-gpios = <&gpio5 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio5 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       single-master;
+};
+
+/* SMARC I2C_PM */
+&i2c6 {
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c6>;
+       pinctrl-1 = <&pinctrl_i2c6_gpio>;
+       clock-frequency = <400000>;
+       scl-gpios = <&gpio3 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&gpio3 20 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       single-master;
+};
+
+&mdio {
+       eqos_phy: ethernet-phy@1 {
+               reg = <1>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+               ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+       };
+
+       fec_phy: ethernet-phy@2 {
+               reg = <2>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+               ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+       };
+};
+
+/* SMARC PCIE_A */
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie>;
+       reset-gpios = <&gpio4 19 GPIO_ACTIVE_LOW>;
+};
+
+&pcie_phy {
+       clocks = <&hsio_blk_ctrl>;
+       clock-names = "ref";
+       fsl,clkreq-unsupported;
+       fsl,refclk-pad-mode = <IMX8_PCIE_REFCLK_PAD_OUTPUT>;
+};
+
+/* SMARC LCD1_BKLT_PWM */
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lcd1_bklt_pwm1>;
+};
+
+/* SMARC LCD0_BKLT_PWM */
+&pwm2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lcd0_bklt_pwm2>;
+};
+
+/* SMARC GPIO5 as PWM */
+&pwm3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio5_pwm>;
+};
+
+&snvs_pwrkey {
+       status = "okay";
+};
+
+/* SMARC SER0 */
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       uart-has-rtscts;
+};
+
+/* SMARC SER2 */
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       uart-has-rtscts;
+};
+
+/* On-module Bluetooth, optional SMARC SER3 */
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_bt_uart>;
+       uart-has-rtscts;
+       status = "okay";
+
+       som_bt: bluetooth {
+               compatible = "mrvl,88w8997";
+               max-speed = <921600>;
+       };
+};
+
+/* SMARC SER1, used as the Linux Console */
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart4>;
+};
+
+/* SMARC USB0 */
+&usb3_0 {
+       fsl,disable-port-power-control;
+};
+
+/* SMARC USB1..4 */
+&usb3_1 {
+       fsl,disable-port-power-control;
+};
+
+&usb3_phy1 {
+       vbus-supply = <&reg_usb1_vbus>;
+};
+
+&usb_dwc3_0 {
+       adp-disable;
+       dr_mode = "otg";
+       hnp-disable;
+       maximum-speed = "high-speed";
+       srp-disable;
+       usb-role-switch;
+
+       port {
+               usb3_0_dwc: endpoint {
+                       remote-endpoint = <&usb_dr_connector>;
+               };
+       };
+};
+
+&usb_dwc3_1 {
+       dr_mode = "host";
+};
+
+/* On-module Wi-Fi */
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       keep-power-in-suspend;
+       non-removable;
+       vmmc-supply = <&reg_wifi_en>;
+       status = "okay";
+};
+
+/* SMARC SDIO */
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc2>,
+                   <&pinctrl_usdhc2_cd>,
+                   <&pinctrl_usdhc2_wp>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>,
+                   <&pinctrl_usdhc2_cd>,
+                   <&pinctrl_usdhc2_wp>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>,
+                   <&pinctrl_usdhc2_cd>,
+                   <&pinctrl_usdhc2_wp>;
+       pinctrl-3 = <&pinctrl_usdhc2_sleep>,
+                   <&pinctrl_usdhc2_cd_sleep>,
+                   <&pinctrl_usdhc2_wp>;
+       assigned-clocks = <&clk IMX8MP_CLK_USDHC2>;
+       assigned-clock-rates = <400000000>;
+       cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       vqmmc-supply = <&reg_usdhc2_vqmmc>;
+       wp-gpios = <&gpio2 20 GPIO_ACTIVE_HIGH>;
+};
+
+/* On-module eMMC */
+&usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       assigned-clocks = <&clk IMX8MP_CLK_USDHC3_ROOT>;
+       assigned-clock-rates = <400000000>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+};
+
+&wdog1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wdog>;
+       fsl,ext-reset-output;
+       status = "okay";
+};
+
+&iomuxc {
+       /* On-module Bluetooth */
+       pinctrl_bt_uart: btuartgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD1_DATA6__UART3_DCE_TX        0x1c4>, /* WiFi_UART_TXD */
+                          <MX8MP_IOMUXC_SD1_DATA7__UART3_DCE_RX        0x1c4>, /* WiFi_UART_RXD */
+                          <MX8MP_IOMUXC_SD1_STROBE__UART3_DCE_CTS      0x1c4>, /* WiFi_UART_RTS */
+                          <MX8MP_IOMUXC_SD1_RESET_B__UART3_DCE_RTS     0x1c4>; /* WiFi_UART_CTS */
+       };
+
+       /* SMARC CAM_MCK */
+       pinctrl_csi_mclk: csimclkgrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO15__CCM_CLKO2  0x16>; /* SMARC S6 - CAM_MCK  */
+       };
+
+       /* SMARC SPI0 */
+       pinctrl_ecspi1: ecspi1grp {
+               fsl,pins = <MX8MP_IOMUXC_ECSPI1_MISO__ECSPI1_MISO       0x1c4>, /* SMARC P45 - SPI0_DIN */
+                          <MX8MP_IOMUXC_ECSPI1_MOSI__ECSPI1_MOSI       0x4>,   /* SMARC P46 - SPI0_DO */
+                          <MX8MP_IOMUXC_ECSPI1_SCLK__ECSPI1_SCLK       0x4>,   /* SMARC P44 - SPI0_CK */
+                          <MX8MP_IOMUXC_ECSPI1_SS0__GPIO5_IO09         0x1c4>, /* SMARC P43 - SPI0_CS0# */
+                          <MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28          0x1c4>; /* SMARC P31 - SPI0_CS1# */
+       };
+
+       /* SMARC SPI1 */
+       pinctrl_ecspi2: ecspi2grp {
+               fsl,pins = <MX8MP_IOMUXC_ECSPI2_MISO__ECSPI2_MISO       0x1c4>, /* SMARC P56 - SPI1_DIN */
+                          <MX8MP_IOMUXC_ECSPI2_MOSI__ECSPI2_MOSI       0x4>,   /* SMARC P57 - SPI1_DO */
+                          <MX8MP_IOMUXC_ECSPI2_SCLK__ECSPI2_SCLK       0x4>,   /* SMARC P58 - SPI1_CK */
+                          <MX8MP_IOMUXC_ECSPI2_SS0__GPIO5_IO13         0x1c4>, /* SMARC P54 - SPI1_CS0# */
+                          <MX8MP_IOMUXC_SAI1_RXD1__GPIO4_IO03          0x1c4>; /* SMARC P55 - SPI1_CS1# */
+       };
+
+       /* ETH_0 RGMII (On-module PHY) */
+       pinctrl_eqos: eqosgrp {
+               fsl,pins = <MX8MP_IOMUXC_ENET_RD0__ENET_QOS_RGMII_RD0                   0x90>, /* ETH0_RGMII_RXD0 */
+                          <MX8MP_IOMUXC_ENET_RD1__ENET_QOS_RGMII_RD1                   0x90>, /* ETH0_RGMII_RXD1 */
+                          <MX8MP_IOMUXC_ENET_RD2__ENET_QOS_RGMII_RD2                   0x90>, /* ETH0_RGMII_RXD2 */
+                          <MX8MP_IOMUXC_ENET_RD3__ENET_QOS_RGMII_RD3                   0x90>, /* ETH0_RGMII_RXD3 */
+                          <MX8MP_IOMUXC_ENET_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK   0x90>, /* ETH0_RGMII_RXC */
+                          <MX8MP_IOMUXC_ENET_RX_CTL__ENET_QOS_RGMII_RX_CTL             0x90>, /* ETH0_RGMII_RX_CTL */
+                          <MX8MP_IOMUXC_ENET_TD0__ENET_QOS_RGMII_TD0                   0x16>, /* ETH0_RGMII_TXD0 */
+                          <MX8MP_IOMUXC_ENET_TD1__ENET_QOS_RGMII_TD1                   0x16>, /* ETH0_RGMII_TXD1 */
+                          <MX8MP_IOMUXC_ENET_TD2__ENET_QOS_RGMII_TD2                   0x16>, /* ETH0_RGMII_TXD2 */
+                          <MX8MP_IOMUXC_ENET_TD3__ENET_QOS_RGMII_TD3                   0x16>, /* ETH0_RGMII_TXD3 */
+                          <MX8MP_IOMUXC_ENET_TX_CTL__ENET_QOS_RGMII_TX_CTL             0x16>, /* ETH0_RGMII_TX_CTL */
+                          <MX8MP_IOMUXC_ENET_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK   0x16>; /* ETH0_RGMII_TXC */
+       };
+
+       /* SMARC GBE0_SDP */
+       pinctrl_eqos_1588_event: eqos1588eventgrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO09__ENET_QOS_1588_EVENT0_OUT   0x4>; /* SMARC P6 - GBE0_SDP */
+       };
+
+       /* ETH_0_MDIO and ETH_0_INT# shared between ETH_PHY0 and ETH_PHY1 */
+       pinctrl_eth_mdio: ethmdiogrp {
+               fsl,pins = <MX8MP_IOMUXC_ENET_MDC__ENET_QOS_MDC         0x2>,  /* ETH_0_MDC */
+                          <MX8MP_IOMUXC_ENET_MDIO__ENET_QOS_MDIO       0x2>,  /* ETH_0_MDIO */
+                          <MX8MP_IOMUXC_NAND_ALE__GPIO3_IO00           0x80>; /* ETH_0_INT# */
+       };
+
+       /* ETH_1 RGMII (On-module PHY) */
+       pinctrl_fec: fecgrp {
+               fsl,pins = <MX8MP_IOMUXC_SAI1_RXD4__ENET1_RGMII_RD0     0x90>, /* ETH1_RGMII_RXD0 */
+                          <MX8MP_IOMUXC_SAI1_RXD5__ENET1_RGMII_RD1     0x90>, /* ETH1_RGMII_RXD1 */
+                          <MX8MP_IOMUXC_SAI1_RXD6__ENET1_RGMII_RD2     0x90>, /* ETH1_RGMII_RXD2 */
+                          <MX8MP_IOMUXC_SAI1_RXD7__ENET1_RGMII_RD3     0x90>, /* ETH1_RGMII_RXD3 */
+                          <MX8MP_IOMUXC_SAI1_TXC__ENET1_RGMII_RXC      0x90>, /* ETH1_RGMII_RXC */
+                          <MX8MP_IOMUXC_SAI1_TXFS__ENET1_RGMII_RX_CTL  0x90>, /* ETH1_RGMII_RX_CTL */
+                          <MX8MP_IOMUXC_SAI1_TXD0__ENET1_RGMII_TD0     0x16>, /* ETH1_RGMII_TXD0 */
+                          <MX8MP_IOMUXC_SAI1_TXD1__ENET1_RGMII_TD1     0x16>, /* ETH1_RGMII_TXD1 */
+                          <MX8MP_IOMUXC_SAI1_TXD2__ENET1_RGMII_TD2     0x16>, /* ETH1_RGMII_TXD2 */
+                          <MX8MP_IOMUXC_SAI1_TXD3__ENET1_RGMII_TD3     0x16>, /* ETH1_RGMII_TXD3 */
+                          <MX8MP_IOMUXC_SAI1_TXD4__ENET1_RGMII_TX_CTL  0x16>, /* ETH1_RGMII_TX_CTL */
+                          <MX8MP_IOMUXC_SAI1_TXD5__ENET1_RGMII_TXC     0x16>; /* ETH1_RGMII_TXC */
+       };
+
+       /* SMARC GBE1_SDP */
+       pinctrl_fec_1588_event: fec1588eventgrp {
+               fsl,pins = <MX8MP_IOMUXC_SAI1_RXC__ENET1_1588_EVENT0_OUT        0x4>; /* SMARC P5 - GBE1_SDP */
+       };
+
+       /* SMARC CAN1 */
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <MX8MP_IOMUXC_SAI2_TXC__CAN1_RX      0x154>, /* SMARC P146 - CAN1_RX */
+                          <MX8MP_IOMUXC_SAI2_RXC__CAN1_TX      0x154>; /* SMARC P145 - CAN1_TX */
+       };
+
+       /* SMARC CAN0 */
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <MX8MP_IOMUXC_SAI2_MCLK__CAN2_RX     0x154>, /* SMARC P144 - CAN0_RX */
+                          <MX8MP_IOMUXC_SAI2_TXD0__CAN2_TX     0x154>; /* SMARC P143 - CAN0_TX */
+       };
+
+       /* SMARC GPIO4 */
+       pinctrl_gpio4: gpio4grp {
+               fsl,pins = <MX8MP_IOMUXC_SAI1_TXD6__GPIO4_IO18  0x144>; /* SMARC P112 - GPIO4 */
+       };
+
+       /* SMARC GPIO5 */
+       pinctrl_gpio5: gpio5grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO10__GPIO1_IO10 0x144>; /* SMARC P113 - GPIO5 */
+       };
+
+       /* SMARC GPIO5 as PWM */
+       pinctrl_gpio5_pwm: gpio5pwmgrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO10__PWM3_OUT   0x12>; /* SMARC P113 - PWM_OUT */
+       };
+
+       /* SMARC GPIO6 */
+       pinctrl_gpio6: gpio6grp {
+               fsl,pins = <MX8MP_IOMUXC_SAI3_RXC__GPIO4_IO29   0x144>; /* SMARC P114 - GPIO6 */
+       };
+
+       /* SMARC GPIO7 */
+       pinctrl_gpio7: gpio7grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO00__GPIO1_IO00 0x144>; /* SMARC P115 - GPIO7 */
+       };
+
+       /* SMARC GPIO8 */
+       pinctrl_gpio8: gpio8grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO01__GPIO1_IO01 0x144>; /* SMARC P116 - GPIO8 */
+       };
+
+       /* SMARC GPIO9 */
+       pinctrl_gpio9: gpio9grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO05__GPIO1_IO05 0x144>; /* SMARC P117 - GPIO9 */
+       };
+
+       /* SMARC GPIO10 */
+       pinctrl_gpio10: gpio10grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO06__GPIO1_IO06 0x144>; /* SMARC P118 - GPIO10 */
+       };
+
+       /* SMARC GPIO11 */
+       pinctrl_gpio11: gpio11grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO07__GPIO1_IO07 0x144>; /* SMARC P119 - GPIO11 */
+       };
+
+       /* SMARC GPIO12 */
+       pinctrl_gpio12: gpio12grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO08__GPIO1_IO08 0x144>; /* SMARC S142 - GPIO12 */
+       };
+
+       /* SMARC GPIO13 */
+       pinctrl_gpio13: gpio13grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO13__GPIO1_IO13 0x144>; /* SMARC S123 - GPIO13 */
+       };
+
+       /* SMARC HDMI */
+       pinctrl_hdmi: hdmigrp {
+               fsl,pins = <MX8MP_IOMUXC_HDMI_DDC_SCL__HDMIMIX_HDMI_SCL 0x400001c6>, /* SMARC P105 - HDMI_CTRL_CK */
+                          <MX8MP_IOMUXC_HDMI_DDC_SDA__HDMIMIX_HDMI_SDA 0x400001c6>, /* SMARC P106 - HDMI_CTRL_DAT */
+                          <MX8MP_IOMUXC_HDMI_HPD__HDMIMIX_HDMI_HPD     0x180>;      /* SMARC P104 - HDMI_HPD */
+       };
+
+       /* On-module I2C */
+       pinctrl_i2c1: i2c1grp {
+               fsl,pins = <MX8MP_IOMUXC_I2C1_SCL__I2C1_SCL     0x400001c6>, /* CTRL_I2C_SCL */
+                          <MX8MP_IOMUXC_I2C1_SDA__I2C1_SDA     0x400001c6>; /* CTRL_I2C_SDA */
+       };
+
+       /* On-module I2C as GPIOs */
+       pinctrl_i2c1_gpio: i2c1gpiogrp {
+               fsl,pins = <MX8MP_IOMUXC_I2C1_SCL__GPIO5_IO14   0x400001c6>, /* CTRL_I2C_SCL */
+                          <MX8MP_IOMUXC_I2C1_SDA__GPIO5_IO15   0x400001c6>; /* CTRL_I2C_SDA */
+       };
+
+       /* SMARC I2C_LCD */
+       pinctrl_i2c2: i2c2grp {
+               fsl,pins = <MX8MP_IOMUXC_I2C2_SCL__I2C2_SCL     0x400001c6>, /* SMARC S139 - I2C_LCD_CK */
+                          <MX8MP_IOMUXC_I2C2_SDA__I2C2_SDA     0x400001c6>; /* SMARC S140 - I2C_LCD_DAT */
+       };
+
+       /* SMARC I2C_LCD as GPIOs */
+       pinctrl_i2c2_gpio: i2c2gpiogrp {
+               fsl,pins = <MX8MP_IOMUXC_I2C2_SCL__GPIO5_IO16   0x400001c6>, /* SMARC S139 - I2C_LCD_CK */
+                          <MX8MP_IOMUXC_I2C2_SDA__GPIO5_IO17   0x400001c6>; /* SMARC S140 - I2C_LCD_DAT */
+       };
+
+       /* SMARC I2C_CAM0 */
+       pinctrl_i2c3: i2c3grp {
+               fsl,pins = <MX8MP_IOMUXC_I2C3_SCL__I2C3_SCL     0x400001c6>, /* SMARC S5 - I2C_CAM0_CK */
+                          <MX8MP_IOMUXC_I2C3_SDA__I2C3_SDA     0x400001c6>; /* SMARC S7 - I2C_CAM0_DAT */
+       };
+
+       /* SMARC I2C_CAM0 as GPIOs */
+       pinctrl_i2c3_gpio: i2c3gpiogrp {
+               fsl,pins = <MX8MP_IOMUXC_I2C3_SCL__GPIO5_IO18   0x400001c6>, /* SMARC S5 - I2C_CAM0_CK */
+                          <MX8MP_IOMUXC_I2C3_SDA__GPIO5_IO19   0x400001c6>; /* SMARC S7 - I2C_CAM0_DAT */
+       };
+
+       /* SMARC I2C_GP */
+       pinctrl_i2c4: i2c4grp {
+               fsl,pins = <MX8MP_IOMUXC_I2C4_SCL__I2C4_SCL     0x400001c6>, /* SMARC S48 - I2C_GP_CK */
+                          <MX8MP_IOMUXC_I2C4_SDA__I2C4_SDA     0x400001c6>; /* SMARC S49 - I2C_GP_DAT */
+       };
+
+       /* SMARC I2C_GP as GPIOs */
+       pinctrl_i2c4_gpio: i2c4gpiogrp {
+               fsl,pins = <MX8MP_IOMUXC_I2C4_SCL__GPIO5_IO20   0x400001c6>, /* SMARC S48 - I2C_GP_CK */
+                          <MX8MP_IOMUXC_I2C4_SDA__GPIO5_IO21   0x400001c6>; /* SMARC S49 - I2C_GP_DAT */
+       };
+
+       /* SMARC I2C_CAM1 */
+       pinctrl_i2c5: i2c5grp {
+               fsl,pins = <MX8MP_IOMUXC_SPDIF_RX__I2C5_SDA     0x400001c6>, /* SMARC S2 - I2C_CAM1_DAT  */
+                          <MX8MP_IOMUXC_SPDIF_TX__I2C5_SCL     0x400001c6>; /* SMARC S1 - I2C_CAM1_CK  */
+       };
+
+       /* SMARC I2C_CAM1 as GPIOs */
+       pinctrl_i2c5_gpio: i2c5gpiogrp {
+               fsl,pins = <MX8MP_IOMUXC_SPDIF_RX__GPIO5_IO04   0x400001c6>, /* SMARC S2 - I2C_CAM1_DAT  */
+                          <MX8MP_IOMUXC_SPDIF_TX__GPIO5_IO03   0x400001c6>; /* SMARC S1 - I2C_CAM1_CK  */
+       };
+
+       /* SMARC I2C_PM */
+       pinctrl_i2c6: i2c6grp {
+               fsl,pins = <MX8MP_IOMUXC_HDMI_CEC__I2C6_SCL     0x400001c6>, /* SMARC P121 - I2C_PM_CK */
+                          <MX8MP_IOMUXC_SAI5_RXC__I2C6_SDA     0x400001c6>; /* SMARC P122 - I2C_PM_DAT */
+       };
+
+       /* SMARC I2C_PM as GPIOs */
+       pinctrl_i2c6_gpio: i2c6gpiogrp {
+               fsl,pins = <MX8MP_IOMUXC_HDMI_CEC__GPIO3_IO28   0x400001c6>, /* SMARC P121 - I2C_PM_CK */
+                          <MX8MP_IOMUXC_SAI5_RXC__GPIO3_IO20   0x400001c6>; /* SMARC P122 - I2C_PM_DAT */
+       };
+
+       pinctrl_lvds_dsi_sel: lvdsdsiselgrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_DATA01__GPIO3_IO07        0x104>; /* LVDS_DSI_SEL */
+       };
+
+       pinctrl_mcu_int: mcuintgrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_DATA02__GPIO3_IO08        0x1C0>; /* MCU_INT# */
+       };
+
+       /* SMARC LCD1_BKLT_PWM */
+       pinctrl_lcd1_bklt_pwm1: pwm1grp {
+               fsl,pins = <MX8MP_IOMUXC_SPDIF_EXT_CLK__PWM1_OUT        0x12>; /* SMARC S122 - LCD1_BKLT_PWM */
+       };
+
+       /* SMARC LCD0_BKLT_PWM */
+       pinctrl_lcd0_bklt_pwm2: pwm2grp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO11__PWM2_OUT   0x12>; /* SMARC S141 - LCD0_BKLT_PWM */
+       };
+
+       /* PCAL6408 Interrupt */
+       pinctrl_pcal6408: pcal6408intgrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_DATA03__GPIO3_IO09        0x1c4>; /* GPIO_EX_INT# */
+       };
+
+       /* SMARC PCIE_A */
+       pinctrl_pcie: pciegrp {
+               fsl,pins = <MX8MP_IOMUXC_SAI1_RXFS__GPIO4_IO00  0x1c0>, /* SMARC S146 - PCIE_WAKE# */
+                          <MX8MP_IOMUXC_SAI1_TXD7__GPIO4_IO19  0x04>;  /* SMARC P75 - PCIE_A_RST# */
+       };
+
+       /* PMIC Interrupt */
+       pinctrl_pmic: pmicintgrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO03__GPIO1_IO03 0x1c4>; /* PMIC_INT# */
+       };
+
+       /* SMARC I2S0 */
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <MX8MP_IOMUXC_SAI5_MCLK__AUDIOMIX_SAI1_TX_BCLK       0x94>, /* SMARC S42 - I2S0_CK */
+                          <MX8MP_IOMUXC_SAI5_RXD1__AUDIOMIX_SAI1_TX_SYNC       0x94>, /* SMARC S39 - I2S0_LRCLK */
+                          <MX8MP_IOMUXC_SAI1_RXD0__AUDIOMIX_SAI1_RX_DATA00     0x94>, /* SMARC S41 - I2S0_SDIN */
+                          <MX8MP_IOMUXC_SAI5_RXFS__AUDIOMIX_SAI1_TX_DATA00     0x94>; /* SMARC S40 - I2S0_SDOUT */
+       };
+
+       /* SMARC AUDIO_MCK */
+       pinctrl_sai1_mclk: sai1mclkgrp {
+               fsl,pins = <MX8MP_IOMUXC_SAI1_MCLK__AUDIOMIX_SAI1_MCLK  0x96>; /* SMARC S38 - AUDIO_MCK */
+       };
+
+       /* SMARC I2S2 */
+       pinctrl_sai3: sai3grp {
+               fsl,pins = <MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00      0x94>, /* SMARC S52 - I2S2_SDIN */
+                          <MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK        0x94>, /* SMARC S53 - I2S2_CK */
+                          <MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00      0x94>, /* SMARC S51 - I2S2_SDOUT */
+                          <MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC       0x94>; /* SMARC S50 - I2S2_LRCLK */
+       };
+
+       /* SMARC SLEEP# */
+       pinctrl_sleep: sleepgrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_CE0_B__GPIO3_IO01 0x1C0>; /* SMARC S149 - SLEEP# */
+       };
+
+       /* SMARC SMB_ALERT# */
+       pinctrl_smb_alert: smbalertgrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_READY_B__GPIO3_IO16       0x1C0>; /* SMARC P1 - SMB_ALERT# */
+       };
+
+       /* TPM_CS# */
+       pinctrl_tpm_cs: tpmcsgrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_DATA00__GPIO3_IO06        0x82>; /* TPM_CS# */
+       };
+
+       /* WIFI_BT_WKUP_HOST/TPM_INT# */
+       pinctrl_tpm_irq_wifi_bt_wkup: tpmirq-wifibtwkupgrp {
+               fsl,pins = <MX8MP_IOMUXC_SAI1_RXD2__GPIO4_IO04  0x16>; /* WIFI_BT_WKUP_HOST/TPM_INT# */
+       };
+
+       /* SMARC SER0 */
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <MX8MP_IOMUXC_SAI2_RXD0__UART1_DCE_RTS       0x1c4>, /* SMARC P132 - SER2_CTS */
+                          <MX8MP_IOMUXC_SAI2_TXFS__UART1_DCE_CTS       0x1c4>, /* SMARC P131 - SER2_RTS */
+                          <MX8MP_IOMUXC_UART1_RXD__UART1_DCE_RX        0x1c4>, /* SMARC P130 - SER2_RX */
+                          <MX8MP_IOMUXC_UART1_TXD__UART1_DCE_TX        0x1c4>; /* SMARC P139 - SER2_TX */
+       };
+
+       /* SMARC SER2 */
+       pinctrl_uart2: uart2grp {
+               fsl,pins = <MX8MP_IOMUXC_SD1_DATA4__UART2_DCE_RTS       0x1c4>, /* SMARC P139 - SER2_CTS */
+                          <MX8MP_IOMUXC_SD1_DATA5__UART2_DCE_CTS       0x1c4>, /* SMARC P138 - SER2_RTS */
+                          <MX8MP_IOMUXC_UART2_RXD__UART2_DCE_RX        0x1c4>, /* SMARC P137 - SER2_RX */
+                          <MX8MP_IOMUXC_UART2_TXD__UART2_DCE_TX        0x1c4>; /* SMARC P136 - SER2_TX */
+       };
+
+       /* SMARC SER3 */
+       pinctrl_uart3: uart3grp {
+               fsl,pins = <MX8MP_IOMUXC_UART3_RXD__UART3_DCE_RX        0x1c4>, /* SMARC P141 - SER3_RX */
+                          <MX8MP_IOMUXC_UART3_TXD__UART3_DCE_TX        0x1c4>; /* SMARC P140 - SER3_TX */
+       };
+
+       /* SMARC SER1 */
+       pinctrl_uart4: uart4grp {
+               fsl,pins = <MX8MP_IOMUXC_UART4_RXD__UART4_DCE_RX        0x1c4>, /* SMARC P135 - SER1_RX */
+                          <MX8MP_IOMUXC_UART4_TXD__UART4_DCE_TX        0x1c4>; /* SMARC P134 - SER1_TX */
+       };
+
+       /* SMARC USB0_OTG_ID */
+       pinctrl_usb0_id: usb0idgrp {
+               fsl,pins = <MX8MP_IOMUXC_SAI3_MCLK__GPIO5_IO02  0x1c4>; /* SMARC P64 - USB0_OTG_ID */
+       };
+
+       /* SMARC USB0_EN_OC# */
+       pinctrl_usb0_en_oc: usb0enocgrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO12__GPIO1_IO12 0x04>; /* SMARC P62 - USB0_EN_OC# */
+       };
+
+       /* On module USB Hub VBUS, or SMARC USB2_EN_OC# depending on assembling */
+       pinctrl_usb1_en_oc: usb1enocgrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO14__GPIO1_IO14 0x04>; /* SMARC P71 - USB2_EN_OC# */
+       };
+
+       /* On-module Wi-Fi */
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK            0x190>, /* WiFi_SDIO_CLK */
+                          <MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD            0x1d0>, /* WiFi_SDIO_CMD */
+                          <MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0        0x1d0>, /* WiFi_SDIO_DATA0 */
+                          <MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1        0x1d0>, /* WiFi_SDIO_DATA1 */
+                          <MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2        0x1d0>, /* WiFi_SDIO_DATA2 */
+                          <MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3        0x1d0>; /* WiFi_SDIO_DATA3 */
+       };
+
+       /* On-module Wi-Fi */
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK            0x194>, /* WiFi_SDIO_CLK */
+                          <MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD            0x1d4>, /* WiFi_SDIO_CMD */
+                          <MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0        0x1d4>, /* WiFi_SDIO_DATA0 */
+                          <MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1        0x1d4>, /* WiFi_SDIO_DATA1 */
+                          <MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2        0x1d4>, /* WiFi_SDIO_DATA2 */
+                          <MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3        0x1d4>; /* WiFi_SDIO_DATA3 */
+       };
+
+       /* On-module Wi-Fi */
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD1_CLK__USDHC1_CLK            0x196>, /* WiFi_SDIO_CLK */
+                          <MX8MP_IOMUXC_SD1_CMD__USDHC1_CMD            0x1d6>, /* WiFi_SDIO_CMD */
+                          <MX8MP_IOMUXC_SD1_DATA0__USDHC1_DATA0        0x1d6>, /* WiFi_SDIO_DATA0 */
+                          <MX8MP_IOMUXC_SD1_DATA1__USDHC1_DATA1        0x1d6>, /* WiFi_SDIO_DATA1 */
+                          <MX8MP_IOMUXC_SD1_DATA2__USDHC1_DATA2        0x1d6>, /* WiFi_SDIO_DATA2 */
+                          <MX8MP_IOMUXC_SD1_DATA3__USDHC1_DATA3        0x1d6>; /* WiFi_SDIO_DATA3 */
+       };
+
+       /* SMARC SDIO */
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK            0x190>, /* SMARC P36 - SDIO_CK */
+                          <MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD            0x1d0>, /* SMARC P34 - SDIO_CMD */
+                          <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d0>, /* SMARC P39 - SDIO_DO */
+                          <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d0>, /* SMARC P40 - SDIO_D1 */
+                          <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d0>, /* SMARC P41 - SDIO_D2 */
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d0>; /* SMARC P42 - SDIO_D3 */
+       };
+
+       /* SMARC SDIO 100MHz */
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK            0x194>, /* SMARC P36 - SDIO_CK */
+                          <MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD            0x1d4>, /* SMARC P34 - SDIO_CMD */
+                          <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d4>, /* SMARC P39 - SDIO_DO */
+                          <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d4>, /* SMARC P40 - SDIO_D1 */
+                          <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d4>, /* SMARC P41 - SDIO_D2 */
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d4>; /* SMARC P42 - SDIO_D3 */
+       };
+
+       /* SMARC SDIO 200MHz */
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK            0x196>, /* SMARC P36 - SDIO_CK */
+                          <MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD            0x1d6>, /* SMARC P34 - SDIO_CMD */
+                          <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x1d6>, /* SMARC P39 - SDIO_DO */
+                          <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x1d6>, /* SMARC P40 - SDIO_D1 */
+                          <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x1d6>, /* SMARC P41 - SDIO_D2 */
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x1d6>; /* SMARC P42 - SDIO_D3 */
+       };
+
+       /* SMARC SDIO_CD# */
+       pinctrl_usdhc2_cd: usdhc2cdgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD2_CD_B__GPIO2_IO12   0x1c4>; /* SMARC P35 - SDIO_CD# */
+       };
+
+       /* SMARC SDIO_CD# */
+       pinctrl_usdhc2_cd_sleep: usdhc2cdslpgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD2_CD_B__GPIO2_IO12   0x0>; /* SMARC P35 - SDIO_CD# */
+       };
+
+       /* SMARC SDIO_PWR_EN */
+       pinctrl_usdhc2_pwr_en: usdhc2pwrengrp {
+               fsl,pins = <MX8MP_IOMUXC_SD2_RESET_B__GPIO2_IO19        0x1c4>; /* SMARC P37 - SDIO_PWR_EN */
+       };
+
+       /* SMARC SDIO Sleep - Avoid backfeeding with removed card power */
+       pinctrl_usdhc2_sleep: usdhc2slpgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD2_CLK__USDHC2_CLK            0x100>, /* SMARC P36 - SDIO_CK */
+                          <MX8MP_IOMUXC_SD2_CMD__USDHC2_CMD            0x100>, /* SMARC P34 - SDIO_CMD */
+                          <MX8MP_IOMUXC_SD2_DATA0__USDHC2_DATA0        0x100>, /* SMARC P39 - SDIO_DO */
+                          <MX8MP_IOMUXC_SD2_DATA1__USDHC2_DATA1        0x100>, /* SMARC P39 - SDIO_D1 */
+                          <MX8MP_IOMUXC_SD2_DATA2__USDHC2_DATA2        0x100>, /* SMARC P39 - SDIO_D2 */
+                          <MX8MP_IOMUXC_SD2_DATA3__USDHC2_DATA3        0x100>; /* SMARC P39 - SDIO_D3 */
+       };
+
+       pinctrl_usdhc2_vsel: usdhc2vselgrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO04__GPIO1_IO04 0x4>; /* PMIC_USDHC_VSELECT */
+       };
+
+       /* SMARC SDIO_WP */
+       pinctrl_usdhc2_wp: usdhc2wpgrp {
+               fsl,pins = <MX8MP_IOMUXC_SD2_WP__GPIO2_IO20     0x144>; /* SMARC P33 - SDIO_WP */
+       };
+
+       /* On-module eMMC */
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE      0x190>, /* eMMC_STROBE */
+                          <MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5       0x1d0>, /* eMMC_DATA5 */
+                          <MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6       0x1d0>, /* eMMC_DATA6 */
+                          <MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7         0x1d0>, /* eMMC_DATA7 */
+                          <MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0      0x1d0>, /* eMMC_DATA0 */
+                          <MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1      0x1d0>, /* eMMC_DATA1 */
+                          <MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2      0x1d0>, /* eMMC_DATA2 */
+                          <MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3      0x1d0>, /* eMMC_DATA3 */
+                          <MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4        0x1d0>, /* eMMC_DATA4 */
+                          <MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK          0x190>, /* eMMC_CLK */
+                          <MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD          0x1d0>; /* eMMC_CMD */
+       };
+
+       /* On-module eMMC */
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE      0x194>, /* eMMC_STROBE */
+                          <MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5       0x1d4>, /* eMMC_DATA5 */
+                          <MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6       0x1d4>, /* eMMC_DATA6 */
+                          <MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7         0x1d4>, /* eMMC_DATA7 */
+                          <MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0      0x1d4>, /* eMMC_DATA0 */
+                          <MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1      0x1d4>, /* eMMC_DATA1 */
+                          <MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2      0x1d4>, /* eMMC_DATA2 */
+                          <MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3      0x1d4>, /* eMMC_DATA3 */
+                          <MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4        0x1d4>, /* eMMC_DATA4 */
+                          <MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK          0x194>, /* eMMC_CLK */
+                          <MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD          0x1d4>; /* eMMC_CMD */
+       };
+
+       /* On-module eMMC */
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_CE1_B__USDHC3_STROBE      0x196>, /* eMMC_STROBE */
+                          <MX8MP_IOMUXC_NAND_CE2_B__USDHC3_DATA5       0x1d2>, /* eMMC_DATA5 */
+                          <MX8MP_IOMUXC_NAND_CE3_B__USDHC3_DATA6       0x1d2>, /* eMMC_DATA6 */
+                          <MX8MP_IOMUXC_NAND_CLE__USDHC3_DATA7         0x1d2>, /* eMMC_DATA7 */
+                          <MX8MP_IOMUXC_NAND_DATA04__USDHC3_DATA0      0x1d2>, /* eMMC_DATA0 */
+                          <MX8MP_IOMUXC_NAND_DATA05__USDHC3_DATA1      0x1d2>, /* eMMC_DATA1 */
+                          <MX8MP_IOMUXC_NAND_DATA06__USDHC3_DATA2      0x1d2>, /* eMMC_DATA2 */
+                          <MX8MP_IOMUXC_NAND_DATA07__USDHC3_DATA3      0x1d2>, /* eMMC_DATA3 */
+                          <MX8MP_IOMUXC_NAND_RE_B__USDHC3_DATA4        0x1d2>, /* eMMC_DATA4 */
+                          <MX8MP_IOMUXC_NAND_WE_B__USDHC3_CLK          0x196>, /* eMMC_CLK */
+                          <MX8MP_IOMUXC_NAND_WP_B__USDHC3_CMD          0x1d6>; /* eMMC_CMD */
+       };
+
+       /* SoC Watchdog */
+       pinctrl_wdog: wdoggrp {
+               fsl,pins = <MX8MP_IOMUXC_GPIO1_IO02__WDOG1_WDOG_B       0x4>; /* CTRL_SOC_WDOG */
+       };
+
+       /* On-module Wi-Fi power enable */
+       pinctrl_wifi_pwr_en: wifipwrengrp {
+               fsl,pins = <MX8MP_IOMUXC_NAND_DQS__GPIO3_IO14   0x104>; /* CTRL_EN_WIFI */
+       };
+};
diff --git a/src/arm64/freescale/imx8mp-tqma8mpql-mba8mp-ras314-imx219.dtso b/src/arm64/freescale/imx8mp-tqma8mpql-mba8mp-ras314-imx219.dtso
new file mode 100644 (file)
index 0000000..e5a2b37
--- /dev/null
@@ -0,0 +1,107 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/media/video-interfaces.h>
+
+#include "imx8mp-pinfunc.h"
+
+&{/} {
+       /*
+        * The three camera regulators are controlled by a single GPIO. Declare
+        * a single regulator for the three supplies.
+        */
+       reg_cam: regulator-cam {
+               compatible = "regulator-fixed";
+               regulator-name = "reg_cam";
+               /* pad muxing already done in gpio2grp */
+               gpio = <&gpio2 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&reg_vcc_3v3>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       cam24m: clock-cam24m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "cam24m";
+       };
+};
+
+&i2c2 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       camera@10 {
+               compatible = "sony,imx219";
+               reg = <0x10>;
+               clocks = <&cam24m>;
+               VANA-supply = <&reg_cam>;
+               VDIG-supply = <&reg_cam>;
+               VDDL-supply = <&reg_cam>;
+               orientation = <2>;
+               rotation = <0>;
+
+               port {
+                       sony_imx219: endpoint {
+                               remote-endpoint = <&imx8mp_mipi_csi_in>;
+                               clock-lanes = <0>;
+                               clock-noncontinuous;
+                               data-lanes = <1 2>;
+                               link-frequencies = /bits/ 64 <456000000>;
+                       };
+               };
+       };
+};
+
+&isi_0 {
+       status = "disabled";
+
+       ports {
+               port@0 {
+                       /delete-node/ endpoint;
+               };
+       };
+};
+
+&isp_0 {
+       status = "okay";
+
+       ports {
+               port@1 {
+                       isp0_in: endpoint {
+                               bus-type = <MEDIA_BUS_TYPE_PARALLEL>;
+                               remote-endpoint = <&mipi_csi_0_out>;
+                       };
+               };
+       };
+};
+
+&mipi_csi_0 {
+       status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       imx8mp_mipi_csi_in: endpoint {
+                               remote-endpoint = <&sony_imx219>;
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&mipi_csi_0_out {
+       remote-endpoint = <&isp0_in>;
+};
index 2f740d74707bdfd612a977217b298f50562abacf..4bf818873fe3c5275e6383a84b515e8599637589 100644 (file)
@@ -70,7 +70,7 @@
        tpm@1 {
                compatible = "atmel,attpm20p", "tcg,tpm_tis-spi";
                reg = <0x1>;
-               spi-max-frequency = <36000000>;
+               spi-max-frequency = <25000000>;
        };
 };
 
index 5ab3ffe9931d4a3ca52d6ff45b3867f6c497814b..cf747ec6fa16ebf7e9df764705355709612eeb28 100644 (file)
        tpm@1 {
                compatible = "atmel,attpm20p", "tcg,tpm_tis-spi";
                reg = <0x1>;
-               spi-max-frequency = <36000000>;
+               spi-max-frequency = <25000000>;
        };
 };
 
index e2b5e7ac3e465f86218aa57fba7c2326cecf3fd0..5eb114d2360a3b6b71844099b7f392c4013e415e 100644 (file)
        tpm@1 {
                compatible = "atmel,attpm20p", "tcg,tpm_tis-spi";
                reg = <0x1>;
-               spi-max-frequency = <36000000>;
+               spi-max-frequency = <25000000>;
        };
 };
 
index 6daa2313f879008abcbcb4c382dbd41e9282ec79..568d24265ddf8ea528346252615a1d5064e63a42 100644 (file)
        tpm@0 {
                compatible = "atmel,attpm20p", "tcg,tpm_tis-spi";
                reg = <0x0>;
-               spi-max-frequency = <36000000>;
+               spi-max-frequency = <25000000>;
        };
 };
 
index e3869efe4fd0c06c4ff9867427cef86b5032df54..d43ba008712693fea458b8e0622965521a5cb83a 100644 (file)
        };
 
        eeprom@50 {
-               compatible = "st,24c02";
+               compatible = "st,24c02", "atmel,24c02";
                pagesize = <16>;
                reg = <0x50>;
        };
 
        /* EEPROM on display adapter (MIPI DSI Display Adapter) */
        eeprom_display_adapter: eeprom@50 {
-               compatible = "st,24c02";
+               compatible = "st,24c02", "atmel,24c02";
                pagesize = <16>;
                reg = <0x50>;
                status = "disabled";
 
        /* EEPROM on carrier board */
        eeprom_carrier_board: eeprom@57 {
-               compatible = "st,24c02";
+               compatible = "st,24c02", "atmel,24c02";
                pagesize = <16>;
                reg = <0x57>;
                status = "disabled";
index 7c1c87eab54cc632643f206bd80ce7b7b49505de..948b88cf5e9dff38a9dd28eb4903c951529cb443 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/clock/imx8mp-clock.h>
 #include <dt-bindings/power/imx8mp-power.h>
 #include <dt-bindings/reset/imx8mp-reset.h>
+#include <dt-bindings/reset/imx8mp-reset-audiomix.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/interconnect/fsl,imx8mp.h>
@@ -65,7 +66,6 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x0>;
-                       clock-latency = <61036>;
                        clocks = <&clk IMX8MP_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
@@ -86,7 +86,6 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x1>;
-                       clock-latency = <61036>;
                        clocks = <&clk IMX8MP_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x2>;
-                       clock-latency = <61036>;
                        clocks = <&clk IMX8MP_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x3>;
-                       clock-latency = <61036>;
                        clocks = <&clk IMX8MP_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                ranges;
 
                dsp_reserved: dsp@92400000 {
-                       reg = <0 0x92400000 0 0x2000000>;
+                       reg = <0 0x92400000 0 0x1000000>;
                        no-map;
                        status = "disabled";
                };
                                reg = <0x30e60000 0x10000>;
                                interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
                                #mbox-cells = <2>;
+                               clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_MU2_ROOT>;
                                status = "disabled";
                        };
 
                        };
                };
 
-               pcie: pcie@33800000 {
+               pcie0: pcie: pcie@33800000 {
                        compatible = "fsl,imx8mp-pcie";
                        reg = <0x33800000 0x400000>, <0x1ff00000 0x80000>;
                        reg-names = "dbi", "config";
                        status = "disabled";
                };
 
-               pcie_ep: pcie-ep@33800000 {
+               pcie0_ep: pcie_ep: pcie-ep@33800000 {
                        compatible = "fsl,imx8mp-pcie-ep";
                        reg = <0x33800000 0x100000>,
                              <0x18000000 0x8000000>,
                };
 
                dsp: dsp@3b6e8000 {
-                       compatible = "fsl,imx8mp-dsp";
+                       compatible = "fsl,imx8mp-hifi4";
                        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>;
+                       clocks = <&audio_blk_ctrl  IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
+                               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_OCRAMA_IPG>,
+                               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSP_ROOT>,
+                               <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_DSPDBG_ROOT>;
+                       clock-names = "ipg", "ocram", "core", "debug";
+                       power-domains = <&pgc_audio>;
+                       mbox-names = "tx", "rx", "rxdb";
+                       mboxes = <&mu2 0 0>, <&mu2 1 0>, <&mu2 3 0>;
+                       firmware-name = "imx/dsp/hifi4.bin";
+                       resets = <&audio_blk_ctrl IMX8MP_AUDIOMIX_DSP_RUNSTALL>;
+                       reset-names = "runstall";
                        status = "disabled";
                };
        };
index a87d0692c3bb372f77c04d5190e3741f93a142ec..43e45b0bd0d177d62ed955e1a7a63be768ad4b07 100644 (file)
        status = "okay";
 };
 
+&pcie0_ep {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie0>;
+       clocks = <&clk IMX8MQ_CLK_PCIE1_ROOT>,
+                <&pcie0_refclk>,
+                <&clk IMX8MQ_CLK_PCIE1_PHY>,
+                <&clk IMX8MQ_CLK_PCIE1_AUX>;
+       status = "disabled";
+};
+
 &pcie1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_pcie1>;
        status = "okay";
 };
 
+&pcie1_ep {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie1>;
+       clocks = <&clk IMX8MQ_CLK_PCIE2_ROOT>,
+                <&pcie0_refclk>,
+                <&clk IMX8MQ_CLK_PCIE2_PHY>,
+                <&clk IMX8MQ_CLK_PCIE2_AUX>;
+       status = "disabled";
+};
+
 &pgc_gpu {
        power-supply = <&sw1a_reg>;
 };
index d51de8d899b2bd9e5398baa80211380a87167b8e..c9040d1131a80941474806da0741df18bd36b2c8 100644 (file)
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x0>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clk IMX8MQ_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x1>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clk IMX8MQ_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x2>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clk IMX8MQ_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
                        reg = <0x3>;
-                       clock-latency = <61036>; /* two CLK32 periods */
                        clocks = <&clk IMX8MQ_CLK_ARM>;
                        enable-method = "psci";
                        i-cache-size = <0x8000>;
                        status = "disabled";
                };
 
+               pcie0_ep: pcie-ep@33800000 {
+                       compatible = "fsl,imx8mq-pcie-ep";
+                       reg = <0x33800000 0x100000>,
+                             <0x18000000 0x8000000>,
+                             <0x33900000 0x100000>,
+                             <0x33b00000 0x100000>;
+                       reg-names = "dbi", "addr_space", "dbi2", "atu";
+                       num-lanes = <1>;
+                       interrupts = <GIC_SPI 127 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "dma";
+                       linux,pci-domain = <0>;
+                       clocks = <&clk IMX8MQ_CLK_PCIE2_ROOT>,
+                                <&clk IMX8MQ_CLK_PCIE2_PHY>,
+                                <&clk IMX8MQ_CLK_PCIE2_PHY>,
+                                <&clk IMX8MQ_CLK_PCIE2_AUX>;
+                       clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
+                       power-domains = <&pgc_pcie>;
+                       resets = <&src IMX8MQ_RESET_PCIEPHY2>,
+                                <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
+                                <&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
+                       reset-names = "pciephy", "apps", "turnoff";
+                       assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>,
+                                         <&clk IMX8MQ_CLK_PCIE2_PHY>,
+                                         <&clk IMX8MQ_CLK_PCIE2_AUX>;
+                       assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
+                                                <&clk IMX8MQ_SYS2_PLL_100M>,
+                                                <&clk IMX8MQ_SYS1_PLL_80M>;
+                       assigned-clock-rates = <250000000>, <100000000>,
+                                              <10000000>;
+                       num-ib-windows = <4>;
+                       num-ob-windows = <4>;
+                       fsl,max-link-speed = <2>;
+                       status = "disabled";
+               };
+
                pcie1: pcie@33c00000 {
                        compatible = "fsl,imx8mq-pcie";
                        reg = <0x33c00000 0x400000>,
                        interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "dma";
                        fsl,max-link-speed = <2>;
+                       linux,pci-domain = <1>;
                        clocks = <&clk IMX8MQ_CLK_PCIE2_ROOT>,
                                 <&clk IMX8MQ_CLK_PCIE2_PHY>,
                                 <&clk IMX8MQ_CLK_PCIE2_PHY>,
index c18f57039f6efb09e02a67e0d793c925d1ae96db..f97feee52c8186b55e70a356199cf8c3b933a7f7 100644 (file)
        phy-mode = "rgmii-rxid";
 };
 
+&hsio_refa_clk {
+       enable-gpios = <&lsio_gpio4 27 GPIO_ACTIVE_HIGH>;
+};
+
 /* TODO: Apalis HDMI1 */
 
 /* Apalis I2C2 (DDC) */
                          "MXM3_291",
                          "MXM3_289",
                          "MXM3_287";
-
-       /* Enable pcie root / sata ref clock unconditionally */
-       pcie-sata-hog {
-               gpios = <27 GPIO_ACTIVE_HIGH>;
-       };
-
 };
 
 &lsio_gpio5 {
index e80f722dbe65f4bc0cd9c0fc2d77a3fe457b4e31..50c0f6b0f0bdc2bd6fd3a19e08d1b7a723353783 100644 (file)
@@ -12,7 +12,7 @@
        #address-cells = <1>;
        #size-cells = <1>;
 
-       pciea: pcie@5f000000 {
+       pcie0: pciea: pcie@5f000000 {
                compatible = "fsl,imx8q-pcie";
                reg = <0x5f000000 0x10000>,
                      <0x4ff00000 0x80000>;
@@ -42,7 +42,7 @@
                status = "disabled";
        };
 
-       pciea_ep: pcie-ep@5f000000 {
+       pcie0_ep: pciea_ep: pcie-ep@5f000000 {
                compatible = "fsl,imx8q-pcie-ep";
                reg = <0x5f000000 0x00010000>,
                      <0x40000000 0x10000000>;
@@ -61,7 +61,7 @@
                status = "disabled";
        };
 
-       pcieb: pcie@5f010000 {
+       pcie1: pcieb: pcie@5f010000 {
                compatible = "fsl,imx8q-pcie";
                reg = <0x5f010000 0x10000>,
                      <0x8ff00000 0x80000>;
diff --git a/src/arm64/freescale/imx8qxp-mek-pcie-ep.dtso b/src/arm64/freescale/imx8qxp-mek-pcie-ep.dtso
deleted file mode 100644 (file)
index 4f562eb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
-/*
- * Copyright 2025 NXP
- */
-
-#include <dt-bindings/phy/phy.h>
-
-/dts-v1/;
-/plugin/;
-
-&pcieb {
-       status = "disabled";
-};
-
-&pcieb_ep {
-       phys = <&hsio_phy 0 PHY_TYPE_PCIE 0>;
-       phy-names = "pcie-phy";
-       pinctrl-0 = <&pinctrl_pcieb>;
-       pinctrl-names = "default";
-       vpcie-supply = <&reg_pcieb>;
-       status = "okay";
-};
index a669a5d500d327f36717c2932978e34536093ab3..c93d123670bd2947ff2cc354d33b4a99b57ab078 100644 (file)
                reg = <0x00000000 0x80000000 0 0x40000000>;
        };
 
-       reserved-memory {
-               dsp_vdev0vring0: memory@942f0000 {
-                       reg = <0 0x942f0000 0 0x8000>;
-                       no-map;
-               };
-
-               dsp_vdev0vring1: memory@942f8000 {
-                       reg = <0 0x942f8000 0 0x8000>;
-                       no-map;
-               };
-
-               dsp_vdev0buffer: memory@94300000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0 0x94300000 0 0x100000>;
-                       no-map;
-               };
-       };
-
        reg_usdhc2_vmmc: usdhc2-vmmc {
                compatible = "regulator-fixed";
                regulator-name = "SD1_SPWR";
                        no-map;
                };
 
+               dsp_vdev0vring0: memory@942f0000 {
+                       reg = <0 0x942f0000 0 0x8000>;
+                       no-map;
+               };
+
+               dsp_vdev0vring1: memory@942f8000 {
+                       reg = <0 0x942f8000 0 0x8000>;
+                       no-map;
+               };
+
+               dsp_vdev0buffer: memory@94300000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x94300000 0 0x100000>;
+                       no-map;
+               };
+
                gpu_reserved: memory@880000000 {
                        no-map;
                        reg = <0x8 0x80000000 0 0x10000000>;
        status = "okay";
 };
 
-&pcieb {
+&pcie0 {
        phys = <&hsio_phy 0 PHY_TYPE_PCIE 0>;
        phy-names = "pcie-phy";
        pinctrl-0 = <&pinctrl_pcieb>;
        status = "okay";
 };
 
+&pcie0_ep {
+       phys = <&hsio_phy 0 PHY_TYPE_PCIE 0>;
+       phy-names = "pcie-phy";
+       pinctrl-0 = <&pinctrl_pcieb>;
+       pinctrl-names = "default";
+       vpcie-supply = <&reg_pcieb>;
+       status = "disabled";
+};
+
 &scu_key {
        status = "okay";
 };
index 47fc6e0cff4a1a5925c60e4bca9f455df9b155ad..255b8c91c88ccdcb5566b4ab94edcdc51b9cd4c1 100644 (file)
                power-domains = <&pd IMX_SC_R_SERDES_1>;
                status = "disabled";
        };
+
+       pcie0: pcie@5f010000 {
+       };
+
+       pcie0_ep: pcie-ep@5f010000 {
+       };
 };
diff --git a/src/arm64/freescale/imx8qxp-tqma8xqps-mb-smarc-2.dts b/src/arm64/freescale/imx8qxp-tqma8xqps-mb-smarc-2.dts
new file mode 100644 (file)
index 0000000..3fa9b5a
--- /dev/null
@@ -0,0 +1,16 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+/dts-v1/;
+
+#include "imx8qxp-tqma8xqps.dtsi"
+#include "tqma8xxs-mb-smarc-2.dtsi"
+
+/ {
+       model = "TQ-Systems i.MX8QXP TQMa8XQPS on MB-SMARC-2";
+       compatible = "tq,imx8qxp-tqma8xqps-mb-smarc-2", "tq,imx8qxp-tqma8xqps", "fsl,imx8qxp";
+};
diff --git a/src/arm64/freescale/imx8qxp-tqma8xqps.dtsi b/src/arm64/freescale/imx8qxp-tqma8xqps.dtsi
new file mode 100644 (file)
index 0000000..f008b7a
--- /dev/null
@@ -0,0 +1,14 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+#include "imx8qxp.dtsi"
+#include "tqma8xxs.dtsi"
+
+/ {
+       model = "TQ-Systems i.MX8QXP TQMa8XQPS";
+       compatible = "tq,imx8qxp-tqma8xqps", "fsl,imx8qxp";
+};
index ecb35c6b67f597f6eee1b159e5adffee2eb1144f..e602d147e39b937ef6e1ff3f45d3df685784ee9f 100644 (file)
                regulator-name = "vref-1v8";
        };
 
+       reg_module_wifi: regulator-module-wifi {
+               compatible = "regulator-fixed";
+               gpio = <&gpio_expander_43 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+               regulator-name = "Wi-Fi_PDn";
+               startup-delay-us = <2000>;
+       };
+
        reg_usbh_vbus: regulator-usbh-vbus {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
        };
 };
 
+&hsio_phy {
+       fsl,hsio-cfg = "pciea-x2-pcieb";
+       fsl,refclk-pad-mode = "input";
+       status = "okay";
+};
+
+&hsio_refb_clk {
+       enable-gpios = <&gpio_expander_43 3 GPIO_ACTIVE_HIGH>;
+};
+
 /* Colibri SPI */
 &lpspi2 {
        pinctrl-names = "default";
 
 /* TODO MIPI DSI with DSI-to-HDMI bridge lt8912 */
 
-/* TODO on-module PCIe for Wi-Fi */
+/* On-module PCIe for Wi-Fi */
+&pcieb {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcieb>;
+       phys = <&hsio_phy 0 PHY_TYPE_PCIE 0>;
+       phy-names = "pcie-phy";
+       reset-gpios = <&lsio_gpio4 0 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
 
 /* On-module I2S */
 &sai0 {
diff --git a/src/arm64/freescale/imx93-phyboard-nash.dts b/src/arm64/freescale/imx93-phyboard-nash.dts
new file mode 100644 (file)
index 0000000..7e9d031
--- /dev/null
@@ -0,0 +1,317 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Primoz Fiser <primoz.fiser@norik.com>
+ *
+ * Product homepage:
+ * https://www.phytec.eu/en/produkte/development-kits/phyboard-nash/
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/net/ti-dp83867.h>
+#include "imx93-phycore-som.dtsi"
+
+/ {
+       model = "PHYTEC phyBOARD-Nash-i.MX93";
+       compatible = "phytec,imx93-phyboard-nash", "phytec,imx93-phycore-som",
+                    "fsl,imx93";
+
+       aliases {
+               ethernet0 = &fec;
+               ethernet1 = &eqos;
+               rtc0 = &i2c_rtc;
+               rtc1 = &bbnsm_rtc;
+       };
+
+       chosen {
+               stdout-path = &lpuart1;
+       };
+
+       flexcan1_tc: can-phy0 {
+               compatible = "ti,tcan1042";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flexcan1_tc>;
+               standby-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
+       };
+
+       reg_usdhc2_vmmc: regulator-usdhc2 {
+               compatible = "regulator-fixed";
+               gpio = <&gpio3 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
+               regulator-name = "VCC_SD";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+       };
+
+       reg_vcc_1v8: regulator-vcc-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "VCC1V8";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+       };
+
+       reg_vref_1v8: regulator-adc-vref {
+               compatible = "regulator-fixed";
+               regulator-name = "VREF_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+};
+
+/* ADC */
+&adc1 {
+       vref-supply = <&reg_vref_1v8>;
+       status = "okay";
+};
+
+/* Ethernet */
+&eqos {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_eqos>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy2>;
+       status = "okay";
+};
+
+&mdio {
+       ethphy2: ethernet-phy@2 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <2>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+               ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_1_75_NS>;
+               ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+       };
+};
+
+/* CAN */
+&flexcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       phys = <&flexcan1_tc>;
+       status = "okay";
+};
+
+/* I2C2 */
+&lpi2c2 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpi2c2>;
+       status = "okay";
+
+       /* RTC */
+       i2c_rtc: rtc@52 {
+               compatible = "microcrystal,rv3028";
+               reg = <0x52>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc>;
+               trickle-resistor-ohms = <3000>;
+               wakeup-source;
+       };
+
+       /* EEPROM */
+       eeprom@54 {
+               compatible = "atmel,24c32";
+               reg = <0x54>;
+               pagesize = <32>;
+               vcc-supply = <&reg_vcc_1v8>;
+       };
+};
+
+/* SPI6 */
+&lpspi6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpspi6>;
+       cs-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       /* TPM */
+       tpm@0 {
+               compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+               reg = <0>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_tpm>;
+               spi-max-frequency = <10000000>;
+       };
+};
+
+/* Console */
+&lpuart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+/* RS-232/RS-485 */
+&lpuart7 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart7>;
+       status = "okay";
+};
+
+/* USB */
+&usbotg1 {
+       disable-over-current;
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbotg2 {
+       disable-over-current;
+       dr_mode = "host";
+       status = "okay";
+};
+
+/* SD-Card */
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2_default>, <&pinctrl_usdhc2_cd>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_cd>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_cd>;
+       cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       bus-width = <4>;
+       disable-wp;
+       no-mmc;
+       no-sdio;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_eqos: eqosgrp {
+               fsl,pins = <
+                       MX93_PAD_ENET1_RD0__ENET_QOS_RGMII_RD0  0x57e
+                       MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1  0x57e
+                       MX93_PAD_ENET1_RD2__ENET_QOS_RGMII_RD2  0x57e
+                       MX93_PAD_ENET1_RD3__ENET_QOS_RGMII_RD3  0x57e
+                       MX93_PAD_ENET1_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK  0x5fe
+                       MX93_PAD_ENET1_RX_CTL__ENET_QOS_RGMII_RX_CTL    0x57e
+                       MX93_PAD_ENET1_TD0__ENET_QOS_RGMII_TD0  0x51e
+                       MX93_PAD_ENET1_TD1__ENET_QOS_RGMII_TD1  0x51e
+                       MX93_PAD_ENET1_TD2__ENET_QOS_RGMII_TD2  0x50e
+                       MX93_PAD_ENET1_TD3__ENET_QOS_RGMII_TD3  0x50e
+                       MX93_PAD_ENET1_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK  0x58e
+                       MX93_PAD_ENET1_TX_CTL__ENET_QOS_RGMII_TX_CTL    0x50e
+                       MX93_PAD_CCM_CLKO1__GPIO3_IO26          0x1002
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX93_PAD_PDM_BIT_STREAM0__CAN1_RX       0x139e
+                       MX93_PAD_PDM_CLK__CAN1_TX               0x1382
+               >;
+       };
+
+       pinctrl_flexcan1_tc: flexcan1tcgrp {
+               fsl,pins = <
+                       MX93_PAD_ENET2_TD3__GPIO4_IO16          0x31e
+               >;
+       };
+
+       pinctrl_lpi2c2: lpi2c2grp {
+               fsl,pins = <
+                       MX93_PAD_I2C2_SCL__LPI2C2_SCL           0x40000b9e
+                       MX93_PAD_I2C2_SDA__LPI2C2_SDA           0x40000b9e
+               >;
+       };
+
+       pinctrl_lpspi6: lpspi6grp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO00__GPIO2_IO00          0x386
+                       MX93_PAD_GPIO_IO01__LPSPI6_SIN          0x3fe
+                       MX93_PAD_GPIO_IO02__LPSPI6_SOUT         0x386
+                       MX93_PAD_GPIO_IO03__LPSPI6_SCK          0x386
+               >;
+       };
+
+       pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
+               fsl,pins = <
+                       MX93_PAD_SD2_RESET_B__GPIO3_IO07        0x31e
+               >;
+       };
+
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX93_PAD_ENET2_RD2__GPIO4_IO26          0x31e
+               >;
+       };
+
+       pinctrl_tpm: tpmgrp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO17__GPIO2_IO17          0x31e
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX93_PAD_UART1_RXD__LPUART1_RX          0x31e
+                       MX93_PAD_UART1_TXD__LPUART1_TX          0x30e
+               >;
+       };
+
+       pinctrl_uart7: uart7grp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO08__LPUART7_TX          0x30e
+                       MX93_PAD_GPIO_IO09__LPUART7_RX          0x31e
+                       MX93_PAD_GPIO_IO10__LPUART7_CTS_B       0x31e
+                       MX93_PAD_GPIO_IO11__LPUART7_RTS_B       0x31e
+               >;
+       };
+
+       pinctrl_usdhc2_cd: usdhc2cdgrp {
+               fsl,pins = <
+                       MX93_PAD_SD2_CD_B__GPIO3_IO00           0x31e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc2_default: usdhc2grp {
+               fsl,pins = <
+                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x159e
+                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x4000178e
+                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x40001386
+                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x40001386
+                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x40001386
+                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x4000138e
+                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT    0x51e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x159e
+                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x4000139e
+                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x4000139e
+                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x4000139e
+                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x4000139e
+                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x400013be
+                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT    0x51e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x159e
+                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x4000139e
+                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x4000139e
+                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x4000139e
+                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x4000139e
+                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x4000139e
+                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT    0x51e
+               >;
+       };
+};
index 85fb188b057fa101c6ae27f6155252e8d57845f7..0c55b749c834d3120ba0855f97267347aa002c4c 100644 (file)
        compatible = "phytec,imx93-phyboard-segin", "phytec,imx93-phycore-som",
                     "fsl,imx93";
 
+       aliases {
+               rtc0 = &i2c_rtc;
+               rtc1 = &bbnsm_rtc;
+       };
+
        chosen {
                stdout-path = &lpuart1;
        };
 
+       flexcan1_tc: can-phy0 {
+               compatible = "ti,tcan1043";
+               #phy-cells = <0>;
+               max-bitrate = <1000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_flexcan1_tc>;
+               enable-gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>;
+       };
+
+       reg_sound_1v8: regulator-sound-1v8 {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "VCC1V8_AUDIO";
+       };
+
+       reg_sound_3v3: regulator-sound-3v3 {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "VCC3V3_ANALOG";
+       };
+
        reg_usdhc2_vmmc: regulator-usdhc2 {
                compatible = "regulator-fixed";
                enable-active-high;
                regulator-max-microvolt = <3300000>;
                regulator-name = "VCC_SD";
        };
+
+       sound: sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "phyBOARD-Segin-TLV320AIC3007";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,bitclock-master = <&dailink_master>;
+               simple-audio-card,frame-master = <&dailink_master>;
+               simple-audio-card,widgets =
+                       "Line", "Line In",
+                       "Line", "Line Out",
+                       "Speaker", "Speaker";
+               simple-audio-card,routing =
+                       "Line Out", "LLOUT",
+                       "Line Out", "RLOUT",
+                       "Speaker", "SPOP",
+                       "Speaker", "SPOM",
+                       "LINE1L", "Line In",
+                       "LINE1R", "Line In";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai1>;
+               };
+
+               dailink_master: simple-audio-card,codec {
+                       sound-dai = <&audio_codec>;
+                       clocks = <&clk IMX93_CLK_SAI1>;
+               };
+       };
+};
+
+/* Ethernet */
+&eqos {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_eqos>;
+       phy-mode = "rmii";
+       phy-handle = <&ethphy2>;
+       assigned-clock-parents = <&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>,
+                                <&clk IMX93_CLK_SYS_PLL_PFD1_DIV2>;
+       assigned-clock-rates = <100000000>, <50000000>;
+       status = "okay";
+};
+
+&mdio {
+       ethphy2: ethernet-phy@2 {
+               compatible = "ethernet-phy-id0022.1561";
+               reg = <2>;
+               clocks = <&clk IMX93_CLK_ENET_REF_PHY>;
+               clock-names = "rmii-ref";
+               micrel,led-mode = <1>;
+       };
+};
+
+/* CAN */
+&flexcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       phys = <&flexcan1_tc>;
+       status = "okay";
+};
+
+/* I2C2 */
+&lpi2c2 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpi2c2>;
+       status = "okay";
+
+       /* Codec */
+       audio_codec: audio-codec@18 {
+               compatible = "ti,tlv320aic3007";
+               reg = <0x18>;
+               #sound-dai-cells = <0>;
+               AVDD-supply = <&reg_sound_3v3>;
+               IOVDD-supply = <&reg_sound_3v3>;
+               DRVDD-supply = <&reg_sound_3v3>;
+               DVDD-supply = <&reg_sound_1v8>;
+       };
+
+       /* RTC */
+       i2c_rtc: rtc@68 {
+               compatible = "microcrystal,rv4162";
+               reg = <0x68>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+       };
 };
 
 /* Console */
        status = "okay";
 };
 
-/* eMMC */
-&usdhc1 {
-       no-1-8-v;
+/* Audio */
+&sai1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai1>;
+       assigned-clocks = <&clk IMX93_CLK_SAI1>;
+       assigned-clock-parents = <&clk IMX93_CLK_AUDIO_PLL>;
+       assigned-clock-rates = <19200000>;
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+/* USB  */
+&usbotg1 {
+       disable-over-current;
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbotg2 {
+       disable-over-current;
+       dr_mode = "host";
+       status = "okay";
 };
 
 /* SD-Card */
        pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_cd>;
        bus-width = <4>;
        cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+       disable-wp;
        no-mmc;
        no-sdio;
        vmmc-supply = <&reg_usdhc2_vmmc>;
 };
 
 &iomuxc {
-       pinctrl_uart1: uart1grp {
+       pinctrl_eqos: eqosgrp {
                fsl,pins = <
-                       MX93_PAD_UART1_RXD__LPUART1_RX          0x31e
-                       MX93_PAD_UART1_TXD__LPUART1_TX          0x30e
+                       MX93_PAD_ENET1_TD2__CCM_ENET_QOS_CLOCK_GENERATE_REF_CLK 0x4000050e
+                       MX93_PAD_ENET1_RD0__ENET_QOS_RGMII_RD0          0x57e
+                       MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1          0x57e
+                       MX93_PAD_ENET1_TD0__ENET_QOS_RGMII_TD0          0x50e
+                       MX93_PAD_ENET1_TD1__ENET_QOS_RGMII_TD1          0x50e
+                       MX93_PAD_ENET1_RX_CTL__ENET_QOS_RGMII_RX_CTL    0x57e
+                       MX93_PAD_ENET1_TX_CTL__ENET_QOS_RGMII_TX_CTL    0x50e
+                       MX93_PAD_ENET1_RXC__ENET_QOS_RX_ER              0x57e
+               >;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX93_PAD_PDM_BIT_STREAM0__CAN1_RX       0x139e
+                       MX93_PAD_PDM_CLK__CAN1_TX               0x139e
+               >;
+       };
+
+       pinctrl_flexcan1_tc: flexcan1tcgrp {
+               fsl,pins = <
+                       MX93_PAD_ENET2_TD3__GPIO4_IO16          0x31e
+               >;
+       };
+
+       pinctrl_lpi2c2: lpi2c2grp {
+               fsl,pins = <
+                       MX93_PAD_I2C2_SCL__LPI2C2_SCL           0x40000b9e
+                       MX93_PAD_I2C2_SDA__LPI2C2_SDA           0x40000b9e
                >;
        };
 
                >;
        };
 
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <
+                       MX93_PAD_ENET2_RD2__GPIO4_IO26          0x31e
+               >;
+       };
+
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <
+                       MX93_PAD_UART2_RXD__SAI1_MCLK           0x1202
+                       MX93_PAD_SAI1_TXFS__SAI1_TX_SYNC        0x1202
+                       MX93_PAD_SAI1_TXC__SAI1_TX_BCLK         0x1202
+                       MX93_PAD_SAI1_TXD0__SAI1_TX_DATA00      0x1402
+                       MX93_PAD_SAI1_RXD0__SAI1_RX_DATA00      0x1402
+               >;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       MX93_PAD_UART1_RXD__LPUART1_RX          0x31e
+                       MX93_PAD_UART1_TXD__LPUART1_TX          0x30e
+               >;
+       };
+
        pinctrl_usdhc2_cd: usdhc2cdgrp {
                fsl,pins = <
                        MX93_PAD_SD2_CD_B__GPIO3_IO00           0x31e
                >;
        };
 
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
        pinctrl_usdhc2_default: usdhc2grp {
                fsl,pins = <
-                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x179e
-                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x139e
-                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x138e
-                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x138e
-                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x138e
-                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x139e
+                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x159e
+                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x4000139e
+                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x4000138e
+                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x4000138e
+                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x4000138e
+                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x4000139e
                        MX93_PAD_SD2_VSELECT__USDHC2_VSELECT    0x51e
                >;
        };
 
-       pinctrl_usdhc2_100mhz: usdhc2grp {
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
                fsl,pins = <
-                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x179e
-                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x139e
-                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x138e
-                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x138e
-                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x139e
-                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x139e
-                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT    0x51e
+                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x159e
+                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x4000139e
+                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x4000138e
+                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x4000138e
+                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x4000139e
+                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x4000139e
+                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT    0x51e
                >;
        };
 
-       pinctrl_usdhc2_200mhz: usdhc2grp {
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
                fsl,pins = <
-                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x178e
-                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x139e
-                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x139e
-                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x139e
-                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x139e
-                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x139e
-                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT    0x51e
+                       MX93_PAD_SD2_CLK__USDHC2_CLK            0x158e
+                       MX93_PAD_SD2_CMD__USDHC2_CMD            0x4000139e
+                       MX93_PAD_SD2_DATA0__USDHC2_DATA0        0x4000139e
+                       MX93_PAD_SD2_DATA1__USDHC2_DATA1        0x4000139e
+                       MX93_PAD_SD2_DATA2__USDHC2_DATA2        0x4000139e
+                       MX93_PAD_SD2_DATA3__USDHC2_DATA3        0x4000139e
+                       MX93_PAD_SD2_VSELECT__USDHC2_VSELECT    0x51e
                >;
        };
 };
index 88c2657b50e6c1379d249447dbd6cf76d0862b68..22dbcc89e31198ed1d47f55e1a278a46acaf4224 100644 (file)
        };
 };
 
+/* I2C3 */
+&lpi2c3 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpi2c3>;
+       status = "okay";
+
+       pmic@25 {
+               compatible = "nxp,pca9451a";
+               reg = <0x25>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pmic>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
+
+               regulators {
+                       buck1: BUCK1 {
+                               regulator-name = "VDD_SOC";
+                               regulator-min-microvolt = <610000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               regulator-ramp-delay = <3125>;
+                       };
+
+                       buck2: BUCK2 {
+                               regulator-name = "VDDQ_0V6";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <600000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck4: BUCK4 {
+                               regulator-name = "VDD_3V3_BUCK";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck5: BUCK5 {
+                               regulator-name = "VDD_1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck6: BUCK6 {
+                               regulator-name = "VDD_1V1";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo1: LDO1 {
+                               regulator-name = "PMIC_SNVS_1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo4: LDO4 {
+                               regulator-name = "VDD_0V8";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo5: LDO5 {
+                               regulator-name = "NVCC_SD2";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+
+       /* EEPROM */
+       eeprom@50 {
+               compatible = "atmel,24c32";
+               reg = <0x50>;
+               pagesize = <32>;
+               vcc-supply = <&buck4>;
+       };
+};
+
 /* eMMC */
 &usdhc1 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
        bus-width = <8>;
        non-removable;
+       no-1-8-v;
        status = "okay";
 };
 
 
        pinctrl_leds: ledsgrp {
                fsl,pins = <
-                       MX93_PAD_I2C1_SDA__GPIO1_IO01           0x31e
+                       MX93_PAD_I2C1_SDA__GPIO1_IO01           0x11e
                >;
        };
 
+       pinctrl_lpi2c3: lpi2c3grp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO28__LPI2C3_SDA          0x40000b9e
+                       MX93_PAD_GPIO_IO29__LPI2C3_SCL          0x40000b9e
+               >;
+       };
+
+       pinctrl_pmic: pmicgrp {
+               fsl,pins = <
+                       MX93_PAD_ENET2_RD3__GPIO4_IO27          0x31e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
        pinctrl_usdhc1: usdhc1grp {
                fsl,pins = <
                        MX93_PAD_SD1_CLK__USDHC1_CLK            0x179e
-                       MX93_PAD_SD1_CMD__USDHC1_CMD            0x1386
-                       MX93_PAD_SD1_DATA0__USDHC1_DATA0        0x138e
-                       MX93_PAD_SD1_DATA1__USDHC1_DATA1        0x1386
-                       MX93_PAD_SD1_DATA2__USDHC1_DATA2        0x138e
-                       MX93_PAD_SD1_DATA3__USDHC1_DATA3        0x1386
-                       MX93_PAD_SD1_DATA4__USDHC1_DATA4        0x1386
-                       MX93_PAD_SD1_DATA5__USDHC1_DATA5        0x1386
-                       MX93_PAD_SD1_DATA6__USDHC1_DATA6        0x1386
-                       MX93_PAD_SD1_DATA7__USDHC1_DATA7        0x1386
+                       MX93_PAD_SD1_CMD__USDHC1_CMD            0x40001386
+                       MX93_PAD_SD1_DATA0__USDHC1_DATA0        0x4000138e
+                       MX93_PAD_SD1_DATA1__USDHC1_DATA1        0x40001386
+                       MX93_PAD_SD1_DATA2__USDHC1_DATA2        0x4000138e
+                       MX93_PAD_SD1_DATA3__USDHC1_DATA3        0x40001386
+                       MX93_PAD_SD1_DATA4__USDHC1_DATA4        0x40001386
+                       MX93_PAD_SD1_DATA5__USDHC1_DATA5        0x40001386
+                       MX93_PAD_SD1_DATA6__USDHC1_DATA6        0x40001386
+                       MX93_PAD_SD1_DATA7__USDHC1_DATA7        0x40001386
+                       MX93_PAD_SD1_STROBE__USDHC1_STROBE      0x179e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD1_CLK__USDHC1_CLK            0x17be
+                       MX93_PAD_SD1_CMD__USDHC1_CMD            0x4000139e
+                       MX93_PAD_SD1_DATA0__USDHC1_DATA0        0x4000138e
+                       MX93_PAD_SD1_DATA1__USDHC1_DATA1        0x4000139e
+                       MX93_PAD_SD1_DATA2__USDHC1_DATA2        0x400013be
+                       MX93_PAD_SD1_DATA3__USDHC1_DATA3        0x4000139e
+                       MX93_PAD_SD1_DATA4__USDHC1_DATA4        0x4000139e
+                       MX93_PAD_SD1_DATA5__USDHC1_DATA5        0x4000139e
+                       MX93_PAD_SD1_DATA6__USDHC1_DATA6        0x4000139e
+                       MX93_PAD_SD1_DATA7__USDHC1_DATA7        0x4000139e
+                       MX93_PAD_SD1_STROBE__USDHC1_STROBE      0x179e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD1_CLK__USDHC1_CLK            0x17be
+                       MX93_PAD_SD1_CMD__USDHC1_CMD            0x4000139e
+                       MX93_PAD_SD1_DATA0__USDHC1_DATA0        0x4000139e
+                       MX93_PAD_SD1_DATA1__USDHC1_DATA1        0x400013be
+                       MX93_PAD_SD1_DATA2__USDHC1_DATA2        0x400013be
+                       MX93_PAD_SD1_DATA3__USDHC1_DATA3        0x400013be
+                       MX93_PAD_SD1_DATA4__USDHC1_DATA4        0x400013be
+                       MX93_PAD_SD1_DATA5__USDHC1_DATA5        0x400013be
+                       MX93_PAD_SD1_DATA6__USDHC1_DATA6        0x400013be
+                       MX93_PAD_SD1_DATA7__USDHC1_DATA7        0x400013be
                        MX93_PAD_SD1_STROBE__USDHC1_STROBE      0x179e
                >;
        };
diff --git a/src/arm64/freescale/imx93-tqma9352-mba91xxca.dts b/src/arm64/freescale/imx93-tqma9352-mba91xxca.dts
new file mode 100644 (file)
index 0000000..9dbf41c
--- /dev/null
@@ -0,0 +1,749 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2022-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Markus Niebel
+ * Author: Alexander Stein
+ */
+/dts-v1/;
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/usb/pd.h>
+#include "imx93-tqma9352.dtsi"
+
+/{
+       model = "TQ-Systems i.MX93 TQMa93xxLA/TQMa93xxCA on MBa91xxCA starter kit";
+       compatible = "tq,imx93-tqma9352-mba91xxca", "tq,imx93-tqma9352", "fsl,imx93";
+       chassis-type = "embedded";
+
+       chosen {
+               stdout-path = &lpuart1;
+       };
+
+       aliases {
+               eeprom0 = &eeprom0;
+               ethernet0 = &eqos;
+               ethernet1 = &fec;
+               rtc0 = &pcf85063;
+               rtc1 = &bbnsm_rtc;
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&tpm2 2 5000000 0>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+               power-supply = <&reg_12v0>;
+               enable-gpios = <&expander2 2 GPIO_ACTIVE_HIGH>;
+               status = "disabled";
+       };
+
+       display: display {
+               /*
+                * Display is not fixed, so compatible has to be added from
+                * DT overlay
+                */
+               power-supply = <&reg_3v3>;
+               enable-gpios = <&expander2 1 GPIO_ACTIVE_HIGH>;
+               backlight = <&backlight>;
+               status = "disabled";
+
+               port {
+                       panel_in: endpoint {
+                       };
+               };
+       };
+
+       fan0: gpio-fan {
+               compatible = "gpio-fan";
+               gpios = <&expander2 4 GPIO_ACTIVE_HIGH>;
+               gpio-fan,speed-map = <0 0>, <10000 1>;
+               fan-supply = <&reg_12v0>;
+               #cooling-cells = <2>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+
+               switch-a {
+                       label = "switcha";
+                       linux,code = <BTN_0>;
+                       gpios = <&expander0 6 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+
+               switch-b {
+                       label = "switchb";
+                       linux,code = <BTN_1>;
+                       gpios = <&expander0 7 GPIO_ACTIVE_LOW>;
+                       wakeup-source;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               led-1 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_STATUS;
+                       gpios = <&expander2 6 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "default-on";
+               };
+
+               led-2 {
+                       color = <LED_COLOR_ID_AMBER>;
+                       function = LED_FUNCTION_HEARTBEAT;
+                       gpios = <&expander2 7 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       iio-hwmon {
+               compatible = "iio-hwmon";
+               io-channels = <&adc1 0>, <&adc1 1>, <&adc1 2>, <&adc1 3>;
+       };
+
+       lvds_encoder: lvds-encoder {
+               compatible = "ti,sn75lvds83", "lvds-encoder";
+               powerdown-gpios = <&expander2 3 GPIO_ACTIVE_LOW>;
+               power-supply = <&reg_3v3>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               lvds_encoder_input: endpoint {
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               lvds_encoder_output: endpoint {
+                               };
+                       };
+               };
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "V_3V3_MB";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+
+       reg_5v0: regulator-5v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "V_5V0_MB";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       reg_12v0: regulator-12v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "V_12V";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               gpio = <&expander1 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_mpcie_1v5: regulator-mpcie-1v5 {
+               compatible = "regulator-fixed";
+               regulator-name = "V_1V5_MPCIE";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               gpio = <&expander0 2 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       reg_mpcie_3v3: regulator-mpcie-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "V_3V3_MPCIE";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&expander0 3 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+       };
+
+       thermal-zones {
+               cpu-thermal {
+                       trips {
+                               cpu_active: trip-active0 {
+                                       temperature = <40000>;
+                                       hysteresis = <5000>;
+                                       type = "active";
+                               };
+                       };
+
+                       cooling-maps {
+                               map1 {
+                                       trip = <&cpu_active>;
+                                       cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+};
+
+&adc1 {
+       status = "okay";
+};
+
+&eqos {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_eqos>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy_eqos>;
+       status = "okay";
+
+       mdio {
+               compatible = "snps,dwmac-mdio";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy_eqos: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_eqos_phy>;
+                       reset-gpios = <&expander1 0 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <500000>;
+                       reset-deassert-us = <50000>;
+                       interrupt-parent = <&gpio3>;
+                       interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
+                       enet-phy-lane-no-swap;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
+                       ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       ti,dp83867-rxctrl-strap-quirk;
+                       ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+               };
+       };
+};
+
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy_fec>;
+       fsl,magic-packet;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-frequency = <5000000>;
+
+               ethphy_fec: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_fec_phy>;
+                       reset-gpios = <&expander1 1 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <500000>;
+                       reset-deassert-us = <50000>;
+                       interrupt-parent = <&gpio3>;
+                       interrupts = <27 IRQ_TYPE_EDGE_FALLING>;
+                       enet-phy-lane-no-swap;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
+                       ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       ti,dp83867-rxctrl-strap-quirk;
+                       ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+               };
+       };
+};
+
+&flexcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       xceiver-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+&gpio1 {
+       gpio-line-names =
+               /* 00 */ "", "", "", "PMIC_IRQ#",
+               /* 04 */ "", "", "", "",
+               /* 08 */ "", "", "USB_C_ALERT#", "BM2_LCD_INT#",
+               /* 12 */ "PEX_INT#", "", "RTC_EVENT#", "",
+               /* 16 */ "", "", "", "",
+               /* 20 */ "", "", "", "",
+               /* 24 */ "", "", "", "",
+               /* 28 */ "", "", "", "";
+};
+
+&gpio2 {
+       gpio-line-names =
+               /* 00 */ "", "", "", "",
+               /* 04 */ "", "", "", "",
+               /* 08 */ "", "", "", "",
+               /* 12 */ "", "", "", "",
+               /* 16 */ "", "", "", "",
+               /* 20 */ "", "", "", "",
+               /* 24 */ "", "", "", "",
+               /* 28 */ "", "", "", "";
+};
+
+&gpio3 {
+       gpio-line-names =
+               /* 00 */ "SD2_CD#", "", "", "",
+               /* 04 */ "", "", "", "SD2_RST#",
+               /* 08 */ "", "", "", "",
+               /* 12 */ "", "", "", "",
+               /* 16 */ "", "", "", "",
+               /* 20 */ "", "", "", "",
+               /* 24 */ "", "", "ENET1_INT#", "ENET2_INT#",
+               /* 28 */ "", "", "", "";
+};
+
+&gpio4 {
+       gpio-line-names =
+               /* 00 */ "", "", "", "",
+               /* 04 */ "", "", "", "",
+               /* 08 */ "", "", "", "",
+               /* 12 */ "", "", "", "",
+               /* 16 */ "", "", "", "",
+               /* 20 */ "", "", "", "",
+               /* 24 */ "", "", "", "",
+               /* 28 */ "", "", "", "";
+};
+
+&lpi2c3 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_lpi2c3>;
+       pinctrl-1 = <&pinctrl_lpi2c3>;
+       status = "okay";
+
+       temperature-sensor@1c {
+               compatible = "nxp,se97b", "jedec,jc-42.4-temp";
+               reg = <0x1c>;
+       };
+
+       ptn5110: usb-typec@50 {
+               compatible = "nxp,ptn5110", "tcpci";
+               reg = <0x50>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_typec>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <10 IRQ_TYPE_EDGE_FALLING>;
+
+               connector {
+                       compatible = "usb-c-connector";
+                       label = "X17";
+                       power-role = "dual";
+                       data-role = "dual";
+                       try-power-role = "sink";
+                       typec-power-opmode = "default";
+                       pd-disable;
+                       self-powered;
+
+                       port {
+                               typec_con_hs: endpoint {
+                                       remote-endpoint = <&typec_hs>;
+                               };
+                       };
+               };
+       };
+
+       eeprom2: eeprom@54 {
+               compatible = "nxp,se97b", "atmel,24c02";
+               reg = <0x54>;
+               pagesize = <16>;
+               vcc-supply = <&reg_3v3>;
+       };
+
+       expander0: gpio@70 {
+               compatible = "nxp,pca9538";
+               reg = <0x70>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pexp_irq>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
+               vcc-supply = <&reg_3v3>;
+               gpio-line-names = "TEMP_EVENT_MOD#", "MPCIE_WAKE#",
+                                 "MPCIE_1V5_EN", "MPCIE_3V3_EN",
+                                 "MPCIE_PERST#", "MPCIE_WDISABLE#",
+                                 "BUTTON_A#", "BUTTON_B#";
+
+               temp-event-mod-hog {
+                       gpio-hog;
+                       gpios = <0 GPIO_ACTIVE_LOW>;
+                       input;
+                       line-name = "TEMP_EVENT_MOD#";
+               };
+
+               mpcie-wake-hog {
+                       gpio-hog;
+                       gpios = <1 GPIO_ACTIVE_LOW>;
+                       input;
+                       line-name = "MPCIE_WAKE#";
+               };
+
+               /*
+                * Controls the mPCIE slot reset which is low active as
+                * reset signal. The output-low states, the signal is
+                * inactive, e.g. not in reset
+                */
+               mpcie_rst_hog: mpcie-rst-hog {
+                       gpio-hog;
+                       gpios = <4 GPIO_ACTIVE_LOW>;
+                       output-low;
+                       line-name = "MPCIE_PERST#";
+               };
+
+               /*
+                * Controls the mPCIE slot WDISABLE pin which is low active
+                * as disable signal. The output-low states, the signal is
+                * inactive, e.g. not disabled
+                */
+               mpcie_wdisable_hog: mpcie-wdisable-hog {
+                       gpio-hog;
+                       gpios = <5 GPIO_ACTIVE_LOW>;
+                       output-low;
+                       line-name = "MPCIE_WDISABLE#";
+               };
+       };
+
+       expander1: gpio@71 {
+               compatible = "nxp,pca9538";
+               reg = <0x71>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               vcc-supply = <&reg_3v3>;
+               gpio-line-names = "ENET1_RESET#", "ENET2_RESET#",
+                                 "USB_RESET#", "",
+                                 "WLAN_PD#", "WLAN_W_DISABLE#",
+                                 "WLAN_PERST#", "12V_EN";
+
+               /*
+                * Controls the WiFi card PD pin which is low active
+                * as power down signal. The output-low states, the signal
+                * is inactive, e.g. not power down
+                */
+               wlan-pd-hog {
+                       gpio-hog;
+                       gpios = <4 GPIO_ACTIVE_LOW>;
+                       output-low;
+                       line-name = "WLAN_PD#";
+               };
+
+               /*
+                * Controls the WiFi card disable pin which is low active
+                * as disable signal. The output-low states, the signal
+                * is inactive, e.g. not disabled
+                */
+               wlan-wdisable-hog {
+                       gpio-hog;
+                       gpios = <5 GPIO_ACTIVE_LOW>;
+                       output-low;
+                       line-name = "WLAN_W_DISABLE#";
+               };
+
+               /*
+                * Controls the WiFi card reset pin which is low active
+                * as reset signal. The output-low states, the signal
+                * is inactive, e.g. not in reset
+                */
+               wlan-perst-hog {
+                       gpio-hog;
+                       gpios = <6 GPIO_ACTIVE_LOW>;
+                       output-low;
+                       line-name = "WLAN_PERST#";
+               };
+       };
+
+       expander2: gpio@72 {
+               compatible = "nxp,pca9538";
+               reg = <0x72>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               vcc-supply = <&reg_3v3>;
+               gpio-line-names = "LCD_RESET#", "LCD_PWR_EN",
+                                 "LCD_BLT_EN", "LVDS_SHDN#",
+                                 "FAN_PWR_EN", "",
+                                 "USER_LED1", "USER_LED2";
+       };
+};
+
+&lpuart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       status = "okay";
+};
+
+&lpuart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2>;
+       linux,rs485-enabled-at-boot-time;
+       status = "okay";
+};
+
+&pcf85063 {
+       /* RTC_EVENT# from SoM is connected on mainboard */
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcf85063>;
+       interrupt-parent = <&gpio1>;
+       interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
+};
+
+&se97_som {
+       /* TEMP_EVENT# from SoM is connected on mainboard */
+       interrupt-parent = <&expander0>;
+       interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+};
+
+&tpm2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tpm2>;
+       status = "okay";
+};
+
+&usbotg1 {
+       dr_mode = "otg";
+       hnp-disable;
+       srp-disable;
+       adp-disable;
+       usb-role-switch;
+       disable-over-current;
+       samsung,picophy-pre-emp-curr-control = <3>;
+       samsung,picophy-dc-vol-level-adjust = <7>;
+       status = "okay";
+
+       port {
+               typec_hs: endpoint {
+                       remote-endpoint = <&typec_con_hs>;
+               };
+       };
+};
+
+&usbotg2 {
+       dr_mode = "host";
+       #address-cells = <1>;
+       #size-cells = <0>;
+       disable-over-current;
+       samsung,picophy-pre-emp-curr-control = <3>;
+       samsung,picophy-dc-vol-level-adjust = <7>;
+       status = "okay";
+
+       hub_2_0: hub@1 {
+               compatible = "usb424,2517";
+               reg = <1>;
+               reset-gpios = <&expander1 2 GPIO_ACTIVE_LOW>;
+               vdd-supply = <&reg_3v3>;
+       };
+};
+
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2_hs>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc2_uhs>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc2_uhs>, <&pinctrl_usdhc2_gpio>;
+       cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       bus-width = <4>;
+       no-sdio;
+       no-mmc;
+       disable-wp;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_eqos: eqosgrp {
+               fsl,pins = /* PD | FSEL_2 | DSE X4 */
+                          <MX93_PAD_ENET1_MDC__ENET_QOS_MDC                            0x51e>,
+                          /* SION | HYS | ODE | FSEL_2 | DSE X4 */
+                          <MX93_PAD_ENET1_MDIO__ENET_QOS_MDIO                          0x4000111e>,
+                          /* HYS | FSEL_0 | DSE no drive */
+                          <MX93_PAD_ENET1_RD0__ENET_QOS_RGMII_RD0                      0x1000>,
+                          <MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1                      0x1000>,
+                          <MX93_PAD_ENET1_RD2__ENET_QOS_RGMII_RD2                      0x1000>,
+                          <MX93_PAD_ENET1_RD3__ENET_QOS_RGMII_RD3                      0x1000>,
+                          <MX93_PAD_ENET1_RX_CTL__ENET_QOS_RGMII_RX_CTL                0x1000>,
+                          /* HYS | PD | FSEL_0 | DSE no drive */
+                          <MX93_PAD_ENET1_RXC__CCM_ENET_QOS_CLOCK_GENERATE_RX_CLK      0x1400>,
+                          /* PD | FSEL_2 | DSE X4 */
+                          <MX93_PAD_ENET1_TD0__ENET_QOS_RGMII_TD0                      0x51e>,
+                          <MX93_PAD_ENET1_TD1__ENET_QOS_RGMII_TD1                      0x51e>,
+                          <MX93_PAD_ENET1_TD2__ENET_QOS_RGMII_TD2                      0x51e>,
+                          <MX93_PAD_ENET1_TD3__ENET_QOS_RGMII_TD3                      0x51e>,
+                          <MX93_PAD_ENET1_TX_CTL__ENET_QOS_RGMII_TX_CTL                0x51e>,
+                          /* PD | FSEL_3 | DSE X3 */
+                          <MX93_PAD_ENET1_TXC__CCM_ENET_QOS_CLOCK_GENERATE_TX_CLK      0x58e>;
+       };
+
+       pinctrl_eqos_phy: eqosphygrp {
+               fsl,pins = /* HYS | FSEL_0 | DSE no drive */
+                          <MX93_PAD_CCM_CLKO1__GPIO3_IO26                      0x1000>;
+       };
+
+       pinctrl_fec: fecgrp {
+               fsl,pins = /* PD | FSEL_2 | DSE X4 */
+                          <MX93_PAD_ENET2_MDC__ENET1_MDC                       0x51e>,
+                          /* SION | HYS | ODE | FSEL_2 | DSE X4 */
+                          <MX93_PAD_ENET2_MDIO__ENET1_MDIO                     0x4000111e>,
+                          /* HYS | FSEL_0 | DSE no drive */
+                          <MX93_PAD_ENET2_RD0__ENET1_RGMII_RD0                 0x1000>,
+                          <MX93_PAD_ENET2_RD1__ENET1_RGMII_RD1                 0x1000>,
+                          <MX93_PAD_ENET2_RD2__ENET1_RGMII_RD2                 0x1000>,
+                          <MX93_PAD_ENET2_RD3__ENET1_RGMII_RD3                 0x1000>,
+                          <MX93_PAD_ENET2_RX_CTL__ENET1_RGMII_RX_CTL           0x1000>,
+                          /* HYS | PD | FSEL_0 | DSE no drive */
+                          <MX93_PAD_ENET2_RXC__ENET1_RGMII_RXC                 0x1400>,
+                          /* PD | FSEL_2 | DSE X4 */
+                          <MX93_PAD_ENET2_TD0__ENET1_RGMII_TD0                 0x51e>,
+                          <MX93_PAD_ENET2_TD1__ENET1_RGMII_TD1                 0x51e>,
+                          <MX93_PAD_ENET2_TD2__ENET1_RGMII_TD2                 0x51e>,
+                          <MX93_PAD_ENET2_TD3__ENET1_RGMII_TD3                 0x51e>,
+                          <MX93_PAD_ENET2_TX_CTL__ENET1_RGMII_TX_CTL           0x51e>,
+                          /* PD | FSEL_3 | DSE X3 */
+                          <MX93_PAD_ENET2_TXC__ENET1_RGMII_TXC                 0x58e>;
+       };
+
+       pinctrl_fec_phy: fecphygrp {
+               fsl,pins = /* HYS | FSEL_0 | DSE no drive */
+                          <MX93_PAD_CCM_CLKO2__GPIO3_IO27                      0x1000>;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = /* HYS | PU | FSEL_0 | DSE no drive */
+                          <MX93_PAD_PDM_BIT_STREAM0__CAN1_RX           0x1200>,
+                          /* PU | FSEL_3 | DSE X4 */
+                          <MX93_PAD_PDM_CLK__CAN1_TX                   0x039e>;
+       };
+
+       pinctrl_jtag: jtaggrp {
+               fsl,pins = <MX93_PAD_DAP_TCLK_SWCLK__JTAG_MUX_TCK       0x051e>,
+                          <MX93_PAD_DAP_TDI__JTAG_MUX_TDI              0x1200>,
+                          <MX93_PAD_DAP_TDO_TRACESWO__JTAG_MUX_TDO     0x031e>,
+                          <MX93_PAD_DAP_TMS_SWDIO__JTAG_MUX_TMS        0x1200>;
+       };
+
+       pinctrl_lpi2c3: lpi2c3grp {
+               fsl,pins = /* SION | HYS | OD | FSEL_3 | DSE X4 */
+                          <MX93_PAD_GPIO_IO28__LPI2C3_SDA              0x4000199e>,
+                          <MX93_PAD_GPIO_IO29__LPI2C3_SCL              0x4000199e>;
+       };
+
+       pinctrl_pcf85063: pcf85063grp {
+               fsl,pins = <MX93_PAD_SAI1_RXD0__GPIO1_IO14              0x1000>;
+       };
+
+       pinctrl_pexp_irq: pexpirqgrp {
+               fsl,pins = /* HYS | FSEL_0 | No DSE */
+                          <MX93_PAD_SAI1_TXC__GPIO1_IO12               0x1000>;
+       };
+
+       pinctrl_rgbdisp: rgbdispgrp {
+               fsl,pins = <MX93_PAD_GPIO_IO00__MEDIAMIX_DISP_CLK       0x31e>,
+                          <MX93_PAD_GPIO_IO01__MEDIAMIX_DISP_DE        0x31e>,
+                          <MX93_PAD_GPIO_IO02__MEDIAMIX_DISP_VSYNC     0x31e>,
+                          <MX93_PAD_GPIO_IO03__MEDIAMIX_DISP_HSYNC     0x31e>,
+                          <MX93_PAD_GPIO_IO04__MEDIAMIX_DISP_DATA00    0x31e>,
+                          <MX93_PAD_GPIO_IO05__MEDIAMIX_DISP_DATA01    0x31e>,
+                          <MX93_PAD_GPIO_IO06__MEDIAMIX_DISP_DATA02    0x31e>,
+                          <MX93_PAD_GPIO_IO07__MEDIAMIX_DISP_DATA03    0x31e>,
+                          <MX93_PAD_GPIO_IO08__MEDIAMIX_DISP_DATA04    0x31e>,
+                          <MX93_PAD_GPIO_IO09__MEDIAMIX_DISP_DATA05    0x31e>,
+                          <MX93_PAD_GPIO_IO10__MEDIAMIX_DISP_DATA06    0x31e>,
+                          <MX93_PAD_GPIO_IO11__MEDIAMIX_DISP_DATA07    0x31e>,
+                          <MX93_PAD_GPIO_IO12__MEDIAMIX_DISP_DATA08    0x31e>,
+                          <MX93_PAD_GPIO_IO13__MEDIAMIX_DISP_DATA09    0x31e>,
+                          <MX93_PAD_GPIO_IO14__MEDIAMIX_DISP_DATA10    0x31e>,
+                          <MX93_PAD_GPIO_IO15__MEDIAMIX_DISP_DATA11    0x31e>,
+                          <MX93_PAD_GPIO_IO16__MEDIAMIX_DISP_DATA12    0x31e>,
+                          <MX93_PAD_GPIO_IO17__MEDIAMIX_DISP_DATA13    0x31e>,
+                          <MX93_PAD_GPIO_IO18__MEDIAMIX_DISP_DATA14    0x31e>,
+                          <MX93_PAD_GPIO_IO19__MEDIAMIX_DISP_DATA15    0x31e>,
+                          <MX93_PAD_GPIO_IO20__MEDIAMIX_DISP_DATA16    0x31e>,
+                          <MX93_PAD_GPIO_IO21__MEDIAMIX_DISP_DATA17    0x31e>,
+                          <MX93_PAD_GPIO_IO22__MEDIAMIX_DISP_DATA18    0x31e>,
+                          <MX93_PAD_GPIO_IO23__MEDIAMIX_DISP_DATA19    0x31e>,
+                          <MX93_PAD_GPIO_IO24__MEDIAMIX_DISP_DATA20    0x31e>,
+                          <MX93_PAD_GPIO_IO25__MEDIAMIX_DISP_DATA21    0x31e>,
+                          <MX93_PAD_GPIO_IO26__MEDIAMIX_DISP_DATA22    0x31e>,
+                          <MX93_PAD_GPIO_IO27__MEDIAMIX_DISP_DATA23    0x31e>;
+       };
+
+       pinctrl_touch: touchgrp {
+               fsl,pins = /* HYS | FSEL_0 | No DSE */
+                          <MX93_PAD_SAI1_TXFS__GPIO1_IO11              0x1000>;
+       };
+
+       pinctrl_tpm2: tpm2grp {
+               fsl,pins = <MX93_PAD_I2C2_SCL__TPM2_CH2                 0x57e>;
+       };
+
+       pinctrl_typec: typecgrp {
+               fsl,pins = /* HYS | FSEL_0 | No DSE */
+                          <MX93_PAD_PDM_BIT_STREAM1__GPIO1_IO10        0x1000>;
+       };
+
+       pinctrl_uart1: uart1grp {
+               fsl,pins = /* HYS | FSEL_0 | No DSE */
+                          <MX93_PAD_UART1_RXD__LPUART1_RX              0x1000>,
+                          /* FSEL_2 | DSE X4 */
+                          <MX93_PAD_UART1_TXD__LPUART1_TX              0x011e>;
+       };
+
+       pinctrl_uart2: uart2grp {
+               fsl,pins = /* HYS | FSEL_0 | No DSE */
+                          <MX93_PAD_UART2_RXD__LPUART2_RX              0x1000>,
+                          /* FSEL_2 | DSE X4 */
+                          <MX93_PAD_UART2_TXD__LPUART2_TX              0x011e>,
+                          /* FSEL_2 | DSE X4 */
+                          <MX93_PAD_SAI1_TXD0__LPUART2_RTS_B           0x011e>;
+       };
+
+       pinctrl_usdhc2_gpio: usdhc2gpiogrp {
+               fsl,pins = /* HYS | FSEL_0 | No DSE */
+                          <MX93_PAD_SD2_CD_B__GPIO3_IO00               0x1000>;
+       };
+
+       /* enable SION for data and cmd pad due to ERR052021 */
+       pinctrl_usdhc2_hs: usdhc2hsgrp {
+               fsl,pins = /* PD | FSEL_3 | DSE X5 */
+                          <MX93_PAD_SD2_CLK__USDHC2_CLK                0x05be>,
+                          /* HYS | PU | FSEL_3 | DSE X4 */
+                          <MX93_PAD_SD2_CMD__USDHC2_CMD                0x4000139e>,
+                          /* HYS | PU | FSEL_3 | DSE X3 */
+                          <MX93_PAD_SD2_DATA0__USDHC2_DATA0            0x4000138e>,
+                          <MX93_PAD_SD2_DATA1__USDHC2_DATA1            0x4000138e>,
+                          <MX93_PAD_SD2_DATA2__USDHC2_DATA2            0x4000138e>,
+                          <MX93_PAD_SD2_DATA3__USDHC2_DATA3            0x4000138e>,
+                          /* FSEL_2 | DSE X3 */
+                          <MX93_PAD_SD2_VSELECT__USDHC2_VSELECT        0x010e>;
+       };
+
+       /* enable SION for data and cmd pad due to ERR052021 */
+       pinctrl_usdhc2_uhs: usdhc2uhsgrp {
+               fsl,pins = /* PD | FSEL_3 | DSE X6 */
+                          <MX93_PAD_SD2_CLK__USDHC2_CLK                0x05fe>,
+                          /* HYS | PU | FSEL_3 | DSE X4 */
+                          <MX93_PAD_SD2_CMD__USDHC2_CMD                0x4000139e>,
+                          <MX93_PAD_SD2_DATA0__USDHC2_DATA0            0x4000139e>,
+                          <MX93_PAD_SD2_DATA1__USDHC2_DATA1            0x4000139e>,
+                          <MX93_PAD_SD2_DATA2__USDHC2_DATA2            0x4000139e>,
+                          <MX93_PAD_SD2_DATA3__USDHC2_DATA3            0x4000139e>,
+                          /* FSEL_2 | DSE X3 */
+                          <MX93_PAD_SD2_VSELECT__USDHC2_VSELECT        0x010e>;
+       };
+};
index ebbac5f8d2b2ddda614e023909baeaadf0c25fed..137b8ed242a2beabb4cb661fefac8735b0693a5d 100644 (file)
                fsl,pins = <
                        /* PD | FSEL_2 | DSE X4 */
                        MX93_PAD_ENET1_MDC__ENET_QOS_MDC                        0x51e
-                       /* SION | HYS | ODE | FSEL_2 | DSE X4 */
-                       MX93_PAD_ENET1_MDIO__ENET_QOS_MDIO                      0x4000191e
+                       /* SION | HYS | FSEL_2 | DSE X4 */
+                       MX93_PAD_ENET1_MDIO__ENET_QOS_MDIO                      0x4000111e
                        /* HYS | FSEL_0 | DSE no drive */
                        MX93_PAD_ENET1_RD0__ENET_QOS_RGMII_RD0                  0x1000
                        MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1                  0x1000
                fsl,pins = <
                        /* PD | FSEL_2 | DSE X4 */
                        MX93_PAD_ENET2_MDC__ENET1_MDC                   0x51e
-                       /* SION | HYS | ODE | FSEL_2 | DSE X4 */
-                       MX93_PAD_ENET2_MDIO__ENET1_MDIO                 0x4000191e
+                       /* SION | HYS | FSEL_2 | DSE X4 */
+                       MX93_PAD_ENET2_MDIO__ENET1_MDIO                 0x4000111e
                        /* HYS | FSEL_0 | DSE no drive */
                        MX93_PAD_ENET2_RD0__ENET1_RGMII_RD0             0x1000
                        MX93_PAD_ENET2_RD1__ENET1_RGMII_RD1             0x1000
index 9e88c42c3d170dbc70a21e4ac50f0c845f7276e5..219f49a4f87f0eed7db1256f56d9404d47966895 100644 (file)
                fsl,pins = <
                        /* PD | FSEL_2 | DSE X4 */
                        MX93_PAD_ENET1_MDC__ENET_QOS_MDC                        0x51e
-                       /* SION | HYS | ODE | FSEL_2 | DSE X4 */
-                       MX93_PAD_ENET1_MDIO__ENET_QOS_MDIO                      0x4000191e
+                       /* SION | HYS | FSEL_2 | DSE X4 */
+                       MX93_PAD_ENET1_MDIO__ENET_QOS_MDIO                      0x4000111e
                        /* HYS | FSEL_0 | DSE no drive */
                        MX93_PAD_ENET1_RD0__ENET_QOS_RGMII_RD0                  0x1000
                        MX93_PAD_ENET1_RD1__ENET_QOS_RGMII_RD1                  0x1000
                fsl,pins = <
                        /* PD | FSEL_2 | DSE X4 */
                        MX93_PAD_ENET2_MDC__ENET1_MDC                   0x51e
-                       /* SION | HYS | ODE | FSEL_2 | DSE X4 */
-                       MX93_PAD_ENET2_MDIO__ENET1_MDIO                 0x4000191e
+                       /* SION | HYS | FSEL_2 | DSE X4 */
+                       MX93_PAD_ENET2_MDIO__ENET1_MDIO                 0x4000111e
                        /* HYS | FSEL_0 | DSE no drive */
                        MX93_PAD_ENET2_RD0__ENET1_RGMII_RD0             0x1000
                        MX93_PAD_ENET2_RD1__ENET1_RGMII_RD1             0x1000
diff --git a/src/arm64/freescale/imx94-clock.h b/src/arm64/freescale/imx94-clock.h
new file mode 100644 (file)
index 0000000..27e8c08
--- /dev/null
@@ -0,0 +1,193 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
+/*
+ * Copyright 2024-2025 NXP
+ */
+
+#ifndef __IMX94_CLOCK_H
+#define __IMX94_CLOCK_H
+
+#define IMX94_CLK_EXT                          0
+#define IMX94_CLK_32K                          1
+#define IMX94_CLK_24M                          2
+#define IMX94_CLK_FRO                          3
+#define IMX94_CLK_SYSPLL1_VCO                  4
+#define IMX94_CLK_SYSPLL1_PFD0_UNGATED         5
+#define IMX94_CLK_SYSPLL1_PFD0                 6
+#define IMX94_CLK_SYSPLL1_PFD0_DIV2            7
+#define IMX94_CLK_SYSPLL1_PFD1_UNGATED         8
+#define IMX94_CLK_SYSPLL1_PFD1                 9
+#define IMX94_CLK_SYSPLL1_PFD1_DIV2            10
+#define IMX94_CLK_SYSPLL1_PFD2_UNGATED         11
+#define IMX94_CLK_SYSPLL1_PFD2                 12
+#define IMX94_CLK_SYSPLL1_PFD2_DIV2            13
+#define IMX94_CLK_AUDIOPLL1_VCO                        14
+#define IMX94_CLK_AUDIOPLL1                    15
+#define IMX94_CLK_AUDIOPLL2_VCO                        16
+#define IMX94_CLK_AUDIOPLL2                    17
+#define IMX94_CLK_RESERVED18                   18
+#define IMX94_CLK_RESERVED19                   19
+#define IMX94_CLK_RESERVED20                   20
+#define IMX94_CLK_RESERVED21                   21
+#define IMX94_CLK_RESERVED22                   22
+#define IMX94_CLK_RESERVED23                   23
+#define IMX94_CLK_ENCPLL_VCO                   24
+#define IMX94_CLK_ENCPLL_PFD0_UNGATED          25
+#define IMX94_CLK_ENCPLL_PFD0                  26
+#define IMX94_CLK_ENCPLL_PFD1_UNGATED          27
+#define IMX94_CLK_ENCPLL_PFD1                  28
+#define IMX94_CLK_ARMPLL_VCO                   29
+#define IMX94_CLK_ARMPLL_PFD0_UNGATED          30
+#define IMX94_CLK_ARMPLL_PFD0                  31
+#define IMX94_CLK_ARMPLL_PFD1_UNGATED          32
+#define IMX94_CLK_ARMPLL_PFD1                  33
+#define IMX94_CLK_ARMPLL_PFD2_UNGATED          34
+#define IMX94_CLK_ARMPLL_PFD2                  35
+#define IMX94_CLK_ARMPLL_PFD3_UNGATED          36
+#define IMX94_CLK_ARMPLL_PFD3                  37
+#define IMX94_CLK_DRAMPLL_VCO                  38
+#define IMX94_CLK_DRAMPLL                      39
+#define IMX94_CLK_HSIOPLL_VCO                  40
+#define IMX94_CLK_HSIOPLL                      41
+#define IMX94_CLK_LDBPLL_VCO                   42
+#define IMX94_CLK_LDBPLL                       43
+#define IMX94_CLK_EXT1                         44
+#define IMX94_CLK_EXT2                         45
+#define IMX94_CLK_ADC                          46
+#define IMX94_CLK_BUSAON                       47
+#define IMX94_CLK_CAN1                         48
+#define IMX94_CLK_GLITCHFILTER                 49
+#define IMX94_CLK_GPT1                         50
+#define IMX94_CLK_I3C1SLOW                     51
+#define IMX94_CLK_LPI2C1                       52
+#define IMX94_CLK_LPI2C2                       53
+#define IMX94_CLK_LPSPI1                       54
+#define IMX94_CLK_LPSPI2                       55
+#define IMX94_CLK_LPTMR1                       56
+#define IMX94_CLK_LPUART1                      57
+#define IMX94_CLK_LPUART2                      58
+#define IMX94_CLK_M33                          59
+#define IMX94_CLK_M33SYSTICK                   60
+#define IMX94_CLK_PDM                          61
+#define IMX94_CLK_SAI1                         62
+#define IMX94_CLK_TPM2                         63
+#define IMX94_CLK_A55                          64
+#define IMX94_CLK_A55MTRBUS                    65
+#define IMX94_CLK_A55PERIPH                    66
+#define IMX94_CLK_DRAMALT                      67
+#define IMX94_CLK_DRAMAPB                      68
+#define IMX94_CLK_DISPAPB                      69
+#define IMX94_CLK_DISPAXI                      70
+#define IMX94_CLK_DISPPIX                      71
+#define IMX94_CLK_HSIOACSCAN480M               72
+#define IMX94_CLK_HSIOACSCAN80M                        73
+#define IMX94_CLK_HSIO                         74
+#define IMX94_CLK_HSIOPCIEAUX                  75
+#define IMX94_CLK_HSIOPCIETEST160M             76
+#define IMX94_CLK_HSIOPCIETEST400M             77
+#define IMX94_CLK_HSIOPCIETEST500M             78
+#define IMX94_CLK_HSIOPCIETEST50M              79
+#define IMX94_CLK_HSIOUSBTEST60M               80
+#define IMX94_CLK_BUSM70                       81
+#define IMX94_CLK_M70                          82
+#define IMX94_CLK_M70SYSTICK                   83
+#define IMX94_CLK_BUSM71                       84
+#define IMX94_CLK_M71                          85
+#define IMX94_CLK_M71SYSTICK                   86
+#define IMX94_CLK_BUSNETCMIX                   87
+#define IMX94_CLK_ECAT                         88
+#define IMX94_CLK_ENET                         89
+#define IMX94_CLK_ENETPHYTEST200M              90
+#define IMX94_CLK_ENETPHYTEST500M              91
+#define IMX94_CLK_ENETPHYTEST667M              92
+#define IMX94_CLK_ENETREF                      93
+#define IMX94_CLK_ENETTIMER1                   94
+#define IMX94_CLK_ENETTIMER2                   95
+#define IMX94_CLK_ENETTIMER3                   96
+#define IMX94_CLK_FLEXIO3                      97
+#define IMX94_CLK_FLEXIO4                      98
+#define IMX94_CLK_M33SYNC                      99
+#define IMX94_CLK_M33SYNCSYSTICK               100
+#define IMX94_CLK_MAC0                         101
+#define IMX94_CLK_MAC1                         102
+#define IMX94_CLK_MAC2                         103
+#define IMX94_CLK_MAC3                         104
+#define IMX94_CLK_MAC4                         105
+#define IMX94_CLK_MAC5                         106
+#define IMX94_CLK_NOCAPB                       107
+#define IMX94_CLK_NOC                          108
+#define IMX94_CLK_NPUAPB                       109
+#define IMX94_CLK_NPU                          110
+#define IMX94_CLK_CCMCKO1                      111
+#define IMX94_CLK_CCMCKO2                      112
+#define IMX94_CLK_CCMCKO3                      113
+#define IMX94_CLK_CCMCKO4                      114
+#define IMX94_CLK_BISS                         115
+#define IMX94_CLK_BUSWAKEUP                    116
+#define IMX94_CLK_CAN2                         117
+#define IMX94_CLK_CAN3                         118
+#define IMX94_CLK_CAN4                         119
+#define IMX94_CLK_CAN5                         120
+#define IMX94_CLK_ENDAT21                      121
+#define IMX94_CLK_ENDAT22                      122
+#define IMX94_CLK_ENDAT31FAST                  123
+#define IMX94_CLK_ENDAT31SLOW                  124
+#define IMX94_CLK_FLEXIO1                      125
+#define IMX94_CLK_FLEXIO2                      126
+#define IMX94_CLK_GPT2                         127
+#define IMX94_CLK_GPT3                         128
+#define IMX94_CLK_GPT4                         129
+#define IMX94_CLK_HIPERFACE1                   130
+#define IMX94_CLK_HIPERFACE1SYNC               131
+#define IMX94_CLK_HIPERFACE2                   132
+#define IMX94_CLK_HIPERFACE2SYNC               133
+#define IMX94_CLK_I3C2SLOW                     134
+#define IMX94_CLK_LPI2C3                       135
+#define IMX94_CLK_LPI2C4                       136
+#define IMX94_CLK_LPI2C5                       137
+#define IMX94_CLK_LPI2C6                       138
+#define IMX94_CLK_LPI2C7                       139
+#define IMX94_CLK_LPI2C8                       140
+#define IMX94_CLK_LPSPI3                       141
+#define IMX94_CLK_LPSPI4                       142
+#define IMX94_CLK_LPSPI5                       143
+#define IMX94_CLK_LPSPI6                       144
+#define IMX94_CLK_LPSPI7                       145
+#define IMX94_CLK_LPSPI8                       146
+#define IMX94_CLK_LPTMR2                       147
+#define IMX94_CLK_LPUART10                     148
+#define IMX94_CLK_LPUART11                     149
+#define IMX94_CLK_LPUART12                     150
+#define IMX94_CLK_LPUART3                      151
+#define IMX94_CLK_LPUART4                      152
+#define IMX94_CLK_LPUART5                      153
+#define IMX94_CLK_LPUART6                      154
+#define IMX94_CLK_LPUART7                      155
+#define IMX94_CLK_LPUART8                      156
+#define IMX94_CLK_LPUART9                      157
+#define IMX94_CLK_SAI2                         158
+#define IMX94_CLK_SAI3                         159
+#define IMX94_CLK_SAI4                         160
+#define IMX94_CLK_SWOTRACE                     161
+#define IMX94_CLK_TPM4                         162
+#define IMX94_CLK_TPM5                         163
+#define IMX94_CLK_TPM6                         164
+#define IMX94_CLK_USBPHYBURUNIN                        165
+#define IMX94_CLK_USDHC1                       166
+#define IMX94_CLK_USDHC2                       167
+#define IMX94_CLK_USDHC3                       168
+#define IMX94_CLK_V2XPK                                169
+#define IMX94_CLK_WAKEUPAXI                    170
+#define IMX94_CLK_XSPISLVROOT                  171
+#define IMX94_CLK_XSPI1                                172
+#define IMX94_CLK_XSPI2                                173
+#define IMX94_CLK_SEL_EXT                      174
+#define IMX94_CLK_SEL_A55C0                    175
+#define IMX94_CLK_SEL_A55C1                    176
+#define IMX94_CLK_SEL_A55C2                    177
+#define IMX94_CLK_SEL_A55C3                    178
+#define IMX94_CLK_SEL_A55P                     179
+#define IMX94_CLK_SEL_DRAM                     180
+#define IMX94_CLK_SEL_TEMPSENSE                        181
+#define IMX94_CLK_NPU_CGC                      182
+
+#endif /* __IMX94_CLOCK_H */
diff --git a/src/arm64/freescale/imx94-pinfunc.h b/src/arm64/freescale/imx94-pinfunc.h
new file mode 100644 (file)
index 0000000..00255db
--- /dev/null
@@ -0,0 +1,1570 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
+/*
+ * Copyright 2024-2025 NXP
+ */
+
+#ifndef __DTS_IMX94_PINFUNC_H
+#define __DTS_IMX94_PINFUNC_H
+
+/* Drive Strength */
+#define IMX94_DSE_X1           0x2
+#define IMX94_DSE_X2           0x6
+#define IMX94_DSE_X3           0xe
+#define IMX94_DSE_X4           0x1e
+#define IMX94_DSE_X5           0x3e
+#define IMX94_DSE_X6           0x7e
+
+/* Slew Rate */
+#define IMX94_FSEL_FAST                0x180
+#define IMX94_FSEL_SLOW                0x100
+
+/* Pull Up */
+#define IMX94_PU_ENABLE                0x200
+#define IMX94_PU_DISABLE       0x0
+
+/* Pull Down */
+#define IMX94_PD_ENABLE                0x400
+#define IMX94_PD_DISABLE       0x0
+
+/* Open Drain */
+#define IMX94_OD_ENABLE                0x800
+#define IMX94_OD_DISABLE       0x0
+
+/* Schmitt trigger */
+#define IMX94_HYS_SCHMITT      0x1000
+#define IMX94_HYS_NO_SCHMITT   0x0
+
+/*
+ * The pin function ID is a tuple of <mux_reg conf_reg input_reg mux_mode input_val>
+ */
+#define IMX94_PAD_DAP_TDI__JTAG_MUX_TDI                     0x0000 0x0304 0x092c 0x00 0x00
+#define IMX94_PAD_DAP_TDI__MQS2_LEFT                        0x0000 0x0304 0x0000 0x01 0x00
+#define IMX94_PAD_DAP_TDI__ECAT_LED_ERR                     0x0000 0x0304 0x0000 0x02 0x00
+#define IMX94_PAD_DAP_TDI__CAN2_TX                          0x0000 0x0304 0x0000 0x03 0x00
+#define IMX94_PAD_DAP_TDI__SINC_FILTER_GLUE3_BREAK          0x0000 0x0304 0x0000 0x04 0x00
+#define IMX94_PAD_DAP_TDI__GPIO4_IO4                        0x0000 0x0304 0x0000 0x05 0x00
+#define IMX94_PAD_DAP_TDI__LPUART5_RX                       0x0000 0x0304 0x07bc 0x06 0x00
+#define IMX94_PAD_DAP_TDI__XBAR1_XBAR_INOUT26               0x0000 0x0304 0x0000 0x07 0x00
+
+#define IMX94_PAD_DAP_TMS_SWDIO__JTAG_MUX_TMS               0x0004 0x0308 0x0930 0x00 0x00
+#define IMX94_PAD_DAP_TMS_SWDIO__CAN5_TX                    0x0004 0x0308 0x0000 0x01 0x00
+#define IMX94_PAD_DAP_TMS_SWDIO__GPT_MUX_INOUT10            0x0004 0x0308 0x0000 0x02 0x00
+#define IMX94_PAD_DAP_TMS_SWDIO__LPUART8_TX                 0x0004 0x0308 0x07dc 0x03 0x00
+#define IMX94_PAD_DAP_TMS_SWDIO__SINC3_MOD_CLK1             0x0004 0x0308 0x0000 0x04 0x00
+#define IMX94_PAD_DAP_TMS_SWDIO__GPIO4_IO5                  0x0004 0x0308 0x0000 0x05 0x00
+#define IMX94_PAD_DAP_TMS_SWDIO__LPUART5_RTS_B              0x0004 0x0308 0x0000 0x06 0x00
+#define IMX94_PAD_DAP_TMS_SWDIO__XBAR1_XBAR_INOUT27         0x0004 0x0308 0x0000 0x07 0x00
+
+#define IMX94_PAD_DAP_TCLK_SWCLK__JTAG_MUX_TCK              0x0008 0x030c 0x0928 0x00 0x00
+#define IMX94_PAD_DAP_TCLK_SWCLK__CAN5_RX                   0x0008 0x030c 0x0688 0x01 0x00
+#define IMX94_PAD_DAP_TCLK_SWCLK__GPT_MUX_INOUT11           0x0008 0x030c 0x0000 0x02 0x00
+#define IMX94_PAD_DAP_TCLK_SWCLK__LPUART8_RX                0x0008 0x030c 0x07d8 0x03 0x00
+#define IMX94_PAD_DAP_TCLK_SWCLK__SINC3_MOD_CLK0            0x0008 0x030c 0x0000 0x04 0x00
+#define IMX94_PAD_DAP_TCLK_SWCLK__GPIO4_IO6                 0x0008 0x030c 0x0000 0x05 0x00
+#define IMX94_PAD_DAP_TCLK_SWCLK__LPUART5_CTS_B             0x0008 0x030c 0x07b8 0x06 0x00
+#define IMX94_PAD_DAP_TCLK_SWCLK__XBAR1_XBAR_INOUT28        0x0008 0x030c 0x0000 0x07 0x00
+
+#define IMX94_PAD_DAP_TDO_TRACESWO__JTAG_MUX_TDO            0x000c 0x0310 0x0000 0x00 0x00
+#define IMX94_PAD_DAP_TDO_TRACESWO__MQS2_RIGHT              0x000c 0x0310 0x0000 0x01 0x00
+#define IMX94_PAD_DAP_TDO_TRACESWO__ECAT_RESET_OUT          0x000c 0x0310 0x0000 0x02 0x00
+#define IMX94_PAD_DAP_TDO_TRACESWO__CAN2_RX                 0x000c 0x0310 0x067c 0x03 0x00
+#define IMX94_PAD_DAP_TDO_TRACESWO__SINC3_MOD_CLK2          0x000c 0x0310 0x0000 0x04 0x00
+#define IMX94_PAD_DAP_TDO_TRACESWO__GPIO4_IO7               0x000c 0x0310 0x0000 0x05 0x00
+#define IMX94_PAD_DAP_TDO_TRACESWO__LPUART5_TX              0x000c 0x0310 0x07c0 0x06 0x00
+#define IMX94_PAD_DAP_TDO_TRACESWO__XBAR1_XBAR_INOUT29      0x000c 0x0310 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO00__GPIO2_IO0                      0x0010 0x0314 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO00__I3C2_PUR                       0x0010 0x0314 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO00__XBAR1_XBAR_INOUT39             0x0010 0x0314 0x08d4 0x02 0x00
+#define IMX94_PAD_GPIO_IO00__I3C2_PUR_B                     0x0010 0x0314 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO00__LPSPI6_PCS0                    0x0010 0x0314 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO00__LPUART5_TX                     0x0010 0x0314 0x07c0 0x05 0x01
+#define IMX94_PAD_GPIO_IO00__LPI2C5_SDA                     0x0010 0x0314 0x0740 0x06 0x00
+#define IMX94_PAD_GPIO_IO00__FLEXIO1_FLEXIO0                0x0010 0x0314 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO01__GPIO2_IO1                      0x0014 0x0318 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO01__I3C2_SCL                       0x0014 0x0318 0x0720 0x01 0x00
+#define IMX94_PAD_GPIO_IO01__XBAR1_XBAR_INOUT40             0x0014 0x0318 0x08d8 0x02 0x00
+#define IMX94_PAD_GPIO_IO01__EWM_OUT_B                      0x0014 0x0318 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO01__LPSPI6_SIN                     0x0014 0x0318 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO01__LPUART5_RX                     0x0014 0x0318 0x07bc 0x05 0x01
+#define IMX94_PAD_GPIO_IO01__LPI2C5_SCL                     0x0014 0x0318 0x073c 0x06 0x00
+#define IMX94_PAD_GPIO_IO01__FLEXIO1_FLEXIO1                0x0014 0x0318 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO02__GPIO2_IO2                      0x0018 0x031c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO02__I3C2_SDA                       0x0018 0x031c 0x0724 0x01 0x00
+#define IMX94_PAD_GPIO_IO02__XBAR1_XBAR_INOUT41             0x0018 0x031c 0x08dc 0x02 0x00
+#define IMX94_PAD_GPIO_IO02__GPT_MUX_INOUT1                 0x0018 0x031c 0x0700 0x03 0x00
+#define IMX94_PAD_GPIO_IO02__LPSPI6_SOUT                    0x0018 0x031c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO02__LPUART5_CTS_B                  0x0018 0x031c 0x07b8 0x05 0x01
+#define IMX94_PAD_GPIO_IO02__LPI2C6_SDA                     0x0018 0x031c 0x074c 0x06 0x00
+#define IMX94_PAD_GPIO_IO02__FLEXIO1_FLEXIO2                0x0018 0x031c 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO03__GPIO2_IO3                      0x001c 0x0320 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO03__EWM_OUT_B                      0x001c 0x0320 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO03__XBAR1_XBAR_INOUT42             0x001c 0x0320 0x08e0 0x02 0x00
+#define IMX94_PAD_GPIO_IO03__GPT_MUX_INOUT4                 0x001c 0x0320 0x0708 0x03 0x00
+#define IMX94_PAD_GPIO_IO03__LPSPI6_SCK                     0x001c 0x0320 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO03__LPUART5_RTS_B                  0x001c 0x0320 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO03__LPI2C6_SCL                     0x001c 0x0320 0x0748 0x06 0x00
+#define IMX94_PAD_GPIO_IO03__FLEXIO1_FLEXIO3                0x001c 0x0320 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO04__GPIO2_IO4                      0x0020 0x0324 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO04__TPM3_CH0                       0x0020 0x0324 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO04__PDM_CLK                        0x0020 0x0324 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO04__GPT_MUX_INOUT5                 0x0020 0x0324 0x070c 0x03 0x00
+#define IMX94_PAD_GPIO_IO04__LPSPI7_PCS0                    0x0020 0x0324 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO04__LPUART6_TX                     0x0020 0x0324 0x07cc 0x05 0x00
+#define IMX94_PAD_GPIO_IO04__LPI2C6_SDA                     0x0020 0x0324 0x074c 0x06 0x01
+#define IMX94_PAD_GPIO_IO04__FLEXIO1_FLEXIO4                0x0020 0x0324 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO05__GPIO2_IO5                      0x0024 0x0328 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO05__TPM4_CH0                       0x0024 0x0328 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO05__PDM_BIT_STREAM0                0x0024 0x0328 0x0610 0x02 0x00
+#define IMX94_PAD_GPIO_IO05__GPT_MUX_INOUT7                 0x0024 0x0328 0x0714 0x03 0x00
+#define IMX94_PAD_GPIO_IO05__LPSPI7_SIN                     0x0024 0x0328 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO05__LPUART6_RX                     0x0024 0x0328 0x07c8 0x05 0x00
+#define IMX94_PAD_GPIO_IO05__LPI2C6_SCL                     0x0024 0x0328 0x0748 0x06 0x01
+#define IMX94_PAD_GPIO_IO05__FLEXIO1_FLEXIO5                0x0024 0x0328 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO06__GPIO2_IO6                      0x0028 0x032c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO06__TPM5_CH0                       0x0028 0x032c 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO06__PDM_BIT_STREAM1                0x0028 0x032c 0x0614 0x02 0x00
+#define IMX94_PAD_GPIO_IO06__GPT_MUX_INOUT8                 0x0028 0x032c 0x0718 0x03 0x00
+#define IMX94_PAD_GPIO_IO06__LPSPI7_SOUT                    0x0028 0x032c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO06__LPUART6_CTS_B                  0x0028 0x032c 0x07c4 0x05 0x00
+#define IMX94_PAD_GPIO_IO06__LPI2C7_SDA                     0x0028 0x032c 0x0754 0x06 0x00
+#define IMX94_PAD_GPIO_IO06__FLEXIO1_FLEXIO6                0x0028 0x032c 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO07__GPIO2_IO7                      0x002c 0x0330 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO07__LPSPI3_PCS1                    0x002c 0x0330 0x0768 0x01 0x00
+#define IMX94_PAD_GPIO_IO07__XBAR1_XBAR_INOUT43             0x002c 0x0330 0x08e4 0x02 0x00
+#define IMX94_PAD_GPIO_IO07__GPT_MUX_INOUT3                 0x002c 0x0330 0x0704 0x03 0x00
+#define IMX94_PAD_GPIO_IO07__LPSPI7_SCK                     0x002c 0x0330 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO07__LPUART6_RTS_B                  0x002c 0x0330 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO07__LPI2C7_SCL                     0x002c 0x0330 0x0750 0x06 0x00
+#define IMX94_PAD_GPIO_IO07__FLEXIO1_FLEXIO7                0x002c 0x0330 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO08__GPIO2_IO8                      0x0030 0x0334 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO08__LPSPI3_PCS0                    0x0030 0x0334 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO08__USDHC2_WP                      0x0030 0x0334 0x0854 0x02 0x00
+#define IMX94_PAD_GPIO_IO08__GPT_MUX_INOUT2                 0x0030 0x0334 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO08__TPM6_CH0                       0x0030 0x0334 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO08__LPUART7_TX                     0x0030 0x0334 0x07d4 0x05 0x00
+#define IMX94_PAD_GPIO_IO08__LPI2C7_SDA                     0x0030 0x0334 0x0754 0x06 0x01
+#define IMX94_PAD_GPIO_IO08__FLEXIO1_FLEXIO8                0x0030 0x0334 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO09__GPIO2_IO9                      0x0034 0x0338 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO09__LPSPI3_SIN                     0x0034 0x0338 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO09__XBAR1_XBAR_INOUT44             0x0034 0x0338 0x08e8 0x02 0x00
+#define IMX94_PAD_GPIO_IO09__GPT_MUX_INOUT0                 0x0034 0x0338 0x06fc 0x03 0x00
+#define IMX94_PAD_GPIO_IO09__TPM3_EXTCLK                    0x0034 0x0338 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO09__LPUART7_RX                     0x0034 0x0338 0x07d0 0x05 0x00
+#define IMX94_PAD_GPIO_IO09__LPI2C7_SCL                     0x0034 0x0338 0x0750 0x06 0x01
+#define IMX94_PAD_GPIO_IO09__FLEXIO1_FLEXIO9                0x0034 0x0338 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO10__GPIO2_IO10                     0x0038 0x033c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO10__LPSPI3_SOUT                    0x0038 0x033c 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO10__XBAR1_XBAR_INOUT45             0x0038 0x033c 0x08ec 0x02 0x00
+#define IMX94_PAD_GPIO_IO10__GPT_MUX_INOUT6                 0x0038 0x033c 0x0710 0x03 0x00
+#define IMX94_PAD_GPIO_IO10__TPM4_EXTCLK                    0x0038 0x033c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO10__LPUART7_CTS_B                  0x0038 0x033c 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO10__LPI2C8_SDA                     0x0038 0x033c 0x075c 0x06 0x00
+#define IMX94_PAD_GPIO_IO10__FLEXIO1_FLEXIO10               0x0038 0x033c 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO11__GPIO2_IO11                     0x003c 0x0340 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO11__LPSPI3_SCK                     0x003c 0x0340 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO11__XBAR1_XBAR_INOUT46             0x003c 0x0340 0x08f0 0x02 0x00
+#define IMX94_PAD_GPIO_IO11__GPT_MUX_INOUT9                 0x003c 0x0340 0x071c 0x03 0x00
+#define IMX94_PAD_GPIO_IO11__TPM5_EXTCLK                    0x003c 0x0340 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO11__LPUART7_RTS_B                  0x003c 0x0340 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO11__LPI2C8_SCL                     0x003c 0x0340 0x0758 0x06 0x00
+#define IMX94_PAD_GPIO_IO11__FLEXIO1_FLEXIO11               0x003c 0x0340 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO12__GPIO2_IO12                     0x0040 0x0344 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO12__TPM3_CH2                       0x0040 0x0344 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO12__PDM_BIT_STREAM2                0x0040 0x0344 0x0618 0x02 0x00
+#define IMX94_PAD_GPIO_IO12__FLEXIO1_FLEXIO12               0x0040 0x0344 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO12__LPSPI8_PCS0                    0x0040 0x0344 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO12__LPUART8_TX                     0x0040 0x0344 0x07dc 0x05 0x01
+#define IMX94_PAD_GPIO_IO12__LPI2C8_SDA                     0x0040 0x0344 0x075c 0x06 0x01
+
+#define IMX94_PAD_GPIO_IO13__GPIO2_IO13                     0x0044 0x0348 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO13__TPM4_CH2                       0x0044 0x0348 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO13__PDM_BIT_STREAM3                0x0044 0x0348 0x061c 0x02 0x00
+#define IMX94_PAD_GPIO_IO13__XBAR1_XBAR_INOUT47             0x0044 0x0348 0x08f4 0x03 0x00
+#define IMX94_PAD_GPIO_IO13__LPSPI8_SIN                     0x0044 0x0348 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO13__LPUART8_RX                     0x0044 0x0348 0x07d8 0x05 0x01
+#define IMX94_PAD_GPIO_IO13__LPI2C8_SCL                     0x0044 0x0348 0x0758 0x06 0x01
+#define IMX94_PAD_GPIO_IO13__FLEXIO1_FLEXIO13               0x0044 0x0348 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO14__GPIO2_IO14                     0x0048 0x034c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO14__LPUART10_CTS_B                 0x0048 0x034c 0x078c 0x01 0x00
+#define IMX94_PAD_GPIO_IO14__ECAT_SDA                       0x0048 0x034c 0x062c 0x02 0x00
+#define IMX94_PAD_GPIO_IO14__XBAR1_XBAR_INOUT48             0x0048 0x034c 0x08f8 0x03 0x00
+#define IMX94_PAD_GPIO_IO14__LPSPI8_SOUT                    0x0048 0x034c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO14__LPUART8_CTS_B                  0x0048 0x034c 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO14__LPUART4_TX                     0x0048 0x034c 0x07b4 0x06 0x00
+#define IMX94_PAD_GPIO_IO14__FLEXIO1_FLEXIO14               0x0048 0x034c 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO15__GPIO2_IO15                     0x004c 0x0350 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO15__LPUART10_RTS_B                 0x004c 0x0350 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO15__ECAT_SCL                       0x004c 0x0350 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO15__XBAR1_XBAR_INOUT8              0x004c 0x0350 0x087c 0x03 0x00
+#define IMX94_PAD_GPIO_IO15__LPSPI8_SCK                     0x004c 0x0350 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO15__LPUART8_RTS_B                  0x004c 0x0350 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO15__LPUART4_RX                     0x004c 0x0350 0x07b0 0x06 0x00
+#define IMX94_PAD_GPIO_IO15__FLEXIO1_FLEXIO15               0x004c 0x0350 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO16__GPIO2_IO16                     0x0050 0x0354 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO16__LPI2C3_SDA                     0x0050 0x0354 0x0730 0x01 0x00
+#define IMX94_PAD_GPIO_IO16__CAN3_TX                        0x0050 0x0354 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO16__EWM_OUT_B                      0x0050 0x0354 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO16__LPUART11_TX                    0x0050 0x0354 0x079c 0x04 0x00
+#define IMX94_PAD_GPIO_IO16__GPT_MUX_INOUT0                 0x0050 0x0354 0x06fc 0x05 0x01
+#define IMX94_PAD_GPIO_IO16__FLEXPWM4_PWMA0                 0x0050 0x0354 0x06d4 0x06 0x00
+#define IMX94_PAD_GPIO_IO16__XBAR1_XBAR_INOUT30             0x0050 0x0354 0x08b0 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO17__GPIO2_IO17                     0x0054 0x0358 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO17__LPI2C3_SCL                     0x0054 0x0358 0x072c 0x01 0x00
+#define IMX94_PAD_GPIO_IO17__CAN3_RX                        0x0054 0x0358 0x0680 0x02 0x00
+#define IMX94_PAD_GPIO_IO17__LPI2C6_HREQ                    0x0054 0x0358 0x0744 0x03 0x00
+#define IMX94_PAD_GPIO_IO17__LPUART11_RX                    0x0054 0x0358 0x0798 0x04 0x00
+#define IMX94_PAD_GPIO_IO17__GPT_MUX_INOUT3                 0x0054 0x0358 0x0704 0x05 0x01
+#define IMX94_PAD_GPIO_IO17__FLEXPWM4_PWMB0                 0x0054 0x0358 0x06e4 0x06 0x00
+#define IMX94_PAD_GPIO_IO17__XBAR1_XBAR_INOUT31             0x0054 0x0358 0x08b4 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO18__GPIO2_IO18                     0x0058 0x035c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO18__LPI2C4_SDA                     0x0058 0x035c 0x0738 0x01 0x00
+#define IMX94_PAD_GPIO_IO18__LPUART10_TX                    0x0058 0x035c 0x0794 0x02 0x00
+#define IMX94_PAD_GPIO_IO18__LPI2C7_HREQ                    0x0058 0x035c 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO18__LPUART11_CTS_B                 0x0058 0x035c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO18__GPT_MUX_INOUT6                 0x0058 0x035c 0x0710 0x05 0x01
+#define IMX94_PAD_GPIO_IO18__FLEXPWM4_PWMA1                 0x0058 0x035c 0x06d8 0x06 0x00
+#define IMX94_PAD_GPIO_IO18__XBAR1_XBAR_INOUT32             0x0058 0x035c 0x08b8 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO19__GPIO2_IO19                     0x005c 0x0360 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO19__LPI2C4_SCL                     0x005c 0x0360 0x0734 0x01 0x00
+#define IMX94_PAD_GPIO_IO19__LPUART10_RX                    0x005c 0x0360 0x0790 0x02 0x00
+#define IMX94_PAD_GPIO_IO19__LPI2C8_HREQ                    0x005c 0x0360 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO19__LPUART11_RTS_B                 0x005c 0x0360 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO19__GPT_MUX_INOUT9                 0x005c 0x0360 0x071c 0x05 0x01
+#define IMX94_PAD_GPIO_IO19__FLEXPWM4_PWMB1                 0x005c 0x0360 0x06e8 0x06 0x00
+#define IMX94_PAD_GPIO_IO19__XBAR1_XBAR_INOUT33             0x005c 0x0360 0x08bc 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO20__GPIO2_IO20                     0x0060 0x0364 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO20__PCIE1_CLKREQ_B                 0x0060 0x0364 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO20__LPUART6_TX                     0x0060 0x0364 0x07cc 0x02 0x01
+#define IMX94_PAD_GPIO_IO20__LPI2C8_SDA                     0x0060 0x0364 0x075c 0x03 0x02
+#define IMX94_PAD_GPIO_IO20__LPSPI4_PCS2                    0x0060 0x0364 0x076c 0x04 0x00
+#define IMX94_PAD_GPIO_IO20__LPSPI3_PCS1                    0x0060 0x0364 0x0768 0x05 0x01
+#define IMX94_PAD_GPIO_IO20__FLEXPWM4_PWMA2                 0x0060 0x0364 0x06dc 0x06 0x00
+#define IMX94_PAD_GPIO_IO20__XBAR1_XBAR_INOUT34             0x0060 0x0364 0x08c0 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO21__GPIO2_IO21                     0x0064 0x0368 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO21__SAI2_TX_BCLK                   0x0064 0x0368 0x07f8 0x01 0x00
+#define IMX94_PAD_GPIO_IO21__LPUART6_RX                     0x0064 0x0368 0x07c8 0x02 0x01
+#define IMX94_PAD_GPIO_IO21__LPI2C8_SCL                     0x0064 0x0368 0x0758 0x03 0x02
+#define IMX94_PAD_GPIO_IO21__LPSPI4_PCS1                    0x0064 0x0368 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO21__LPI2C3_HREQ                    0x0064 0x0368 0x0728 0x05 0x00
+#define IMX94_PAD_GPIO_IO21__FLEXPWM4_PWMB2                 0x0064 0x0368 0x06ec 0x06 0x00
+#define IMX94_PAD_GPIO_IO21__XBAR1_XBAR_INOUT35             0x0064 0x0368 0x08c4 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO22__GPIO2_IO22                     0x0068 0x036c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO22__SAI2_MCLK                      0x0068 0x036c 0x07e8 0x01 0x00
+#define IMX94_PAD_GPIO_IO22__LPUART6_CTS_B                  0x0068 0x036c 0x07c4 0x02 0x01
+#define IMX94_PAD_GPIO_IO22__XBAR1_XBAR_INOUT9              0x0068 0x036c 0x0880 0x03 0x00
+#define IMX94_PAD_GPIO_IO22__LPSPI4_PCS0                    0x0068 0x036c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO22__FLEXPWM3_PWMA3                 0x0068 0x036c 0x06b4 0x05 0x00
+#define IMX94_PAD_GPIO_IO22__FLEXPWM4_PWMA3                 0x0068 0x036c 0x06e0 0x06 0x00
+#define IMX94_PAD_GPIO_IO22__SINC4_EMCLK0                   0x0068 0x036c 0x082c 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO23__GPIO2_IO23                     0x006c 0x0370 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO23__PCIE2_CLKREQ_B                 0x006c 0x0370 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO23__LPUART6_RTS_B                  0x006c 0x0370 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO23__XBAR1_XBAR_INOUT10             0x006c 0x0370 0x0884 0x03 0x00
+#define IMX94_PAD_GPIO_IO23__LPSPI4_SIN                     0x006c 0x0370 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO23__FLEXPWM3_PWMB3                 0x006c 0x0370 0x06c4 0x05 0x00
+#define IMX94_PAD_GPIO_IO23__FLEXPWM4_PWMB3                 0x006c 0x0370 0x06f0 0x06 0x00
+#define IMX94_PAD_GPIO_IO23__SINC4_EMBIT0                   0x006c 0x0370 0x0820 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO24__GPIO2_IO24                     0x0070 0x0374 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO24__SAI2_RX_BCLK                   0x0070 0x0374 0x07ec 0x01 0x00
+#define IMX94_PAD_GPIO_IO24__LPUART11_TX                    0x0070 0x0374 0x079c 0x02 0x01
+#define IMX94_PAD_GPIO_IO24__LPI2C3_HREQ                    0x0070 0x0374 0x0728 0x03 0x01
+#define IMX94_PAD_GPIO_IO24__LPSPI4_SOUT                    0x0070 0x0374 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO24__SINC_FILTER_GLUE2_BREAK        0x0070 0x0374 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO24__FLEXPWM4_PWMX0                 0x0070 0x0374 0x06f4 0x06 0x00
+#define IMX94_PAD_GPIO_IO24__XBAR1_XBAR_INOUT36             0x0070 0x0374 0x08c8 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO25__GPIO2_IO25                     0x0074 0x0378 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO25__SAI2_RX_SYNC                   0x0074 0x0378 0x07f4 0x01 0x00
+#define IMX94_PAD_GPIO_IO25__LPUART11_RX                    0x0074 0x0378 0x0798 0x02 0x01
+#define IMX94_PAD_GPIO_IO25__LPI2C4_HREQ                    0x0074 0x0378 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO25__LPSPI4_SCK                     0x0074 0x0378 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO25__SINC_FILTER_GLUE1_BREAK        0x0074 0x0378 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO25__FLEXPWM4_PWMX1                 0x0074 0x0378 0x06f8 0x06 0x00
+#define IMX94_PAD_GPIO_IO25__XBAR1_XBAR_INOUT37             0x0074 0x0378 0x08cc 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO26__GPIO2_IO26                     0x0078 0x037c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO26__LPI2C5_SCL                     0x0078 0x037c 0x073c 0x01 0x01
+#define IMX94_PAD_GPIO_IO26__LPUART12_TX                    0x0078 0x037c 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO26__GPT_MUX_INOUT4                 0x0078 0x037c 0x0708 0x03 0x01
+#define IMX94_PAD_GPIO_IO26__FLEXIO1_3_1_FLEXIO0            0x0078 0x037c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO26__SAI2_RX_DATA0                  0x0078 0x037c 0x07f0 0x05 0x00
+#define IMX94_PAD_GPIO_IO26__FLEXPWM4_PWMX2                 0x0078 0x037c 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO26__XBAR1_XBAR_INOUT38             0x0078 0x037c 0x08d0 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO27__GPIO2_IO27                     0x007c 0x0380 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO27__LPI2C5_SDA                     0x007c 0x0380 0x0740 0x01 0x01
+#define IMX94_PAD_GPIO_IO27__LPUART12_RX                    0x007c 0x0380 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO27__GPT_MUX_INOUT5                 0x007c 0x0380 0x070c 0x03 0x01
+#define IMX94_PAD_GPIO_IO27__FLEXIO1_3_1_FLEXIO1            0x007c 0x0380 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO27__SAI2_TX_DATA0                  0x007c 0x0380 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO27__FLEXPWM4_PWMX3                 0x007c 0x0380 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO27__SINC4_MOD_CLK0                 0x007c 0x0380 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO28__GPIO2_IO28                     0x0080 0x0384 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO28__LPI2C6_SCL                     0x0080 0x0384 0x0748 0x01 0x02
+#define IMX94_PAD_GPIO_IO28__LPUART12_CTS_B                 0x0080 0x0384 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO28__GPT_MUX_INOUT7                 0x0080 0x0384 0x0714 0x03 0x01
+#define IMX94_PAD_GPIO_IO28__FLEXIO1_3_1_FLEXIO2            0x0080 0x0384 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO28__SAI2_TX_SYNC                   0x0080 0x0384 0x07fc 0x05 0x00
+#define IMX94_PAD_GPIO_IO28__FLEXPWM1_PWMX2                 0x0080 0x0384 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO28__XBAR1_XBAR_INOUT4              0x0080 0x0384 0x086c 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO29__GPIO2_IO29                     0x0084 0x0388 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO29__LPI2C6_SDA                     0x0084 0x0388 0x074c 0x01 0x02
+#define IMX94_PAD_GPIO_IO29__LPUART12_RTS_B                 0x0084 0x0388 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO29__I3C2_SDA                       0x0084 0x0388 0x0724 0x03 0x01
+#define IMX94_PAD_GPIO_IO29__FLEXIO1_3_1_FLEXIO3            0x0084 0x0388 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO29__FLEXPWM3_PWMX0                 0x0084 0x0388 0x06c8 0x05 0x00
+#define IMX94_PAD_GPIO_IO29__FLEXPWM1_PWMX3                 0x0084 0x0388 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO29__XBAR1_XBAR_INOUT5              0x0084 0x0388 0x0870 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO30__GPIO2_IO30                     0x0088 0x038c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO30__LPIT2_TRIGGER0                 0x0088 0x038c 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO30__LPUART3_TX                     0x0088 0x038c 0x07a8 0x02 0x00
+#define IMX94_PAD_GPIO_IO30__I3C2_PUR                       0x0088 0x038c 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO30__FLEXIO1_3_1_FLEXIO4            0x0088 0x038c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO30__I3C2_PUR_B                     0x0088 0x038c 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO30__FLEXPWM2_PWMX2                 0x0088 0x038c 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO30__XBAR1_XBAR_INOUT6              0x0088 0x038c 0x0874 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO31__GPIO2_IO31                     0x008c 0x0390 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO31__LPIT2_TRIGGER1                 0x008c 0x0390 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO31__LPUART3_RX                     0x008c 0x0390 0x07a4 0x02 0x00
+#define IMX94_PAD_GPIO_IO31__I3C2_SCL                       0x008c 0x0390 0x0720 0x03 0x01
+#define IMX94_PAD_GPIO_IO31__FLEXIO1_3_1_FLEXIO5            0x008c 0x0390 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO31__FLEXPWM3_PWMX1                 0x008c 0x0390 0x06cc 0x05 0x00
+#define IMX94_PAD_GPIO_IO31__FLEXPWM2_PWMX3                 0x008c 0x0390 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO31__XBAR1_XBAR_INOUT7              0x008c 0x0390 0x0878 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO32__GPIO3_IO0                      0x0090 0x0394 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO32__LPIT3_TRIGGER0                 0x0090 0x0394 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO32__LPUART7_TX                     0x0090 0x0394 0x07d4 0x02 0x01
+#define IMX94_PAD_GPIO_IO32__GPT_MUX_INOUT8                 0x0090 0x0394 0x0718 0x03 0x01
+#define IMX94_PAD_GPIO_IO32__FLEXIO1_3_1_FLEXIO6            0x0090 0x0394 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO32__FLEXPWM3_PWMA0                 0x0090 0x0394 0x06a8 0x05 0x00
+#define IMX94_PAD_GPIO_IO32__SINC_FILTER_GLUE2_BREAK        0x0090 0x0394 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO32__XBAR1_XBAR_INOUT8              0x0090 0x0394 0x087c 0x07 0x01
+
+#define IMX94_PAD_GPIO_IO33__GPIO3_IO1                      0x0094 0x0398 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO33__LPIT3_TRIGGER1                 0x0094 0x0398 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO33__LPUART7_RX                     0x0094 0x0398 0x07d0 0x02 0x01
+#define IMX94_PAD_GPIO_IO33__GPT_MUX_INOUT1                 0x0094 0x0398 0x0700 0x03 0x01
+#define IMX94_PAD_GPIO_IO33__FLEXIO1_3_1_FLEXIO7            0x0094 0x0398 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO33__FLEXPWM3_PWMB0                 0x0094 0x0398 0x06b8 0x05 0x00
+#define IMX94_PAD_GPIO_IO33__SINC_FILTER_GLUE1_BREAK        0x0094 0x0398 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO33__XBAR1_XBAR_INOUT9              0x0094 0x0398 0x0880 0x07 0x01
+
+#define IMX94_PAD_GPIO_IO34__GPIO3_IO2                      0x0098 0x039c 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO34__LPI2C7_SDA                     0x0098 0x039c 0x0754 0x01 0x02
+#define IMX94_PAD_GPIO_IO34__CAN2_TX                        0x0098 0x039c 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO34__ECAT_SDA                       0x0098 0x039c 0x062c 0x03 0x01
+#define IMX94_PAD_GPIO_IO34__FLEXIO1_3_1_FLEXIO8            0x0098 0x039c 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO34__FLEXPWM3_PWMA1                 0x0098 0x039c 0x06ac 0x05 0x00
+#define IMX94_PAD_GPIO_IO34__FLEXPWM1_PWMX0                 0x0098 0x039c 0x0698 0x06 0x00
+#define IMX94_PAD_GPIO_IO34__XBAR1_XBAR_INOUT10             0x0098 0x039c 0x0884 0x07 0x01
+
+#define IMX94_PAD_GPIO_IO35__GPIO3_IO3                      0x009c 0x03a0 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO35__LPI2C7_SCL                     0x009c 0x03a0 0x0750 0x01 0x02
+#define IMX94_PAD_GPIO_IO35__CAN2_RX                        0x009c 0x03a0 0x067c 0x02 0x01
+#define IMX94_PAD_GPIO_IO35__ECAT_SCL                       0x009c 0x03a0 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO35__FLEXIO1_3_1_FLEXIO9            0x009c 0x03a0 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO35__FLEXPWM3_PWMB1                 0x009c 0x03a0 0x06bc 0x05 0x00
+#define IMX94_PAD_GPIO_IO35__FLEXPWM1_PWMX1                 0x009c 0x03a0 0x069c 0x06 0x00
+#define IMX94_PAD_GPIO_IO35__XBAR1_XBAR_INOUT11             0x009c 0x03a0 0x0888 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO36__USDHC2_WP                      0x00a0 0x03a4 0x0854 0x03 0x01
+#define IMX94_PAD_GPIO_IO36__FLEXIO1_3_1_FLEXIO10           0x00a0 0x03a4 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO36__FLEXPWM3_PWMA2                 0x00a0 0x03a4 0x06b0 0x05 0x00
+#define IMX94_PAD_GPIO_IO36__FLEXPWM2_PWMX0                 0x00a0 0x03a4 0x06a0 0x06 0x00
+#define IMX94_PAD_GPIO_IO36__XBAR1_XBAR_INOUT12             0x00a0 0x03a4 0x088c 0x07 0x00
+#define IMX94_PAD_GPIO_IO36__GPIO3_IO4                      0x00a0 0x03a4 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO36__LPI2C8_SDA                     0x00a0 0x03a4 0x075c 0x01 0x03
+#define IMX94_PAD_GPIO_IO36__CAN4_TX                        0x00a0 0x03a4 0x0000 0x02 0x00
+
+#define IMX94_PAD_GPIO_IO37__GPIO3_IO5                      0x00a4 0x03a8 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO37__LPI2C8_SCL                     0x00a4 0x03a8 0x0758 0x01 0x03
+#define IMX94_PAD_GPIO_IO37__CAN4_RX                        0x00a4 0x03a8 0x0684 0x02 0x00
+#define IMX94_PAD_GPIO_IO37__LPI2C5_HREQ                    0x00a4 0x03a8 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO37__FLEXIO1_3_1_FLEXIO11           0x00a4 0x03a8 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO37__FLEXPWM3_PWMB2                 0x00a4 0x03a8 0x06c0 0x05 0x00
+#define IMX94_PAD_GPIO_IO37__FLEXPWM2_PWMX1                 0x00a4 0x03a8 0x06a4 0x06 0x00
+#define IMX94_PAD_GPIO_IO37__XBAR1_XBAR_INOUT13             0x00a4 0x03a8 0x0890 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO38__GPIO3_IO6                      0x00a8 0x03ac 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO38__NETC_1588MUX_INOUT0            0x00a8 0x03ac 0x064c 0x01 0x00
+#define IMX94_PAD_GPIO_IO38__LPI2C3_SDA                     0x00a8 0x03ac 0x0730 0x02 0x01
+#define IMX94_PAD_GPIO_IO38__LPIT3_TRIGGER2                 0x00a8 0x03ac 0x0764 0x03 0x00
+#define IMX94_PAD_GPIO_IO38__FLEXIO1_3_1_FLEXIO12           0x00a8 0x03ac 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO38__LPUART3_CTS_B                  0x00a8 0x03ac 0x07a0 0x05 0x00
+#define IMX94_PAD_GPIO_IO38__FLEXPWM3_PWMX0                 0x00a8 0x03ac 0x06c8 0x06 0x01
+#define IMX94_PAD_GPIO_IO38__XBAR1_XBAR_INOUT14             0x00a8 0x03ac 0x0894 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO39__GPIO3_IO7                      0x00ac 0x03b0 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO39__NETC_1588MUX_INOUT1            0x00ac 0x03b0 0x0650 0x01 0x00
+#define IMX94_PAD_GPIO_IO39__LPI2C3_SCL                     0x00ac 0x03b0 0x072c 0x02 0x01
+#define IMX94_PAD_GPIO_IO39__LPIT2_TRIGGER2                 0x00ac 0x03b0 0x0760 0x03 0x00
+#define IMX94_PAD_GPIO_IO39__FLEXIO1_3_1_FLEXIO13           0x00ac 0x03b0 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO39__LPUART3_RTS_B                  0x00ac 0x03b0 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO39__FLEXPWM3_PWMX1                 0x00ac 0x03b0 0x06cc 0x06 0x01
+#define IMX94_PAD_GPIO_IO39__XBAR1_XBAR_INOUT15             0x00ac 0x03b0 0x0898 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO40__GPIO3_IO8                      0x00b0 0x03b4 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO40__NETC_1588MUX_INOUT2            0x00b0 0x03b4 0x0654 0x01 0x00
+#define IMX94_PAD_GPIO_IO40__LPI2C7_SDA                     0x00b0 0x03b4 0x0754 0x02 0x03
+#define IMX94_PAD_GPIO_IO40__LPUART4_TX                     0x00b0 0x03b4 0x07b4 0x03 0x01
+#define IMX94_PAD_GPIO_IO40__FLEXIO1_3_1_FLEXIO14           0x00b0 0x03b4 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO40__FLEXPWM3_PWMX2                 0x00b0 0x03b4 0x06d0 0x05 0x00
+#define IMX94_PAD_GPIO_IO40__FLEXPWM4_PWMX0                 0x00b0 0x03b4 0x06f4 0x06 0x01
+#define IMX94_PAD_GPIO_IO40__XBAR1_XBAR_INOUT16             0x00b0 0x03b4 0x089c 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO41__GPIO3_IO9                      0x00b4 0x03b8 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO41__NETC_1588MUX_INOUT3            0x00b4 0x03b8 0x0658 0x01 0x00
+#define IMX94_PAD_GPIO_IO41__LPI2C7_SCL                     0x00b4 0x03b8 0x0750 0x02 0x03
+#define IMX94_PAD_GPIO_IO41__LPUART4_RX                     0x00b4 0x03b8 0x07b0 0x03 0x01
+#define IMX94_PAD_GPIO_IO41__FLEXIO1_3_1_FLEXIO15           0x00b4 0x03b8 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO41__LPI2C6_HREQ                    0x00b4 0x03b8 0x0744 0x05 0x01
+#define IMX94_PAD_GPIO_IO41__FLEXPWM4_PWMX1                 0x00b4 0x03b8 0x06f8 0x06 0x01
+#define IMX94_PAD_GPIO_IO41__XBAR1_XBAR_INOUT17             0x00b4 0x03b8 0x08a0 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO42__GPIO3_IO10                     0x00b8 0x03bc 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO42__SAI3_TX_BCLK                   0x00b8 0x03bc 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO42__PDM_BIT_STREAM2                0x00b8 0x03bc 0x0618 0x02 0x01
+#define IMX94_PAD_GPIO_IO42__XBAR1_XBAR_INOUT11             0x00b8 0x03bc 0x0888 0x03 0x01
+#define IMX94_PAD_GPIO_IO42__LPUART3_TX                     0x00b8 0x03bc 0x07a8 0x04 0x01
+#define IMX94_PAD_GPIO_IO42__LPSPI4_PCS2                    0x00b8 0x03bc 0x076c 0x05 0x01
+#define IMX94_PAD_GPIO_IO42__LPUART4_CTS_B                  0x00b8 0x03bc 0x07ac 0x06 0x00
+#define IMX94_PAD_GPIO_IO42__SINC4_EMCLK1                   0x00b8 0x03bc 0x0830 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO43__GPIO3_IO11                     0x00bc 0x03c0 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO43__SAI3_MCLK                      0x00bc 0x03c0 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO43__XBAR1_XBAR_INOUT12             0x00bc 0x03c0 0x088c 0x03 0x01
+#define IMX94_PAD_GPIO_IO43__LPUART3_RX                     0x00bc 0x03c0 0x07a4 0x04 0x01
+#define IMX94_PAD_GPIO_IO43__LPSPI3_PCS1                    0x00bc 0x03c0 0x0768 0x05 0x02
+#define IMX94_PAD_GPIO_IO43__LPUART4_RTS_B                  0x00bc 0x03c0 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO43__SINC4_EMBIT1                   0x00bc 0x03c0 0x0824 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO44__GPIO3_IO12                     0x00c0 0x03c4 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO44__SAI3_RX_BCLK                   0x00c0 0x03c4 0x0800 0x01 0x00
+#define IMX94_PAD_GPIO_IO44__PDM_BIT_STREAM1                0x00c0 0x03c4 0x0614 0x02 0x01
+#define IMX94_PAD_GPIO_IO44__LPUART9_TX                     0x00c0 0x03c4 0x07e4 0x03 0x00
+#define IMX94_PAD_GPIO_IO44__LPSPI5_PCS0                    0x00c0 0x03c4 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO44__LPI2C3_SDA                     0x00c0 0x03c4 0x0730 0x05 0x02
+#define IMX94_PAD_GPIO_IO44__TPM5_CH2                       0x00c0 0x03c4 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO44__SINC_FILTER_GLUE4_BREAK        0x00c0 0x03c4 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO45__GPIO3_IO13                     0x00c4 0x03c8 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO45__SAI3_RX_SYNC                   0x00c4 0x03c8 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO45__PDM_BIT_STREAM3                0x00c4 0x03c8 0x061c 0x02 0x01
+#define IMX94_PAD_GPIO_IO45__LPUART9_RX                     0x00c4 0x03c8 0x07e0 0x03 0x00
+#define IMX94_PAD_GPIO_IO45__LPSPI5_SIN                     0x00c4 0x03c8 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO45__LPI2C3_SCL                     0x00c4 0x03c8 0x072c 0x05 0x02
+#define IMX94_PAD_GPIO_IO45__TPM6_CH2                       0x00c4 0x03c8 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO45__SAI3_TX_DATA0                  0x00c4 0x03c8 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO46__GPIO3_IO14                     0x00c8 0x03cc 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO46__SAI3_RX_DATA0                  0x00c8 0x03cc 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO46__PDM_BIT_STREAM0                0x00c8 0x03cc 0x0610 0x02 0x01
+#define IMX94_PAD_GPIO_IO46__LPUART9_CTS_B                  0x00c8 0x03cc 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO46__LPSPI5_SOUT                    0x00c8 0x03cc 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO46__LPI2C4_SDA                     0x00c8 0x03cc 0x0738 0x05 0x01
+#define IMX94_PAD_GPIO_IO46__TPM3_CH1                       0x00c8 0x03cc 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO46__EWM_OUT_B                      0x00c8 0x03cc 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO47__GPIO3_IO15                     0x00cc 0x03d0 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO47__SAI3_TX_DATA0                  0x00cc 0x03d0 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO47__PDM_CLK                        0x00cc 0x03d0 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO47__LPUART9_RTS_B                  0x00cc 0x03d0 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO47__LPSPI5_SCK                     0x00cc 0x03d0 0x0000 0x04 0x00
+#define IMX94_PAD_GPIO_IO47__LPI2C4_SCL                     0x00cc 0x03d0 0x0734 0x05 0x01
+#define IMX94_PAD_GPIO_IO47__TPM4_CH1                       0x00cc 0x03d0 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO47__SAI3_RX_BCLK                   0x00cc 0x03d0 0x0800 0x07 0x01
+
+#define IMX94_PAD_GPIO_IO48__GPIO3_IO16                     0x00d0 0x03d4 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO48__USDHC3_CLK                     0x00d0 0x03d4 0x0000 0x01 0x00
+#define IMX94_PAD_GPIO_IO48__CAN5_TX                        0x00d0 0x03d4 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO48__LPUART10_TX                    0x00d0 0x03d4 0x0794 0x03 0x01
+#define IMX94_PAD_GPIO_IO48__TPM5_CH1                       0x00d0 0x03d4 0x0840 0x04 0x00
+#define IMX94_PAD_GPIO_IO48__TPM6_EXTCLK                    0x00d0 0x03d4 0x0850 0x05 0x00
+#define IMX94_PAD_GPIO_IO48__LPI2C5_SDA                     0x00d0 0x03d4 0x0740 0x06 0x02
+#define IMX94_PAD_GPIO_IO48__SINC4_EMCLK2                   0x00d0 0x03d4 0x0834 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO49__GPIO3_IO17                     0x00d4 0x03d8 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO49__USDHC3_CMD                     0x00d4 0x03d8 0x0858 0x01 0x00
+#define IMX94_PAD_GPIO_IO49__CAN5_RX                        0x00d4 0x03d8 0x0688 0x02 0x01
+#define IMX94_PAD_GPIO_IO49__LPUART10_RX                    0x00d4 0x03d8 0x0790 0x03 0x01
+#define IMX94_PAD_GPIO_IO49__TPM6_CH1                       0x00d4 0x03d8 0x0848 0x04 0x00
+#define IMX94_PAD_GPIO_IO49__XBAR1_XBAR_INOUT13             0x00d4 0x03d8 0x0890 0x05 0x01
+#define IMX94_PAD_GPIO_IO49__LPI2C5_SCL                     0x00d4 0x03d8 0x073c 0x06 0x02
+#define IMX94_PAD_GPIO_IO49__SINC4_EMBIT2                   0x00d4 0x03d8 0x0828 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO50__GPIO3_IO18                     0x00d8 0x03dc 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO50__USDHC3_DATA0                   0x00d8 0x03dc 0x085c 0x01 0x00
+#define IMX94_PAD_GPIO_IO50__XBAR1_XBAR_INOUT14             0x00d8 0x03dc 0x0894 0x02 0x01
+#define IMX94_PAD_GPIO_IO50__LPUART10_CTS_B                 0x00d8 0x03dc 0x078c 0x03 0x01
+#define IMX94_PAD_GPIO_IO50__TPM3_CH3                       0x00d8 0x03dc 0x0838 0x04 0x00
+#define IMX94_PAD_GPIO_IO50__JTAG_MUX_TDO                   0x00d8 0x03dc 0x0000 0x05 0x00
+#define IMX94_PAD_GPIO_IO50__LPSPI6_PCS1                    0x00d8 0x03dc 0x0774 0x06 0x00
+#define IMX94_PAD_GPIO_IO50__SINC4_EMCLK3                   0x00d8 0x03dc 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO51__GPIO3_IO19                     0x00dc 0x03e0 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO51__USDHC3_DATA1                   0x00dc 0x03e0 0x0860 0x01 0x00
+#define IMX94_PAD_GPIO_IO51__CAN2_TX                        0x00dc 0x03e0 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO51__LPUART10_RTS_B                 0x00dc 0x03e0 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO51__TPM4_CH3                       0x00dc 0x03e0 0x083c 0x04 0x00
+#define IMX94_PAD_GPIO_IO51__JTAG_MUX_TCK                   0x00dc 0x03e0 0x0928 0x05 0x01
+#define IMX94_PAD_GPIO_IO51__LPSPI7_PCS1                    0x00dc 0x03e0 0x0778 0x06 0x00
+#define IMX94_PAD_GPIO_IO51__SINC4_EMBIT3                   0x00dc 0x03e0 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO52__GPIO3_IO20                     0x00e0 0x03e4 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO52__USDHC3_DATA2                   0x00e0 0x03e4 0x0864 0x01 0x00
+#define IMX94_PAD_GPIO_IO52__PDM_BIT_STREAM1                0x00e0 0x03e4 0x0614 0x02 0x02
+#define IMX94_PAD_GPIO_IO52__LPSPI4_PCS2                    0x00e0 0x03e4 0x076c 0x03 0x02
+#define IMX94_PAD_GPIO_IO52__TPM5_CH3                       0x00e0 0x03e4 0x0844 0x04 0x00
+#define IMX94_PAD_GPIO_IO52__JTAG_MUX_TDI                   0x00e0 0x03e4 0x092c 0x05 0x01
+#define IMX94_PAD_GPIO_IO52__LPSPI8_PCS1                    0x00e0 0x03e4 0x077c 0x06 0x00
+#define IMX94_PAD_GPIO_IO52__SAI3_TX_SYNC                   0x00e0 0x03e4 0x0804 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO53__GPIO3_IO21                     0x00e4 0x03e8 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO53__USDHC3_DATA3                   0x00e4 0x03e8 0x0868 0x01 0x00
+#define IMX94_PAD_GPIO_IO53__CAN2_RX                        0x00e4 0x03e8 0x067c 0x02 0x02
+#define IMX94_PAD_GPIO_IO53__LPSPI3_PCS1                    0x00e4 0x03e8 0x0768 0x03 0x03
+#define IMX94_PAD_GPIO_IO53__TPM6_CH3                       0x00e4 0x03e8 0x084c 0x04 0x00
+#define IMX94_PAD_GPIO_IO53__JTAG_MUX_TMS                   0x00e4 0x03e8 0x0930 0x05 0x01
+#define IMX94_PAD_GPIO_IO53__LPSPI5_PCS1                    0x00e4 0x03e8 0x0770 0x06 0x00
+#define IMX94_PAD_GPIO_IO53__SINC4_MOD_CLK1                 0x00e4 0x03e8 0x0000 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO54__GPIO3_IO22                     0x00e8 0x03ec 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO54__NETC_1588MUX_INOUT4            0x00e8 0x03ec 0x065c 0x01 0x00
+#define IMX94_PAD_GPIO_IO54__CAN4_TX                        0x00e8 0x03ec 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO54__LPIT3_TRIGGER2                 0x00e8 0x03ec 0x0764 0x03 0x01
+#define IMX94_PAD_GPIO_IO54__LPSPI6_PCS1                    0x00e8 0x03ec 0x0774 0x04 0x01
+#define IMX94_PAD_GPIO_IO54__TPM3_CH3                       0x00e8 0x03ec 0x0838 0x05 0x01
+#define IMX94_PAD_GPIO_IO54__SINC3_EMCLK0                   0x00e8 0x03ec 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO54__XBAR1_XBAR_INOUT18             0x00e8 0x03ec 0x08a4 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO55__GPIO3_IO23                     0x00ec 0x03f0 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO55__NETC_1588MUX_INOUT5            0x00ec 0x03f0 0x0660 0x01 0x00
+#define IMX94_PAD_GPIO_IO55__CAN4_RX                        0x00ec 0x03f0 0x0684 0x02 0x01
+#define IMX94_PAD_GPIO_IO55__LPIT2_TRIGGER2                 0x00ec 0x03f0 0x0760 0x03 0x01
+#define IMX94_PAD_GPIO_IO55__LPSPI7_PCS1                    0x00ec 0x03f0 0x0778 0x04 0x01
+#define IMX94_PAD_GPIO_IO55__TPM4_CH3                       0x00ec 0x03f0 0x083c 0x05 0x01
+#define IMX94_PAD_GPIO_IO55__SINC3_EMBIT0                   0x00ec 0x03f0 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO55__XBAR1_XBAR_INOUT19             0x00ec 0x03f0 0x08a8 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO56__GPIO3_IO24                     0x00f0 0x03f4 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO56__NETC_1588MUX_INOUT6            0x00f0 0x03f4 0x0664 0x01 0x00
+#define IMX94_PAD_GPIO_IO56__CAN5_TX                        0x00f0 0x03f4 0x0000 0x02 0x00
+#define IMX94_PAD_GPIO_IO56__LPIT3_TRIGGER3                 0x00f0 0x03f4 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO56__LPSPI8_PCS1                    0x00f0 0x03f4 0x077c 0x04 0x01
+#define IMX94_PAD_GPIO_IO56__SAI3_TX_SYNC                   0x00f0 0x03f4 0x0804 0x05 0x01
+#define IMX94_PAD_GPIO_IO56__SINC3_EMCLK1                   0x00f0 0x03f4 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO56__XBAR1_XBAR_INOUT20             0x00f0 0x03f4 0x08ac 0x07 0x00
+
+#define IMX94_PAD_GPIO_IO57__GPIO3_IO25                     0x00f4 0x03f8 0x0000 0x00 0x00
+#define IMX94_PAD_GPIO_IO57__NETC_1588MUX_INOUT7            0x00f4 0x03f8 0x0668 0x01 0x00
+#define IMX94_PAD_GPIO_IO57__CAN5_RX                        0x00f4 0x03f8 0x0688 0x02 0x02
+#define IMX94_PAD_GPIO_IO57__LPIT2_TRIGGER3                 0x00f4 0x03f8 0x0000 0x03 0x00
+#define IMX94_PAD_GPIO_IO57__LPSPI5_PCS1                    0x00f4 0x03f8 0x0770 0x04 0x01
+#define IMX94_PAD_GPIO_IO57__TPM6_CH3                       0x00f4 0x03f8 0x084c 0x05 0x01
+#define IMX94_PAD_GPIO_IO57__SINC3_EMBIT1                   0x00f4 0x03f8 0x0000 0x06 0x00
+#define IMX94_PAD_GPIO_IO57__ENET_REF_CLK_ROOT              0x00f4 0x03f8 0x0000 0x07 0x00
+
+#define IMX94_PAD_CCM_CLKO1__CLKO_1                         0x00f8 0x03fc 0x0000 0x00 0x00
+#define IMX94_PAD_CCM_CLKO1__NETC_1588MUX_INOUT8            0x00f8 0x03fc 0x066c 0x01 0x00
+#define IMX94_PAD_CCM_CLKO1__LPUART9_TX                     0x00f8 0x03fc 0x07e4 0x02 0x01
+#define IMX94_PAD_CCM_CLKO1__ECAT_LED_RUN                   0x00f8 0x03fc 0x0000 0x03 0x00
+#define IMX94_PAD_CCM_CLKO1__TPM6_EXTCLK                    0x00f8 0x03fc 0x0850 0x04 0x01
+#define IMX94_PAD_CCM_CLKO1__GPIO4_IO0                      0x00f8 0x03fc 0x0000 0x05 0x00
+#define IMX94_PAD_CCM_CLKO1__SINC3_EMCLK2                   0x00f8 0x03fc 0x0000 0x06 0x00
+#define IMX94_PAD_CCM_CLKO1__XBAR1_XBAR_INOUT22             0x00f8 0x03fc 0x0000 0x07 0x00
+
+#define IMX94_PAD_CCM_CLKO2__CLKO_2                         0x00fc 0x0400 0x0000 0x00 0x00
+#define IMX94_PAD_CCM_CLKO2__NETC_1588MUX_INOUT9            0x00fc 0x0400 0x0670 0x01 0x00
+#define IMX94_PAD_CCM_CLKO2__LPUART9_RX                     0x00fc 0x0400 0x07e0 0x02 0x01
+#define IMX94_PAD_CCM_CLKO2__ECAT_LED_ERR                   0x00fc 0x0400 0x0000 0x03 0x00
+#define IMX94_PAD_CCM_CLKO2__TPM5_CH1                       0x00fc 0x0400 0x0840 0x04 0x01
+#define IMX94_PAD_CCM_CLKO2__GPIO4_IO1                      0x00fc 0x0400 0x0000 0x05 0x00
+#define IMX94_PAD_CCM_CLKO2__SINC3_EMBIT2                   0x00fc 0x0400 0x0000 0x06 0x00
+#define IMX94_PAD_CCM_CLKO2__XBAR1_XBAR_INOUT23             0x00fc 0x0400 0x0000 0x07 0x00
+
+#define IMX94_PAD_CCM_CLKO3__CLKO_3                         0x0100 0x0404 0x0000 0x00 0x00
+#define IMX94_PAD_CCM_CLKO3__NETC_1588MUX_INOUT10           0x0100 0x0404 0x0674 0x01 0x00
+#define IMX94_PAD_CCM_CLKO3__CAN3_TX                        0x0100 0x0404 0x0000 0x02 0x00
+#define IMX94_PAD_CCM_CLKO3__ECAT_LED_STATE_RUN             0x0100 0x0404 0x0000 0x03 0x00
+#define IMX94_PAD_CCM_CLKO3__TPM6_CH1                       0x0100 0x0404 0x0848 0x04 0x01
+#define IMX94_PAD_CCM_CLKO3__GPIO4_IO2                      0x0100 0x0404 0x0000 0x05 0x00
+#define IMX94_PAD_CCM_CLKO3__SINC3_EMCLK3                   0x0100 0x0404 0x0000 0x06 0x00
+#define IMX94_PAD_CCM_CLKO3__ENET_REF_CLK_ROOT              0x0100 0x0404 0x0000 0x07 0x00
+
+#define IMX94_PAD_CCM_CLKO4__CLKO_4                         0x0104 0x0408 0x0000 0x00 0x00
+#define IMX94_PAD_CCM_CLKO4__NETC_1588MUX_INOUT11           0x0104 0x0408 0x0000 0x01 0x00
+#define IMX94_PAD_CCM_CLKO4__CAN3_RX                        0x0104 0x0408 0x0680 0x02 0x01
+#define IMX94_PAD_CCM_CLKO4__ECAT_RESET_OUT                 0x0104 0x0408 0x0000 0x03 0x00
+#define IMX94_PAD_CCM_CLKO4__TPM5_CH3                       0x0104 0x0408 0x0844 0x04 0x01
+#define IMX94_PAD_CCM_CLKO4__GPIO4_IO3                      0x0104 0x0408 0x0000 0x05 0x00
+#define IMX94_PAD_CCM_CLKO4__SINC3_EMBIT3                   0x0104 0x0408 0x0000 0x06 0x00
+#define IMX94_PAD_CCM_CLKO4__XBAR1_XBAR_INOUT25             0x0104 0x0408 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH2_MDC_GPIO1__NETC_EMDC                 0x0108 0x040c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_MDC_GPIO1__NETC_ETH2_SLV_MDC         0x0108 0x040c 0x0000 0x01 0x00
+#define IMX94_PAD_ETH2_MDC_GPIO1__I3C2_SCL                  0x0108 0x040c 0x0720 0x02 0x02
+#define IMX94_PAD_ETH2_MDC_GPIO1__USB1_OTG_ID               0x0108 0x040c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH2_MDC_GPIO1__FLEXIO2_FLEXIO0           0x0108 0x040c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_MDC_GPIO1__GPIO6_IO0                 0x0108 0x040c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_MDC_GPIO1__FLEXPWM2_PWMX0            0x0108 0x040c 0x06a0 0x06 0x01
+#define IMX94_PAD_ETH2_MDC_GPIO1__XBAR1_XBAR_INOUT30        0x0108 0x040c 0x08b0 0x07 0x01
+
+#define IMX94_PAD_ETH2_MDIO_GPIO2__NETC_EMDIO               0x010c 0x0410 0x0678 0x00 0x00
+#define IMX94_PAD_ETH2_MDIO_GPIO2__NETC_ETH2_SLV_MDIO       0x010c 0x0410 0x0000 0x01 0x00
+#define IMX94_PAD_ETH2_MDIO_GPIO2__I3C2_SDA                 0x010c 0x0410 0x0724 0x02 0x02
+#define IMX94_PAD_ETH2_MDIO_GPIO2__USB1_OTG_PWR             0x010c 0x0410 0x0000 0x03 0x00
+#define IMX94_PAD_ETH2_MDIO_GPIO2__FLEXIO2_FLEXIO1          0x010c 0x0410 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_MDIO_GPIO2__GPIO6_IO1                0x010c 0x0410 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_MDIO_GPIO2__FLEXPWM2_PWMX1           0x010c 0x0410 0x06a4 0x06 0x01
+#define IMX94_PAD_ETH2_MDIO_GPIO2__XBAR1_XBAR_INOUT31       0x010c 0x0410 0x08b4 0x07 0x01
+
+#define IMX94_PAD_ETH2_TXD3__NETC_PINMUX_ETH2_TXD3          0x0110 0x0414 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_TXD3__LPUART3_DCD_B                  0x0110 0x0414 0x0000 0x01 0x00
+#define IMX94_PAD_ETH2_TXD3__CAN2_TX                        0x0110 0x0414 0x0000 0x02 0x00
+#define IMX94_PAD_ETH2_TXD3__USB2_OTG_ID                    0x0110 0x0414 0x0000 0x03 0x00
+#define IMX94_PAD_ETH2_TXD3__FLEXIO2_FLEXIO2                0x0110 0x0414 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_TXD3__GPIO6_IO2                      0x0110 0x0414 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_TXD3__FLEXPWM2_PWMA0                 0x0110 0x0414 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_TXD3__XBAR1_XBAR_INOUT32             0x0110 0x0414 0x08b8 0x07 0x01
+
+#define IMX94_PAD_ETH2_TXD2__NETC_PINMUX_ETH2_TXD2          0x0114 0x0418 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_TXD2__ETH2_RMII_REF50_CLK            0x0114 0x0418 0x0000 0x01 0x00
+#define IMX94_PAD_ETH2_TXD2__CAN2_RX                        0x0114 0x0418 0x067c 0x02 0x03
+#define IMX94_PAD_ETH2_TXD2__USB2_OTG_OC                    0x0114 0x0418 0x0000 0x03 0x00
+#define IMX94_PAD_ETH2_TXD2__FLEXIO2_FLEXIO3                0x0114 0x0418 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_TXD2__GPIO6_IO3                      0x0114 0x0418 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_TXD2__FLEXPWM2_PWMB0                 0x0114 0x0418 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_TXD2__XBAR1_XBAR_INOUT33             0x0114 0x0418 0x08bc 0x07 0x01
+
+#define IMX94_PAD_ETH2_TXD1__NETC_PINMUX_ETH2_TXD1          0x0118 0x041c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_TXD1__LPUART3_RTS_B                  0x0118 0x041c 0x0000 0x01 0x00
+#define IMX94_PAD_ETH2_TXD1__ECAT_CLK25                     0x0118 0x041c 0x0000 0x02 0x00
+#define IMX94_PAD_ETH2_TXD1__USB1_OTG_OC                    0x0118 0x041c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH2_TXD1__FLEXIO2_FLEXIO4                0x0118 0x041c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_TXD1__GPIO6_IO4                      0x0118 0x041c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_TXD1__FLEXPWM2_PWMA1                 0x0118 0x041c 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_TXD1__XBAR1_XBAR_INOUT34             0x0118 0x041c 0x08c0 0x07 0x01
+
+#define IMX94_PAD_ETH2_TXD0__NETC_PINMUX_ETH2_TXD0          0x011c 0x0420 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_TXD0__LPUART3_TX                     0x011c 0x0420 0x07a8 0x01 0x02
+#define IMX94_PAD_ETH2_TXD0__I3C2_PUR                       0x011c 0x0420 0x0000 0x02 0x00
+#define IMX94_PAD_ETH2_TXD0__I3C2_PUR_B                     0x011c 0x0420 0x0000 0x03 0x00
+#define IMX94_PAD_ETH2_TXD0__FLEXIO2_FLEXIO5                0x011c 0x0420 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_TXD0__GPIO6_IO5                      0x011c 0x0420 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_TXD0__FLEXPWM2_PWMB1                 0x011c 0x0420 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_TXD0__XBAR1_XBAR_INOUT35             0x011c 0x0420 0x08c4 0x07 0x01
+
+#define IMX94_PAD_ETH2_TX_CTL__NETC_PINMUX_ETH2_TX_CTL      0x0120 0x0424 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_TX_CTL__LPUART3_DTR_B                0x0120 0x0424 0x0000 0x01 0x00
+#define IMX94_PAD_ETH2_TX_CTL__ECAT_LED_RUN                 0x0120 0x0424 0x0000 0x02 0x00
+#define IMX94_PAD_ETH2_TX_CTL__FLEXIO2_FLEXIO6              0x0120 0x0424 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_TX_CTL__GPIO6_IO6                    0x0120 0x0424 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_TX_CTL__FLEXPWM2_PWMA2               0x0120 0x0424 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_TX_CTL__XBAR1_XBAR_INOUT36           0x0120 0x0424 0x08c8 0x07 0x01
+
+#define IMX94_PAD_ETH2_TX_CLK__NETC_PINMUX_ETH2_TX_CLK      0x0124 0x0428 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_TX_CLK__ECAT_LED_ERR                 0x0124 0x0428 0x0000 0x02 0x00
+#define IMX94_PAD_ETH2_TX_CLK__FLEXIO2_FLEXIO7              0x0124 0x0428 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_TX_CLK__GPIO6_IO7                    0x0124 0x0428 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_TX_CLK__FLEXPWM2_PWMB2               0x0124 0x0428 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_TX_CLK__XBAR1_XBAR_INOUT37           0x0124 0x0428 0x08cc 0x07 0x01
+
+#define IMX94_PAD_ETH2_RX_CTL__NETC_PINMUX_ETH2_RX_CTL      0x0128 0x042c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_RX_CTL__LPUART3_DSR_B                0x0128 0x042c 0x0000 0x01 0x00
+#define IMX94_PAD_ETH2_RX_CTL__ECAT_LED_STATE_RUN           0x0128 0x042c 0x0000 0x02 0x00
+#define IMX94_PAD_ETH2_RX_CTL__USB2_OTG_PWR                 0x0128 0x042c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH2_RX_CTL__FLEXIO2_FLEXIO8              0x0128 0x042c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_RX_CTL__GPIO6_IO8                    0x0128 0x042c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_RX_CTL__FLEXPWM2_PWMA3               0x0128 0x042c 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_RX_CTL__SINC4_EMCLK0                 0x0128 0x042c 0x082c 0x07 0x01
+
+#define IMX94_PAD_ETH2_RX_CLK__NETC_PINMUX_ETH2_RX_CLK      0x012c 0x0430 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_RX_CLK__LPUART3_RIN_B                0x012c 0x0430 0x0000 0x01 0x00
+#define IMX94_PAD_ETH2_RX_CLK__ECAT_RESET_OUT               0x012c 0x0430 0x0000 0x02 0x00
+#define IMX94_PAD_ETH2_RX_CLK__XBAR1_XBAR_INOUT38           0x012c 0x0430 0x08d0 0x03 0x01
+#define IMX94_PAD_ETH2_RX_CLK__FLEXIO2_FLEXIO9              0x012c 0x0430 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_RX_CLK__GPIO6_IO9                    0x012c 0x0430 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_RX_CLK__FLEXPWM2_PWMB3               0x012c 0x0430 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_RX_CLK__SINC4_EMBIT0                 0x012c 0x0430 0x0820 0x07 0x01
+
+#define IMX94_PAD_ETH2_RXD0__NETC_PINMUX_ETH2_RXD0          0x0130 0x0434 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_RXD0__LPUART3_RX                     0x0130 0x0434 0x07a4 0x01 0x02
+#define IMX94_PAD_ETH2_RXD0__FLEXIO2_FLEXIO10               0x0130 0x0434 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_RXD0__GPIO6_IO10                     0x0130 0x0434 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_RXD0__DIG_ENCODER2_DATA_EN           0x0130 0x0434 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_RXD0__XBAR1_XBAR_INOUT39             0x0130 0x0434 0x08d4 0x07 0x01
+
+#define IMX94_PAD_ETH2_RXD1__NETC_PINMUX_ETH2_RXD1          0x0134 0x0438 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_RXD1__LPUART3_CTS_B                  0x0134 0x0438 0x07a0 0x01 0x01
+#define IMX94_PAD_ETH2_RXD1__LPTMR2_ALT0                    0x0134 0x0438 0x0780 0x03 0x00
+#define IMX94_PAD_ETH2_RXD1__FLEXIO2_FLEXIO11               0x0134 0x0438 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_RXD1__GPIO6_IO11                     0x0134 0x0438 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_RXD1__DIG_ENCODER2_DATA_CLK          0x0134 0x0438 0x068c 0x06 0x00
+#define IMX94_PAD_ETH2_RXD1__XBAR1_XBAR_INOUT40             0x0134 0x0438 0x08d8 0x07 0x01
+
+#define IMX94_PAD_ETH2_RXD2__NETC_PINMUX_ETH2_RXD2          0x0138 0x043c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_RXD2__LPTMR2_ALT1                    0x0138 0x043c 0x0784 0x03 0x00
+#define IMX94_PAD_ETH2_RXD2__FLEXIO2_FLEXIO12               0x0138 0x043c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_RXD2__GPIO6_IO12                     0x0138 0x043c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_RXD2__DIG_ENCODER2_DATA_OUT          0x0138 0x043c 0x0000 0x06 0x00
+#define IMX94_PAD_ETH2_RXD2__XBAR1_XBAR_INOUT41             0x0138 0x043c 0x08dc 0x07 0x01
+
+#define IMX94_PAD_ETH2_RXD3__NETC_PINMUX_ETH2_RXD3          0x013c 0x0440 0x0000 0x00 0x00
+#define IMX94_PAD_ETH2_RXD3__LPTMR2_ALT2                    0x013c 0x0440 0x0788 0x03 0x00
+#define IMX94_PAD_ETH2_RXD3__FLEXIO2_FLEXIO13               0x013c 0x0440 0x0000 0x04 0x00
+#define IMX94_PAD_ETH2_RXD3__GPIO6_IO13                     0x013c 0x0440 0x0000 0x05 0x00
+#define IMX94_PAD_ETH2_RXD3__DIG_ENCODER2_DATA_IN           0x013c 0x0440 0x0690 0x06 0x00
+#define IMX94_PAD_ETH2_RXD3__XBAR1_XBAR_INOUT42             0x013c 0x0440 0x08e0 0x07 0x01
+
+#define IMX94_PAD_ETH3_MDC_GPIO1__NETC_EMDC                 0x0140 0x0444 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_MDC_GPIO1__LPUART4_DCD_B             0x0140 0x0444 0x0000 0x01 0x00
+#define IMX94_PAD_ETH3_MDC_GPIO1__NETC_ETH3_SLV_MDC         0x0140 0x0444 0x0000 0x02 0x00
+#define IMX94_PAD_ETH3_MDC_GPIO1__SAI4_TX_SYNC              0x0140 0x0444 0x081c 0x03 0x00
+#define IMX94_PAD_ETH3_MDC_GPIO1__FLEXIO2_FLEXIO14          0x0140 0x0444 0x0000 0x04 0x00
+#define IMX94_PAD_ETH3_MDC_GPIO1__GPIO6_IO14                0x0140 0x0444 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_MDC_GPIO1__FLEXPWM1_PWMX0            0x0140 0x0444 0x0698 0x06 0x01
+#define IMX94_PAD_ETH3_MDC_GPIO1__SINC4_MOD_CLK0            0x0140 0x0444 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH3_MDIO_GPIO2__NETC_EMDIO               0x0144 0x0448 0x0678 0x00 0x01
+#define IMX94_PAD_ETH3_MDIO_GPIO2__LPUART4_RIN_B            0x0144 0x0448 0x0000 0x01 0x00
+#define IMX94_PAD_ETH3_MDIO_GPIO2__NETC_ETH3_SLV_MDIO       0x0144 0x0448 0x0000 0x02 0x00
+#define IMX94_PAD_ETH3_MDIO_GPIO2__SAI4_TX_BCLK             0x0144 0x0448 0x0818 0x03 0x00
+#define IMX94_PAD_ETH3_MDIO_GPIO2__FLEXIO2_FLEXIO15         0x0144 0x0448 0x0000 0x04 0x00
+#define IMX94_PAD_ETH3_MDIO_GPIO2__GPIO6_IO15               0x0144 0x0448 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_MDIO_GPIO2__FLEXPWM1_PWMX1           0x0144 0x0448 0x069c 0x06 0x01
+#define IMX94_PAD_ETH3_MDIO_GPIO2__SINC4_MOD_CLK1           0x0144 0x0448 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH3_TXD3__NETC_PINMUX_ETH3_TXD3          0x0148 0x044c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_TXD3__XSPI_SLV_DATA7                 0x0148 0x044c 0x0924 0x02 0x00
+#define IMX94_PAD_ETH3_TXD3__SAI4_TX_DATA0                  0x0148 0x044c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH3_TXD3__LPUART3_TX                     0x0148 0x044c 0x07a8 0x04 0x03
+#define IMX94_PAD_ETH3_TXD3__GPIO6_IO16                     0x0148 0x044c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_TXD3__FLEXPWM1_PWMA0                 0x0148 0x044c 0x0000 0x06 0x00
+
+#define IMX94_PAD_ETH3_TXD2__NETC_PINMUX_ETH3_TXD2          0x014c 0x0450 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_TXD2__ETH3_RMII_REF50_CLK            0x014c 0x0450 0x0000 0x01 0x00
+#define IMX94_PAD_ETH3_TXD2__XSPI_SLV_DATA6                 0x014c 0x0450 0x0920 0x02 0x00
+#define IMX94_PAD_ETH3_TXD2__SAI4_RX_SYNC                   0x014c 0x0450 0x0814 0x03 0x00
+#define IMX94_PAD_ETH3_TXD2__GPIO6_IO17                     0x014c 0x0450 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_TXD2__FLEXPWM1_PWMB0                 0x014c 0x0450 0x0000 0x06 0x00
+
+#define IMX94_PAD_ETH3_TXD1__NETC_PINMUX_ETH3_TXD1          0x0150 0x0454 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_TXD1__LPUART4_RTS_B                  0x0150 0x0454 0x0000 0x01 0x00
+#define IMX94_PAD_ETH3_TXD1__XSPI_SLV_DATA5                 0x0150 0x0454 0x091c 0x02 0x00
+#define IMX94_PAD_ETH3_TXD1__SAI4_RX_BCLK                   0x0150 0x0454 0x080c 0x03 0x00
+#define IMX94_PAD_ETH3_TXD1__GPIO6_IO18                     0x0150 0x0454 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_TXD1__FLEXPWM1_PWMA1                 0x0150 0x0454 0x0000 0x06 0x00
+
+#define IMX94_PAD_ETH3_TXD0__NETC_PINMUX_ETH3_TXD0          0x0154 0x0458 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_TXD0__LPUART4_TX                     0x0154 0x0458 0x07b4 0x01 0x02
+#define IMX94_PAD_ETH3_TXD0__XSPI_SLV_DATA4                 0x0154 0x0458 0x0918 0x02 0x00
+#define IMX94_PAD_ETH3_TXD0__SAI4_RX_DATA0                  0x0154 0x0458 0x0810 0x03 0x00
+#define IMX94_PAD_ETH3_TXD0__GPIO6_IO19                     0x0154 0x0458 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_TXD0__FLEXPWM1_PWMB1                 0x0154 0x0458 0x0000 0x06 0x00
+
+#define IMX94_PAD_ETH3_TX_CTL__NETC_PINMUX_ETH3_TX_CTL      0x0158 0x045c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_TX_CTL__LPUART4_DTR_B                0x0158 0x045c 0x0000 0x01 0x00
+#define IMX94_PAD_ETH3_TX_CTL__XSPI_SLV_DQS                 0x0158 0x045c 0x0900 0x02 0x00
+#define IMX94_PAD_ETH3_TX_CTL__SAI4_MCLK                    0x0158 0x045c 0x0808 0x03 0x00
+#define IMX94_PAD_ETH3_TX_CTL__LPUART3_RX                   0x0158 0x045c 0x07a4 0x04 0x03
+#define IMX94_PAD_ETH3_TX_CTL__GPIO6_IO20                   0x0158 0x045c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_TX_CTL__FLEXPWM1_PWMA2               0x0158 0x045c 0x0000 0x06 0x00
+
+#define IMX94_PAD_ETH3_TX_CLK__NETC_PINMUX_ETH3_TX_CLK      0x015c 0x0460 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_TX_CLK__XSPI_SLV_CLK                 0x015c 0x0460 0x0904 0x02 0x00
+#define IMX94_PAD_ETH3_TX_CLK__SAI2_TX_SYNC                 0x015c 0x0460 0x07fc 0x03 0x01
+#define IMX94_PAD_ETH3_TX_CLK__LPUART3_CTS_B                0x015c 0x0460 0x07a0 0x04 0x02
+#define IMX94_PAD_ETH3_TX_CLK__GPIO6_IO21                   0x015c 0x0460 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_TX_CLK__FLEXPWM1_PWMB2               0x015c 0x0460 0x0000 0x06 0x00
+
+#define IMX94_PAD_ETH3_RX_CTL__NETC_PINMUX_ETH3_RX_CTL      0x0160 0x0464 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_RX_CTL__LPUART4_DSR_B                0x0160 0x0464 0x0000 0x01 0x00
+#define IMX94_PAD_ETH3_RX_CTL__XSPI_SLV_CS                  0x0160 0x0464 0x08fc 0x02 0x00
+#define IMX94_PAD_ETH3_RX_CTL__SAI2_TX_BCLK                 0x0160 0x0464 0x07f8 0x03 0x01
+#define IMX94_PAD_ETH3_RX_CTL__XBAR1_XBAR_INOUT43           0x0160 0x0464 0x08e4 0x04 0x01
+#define IMX94_PAD_ETH3_RX_CTL__GPIO6_IO22                   0x0160 0x0464 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_RX_CTL__FLEXPWM1_PWMA3               0x0160 0x0464 0x0000 0x06 0x00
+#define IMX94_PAD_ETH3_RX_CTL__SINC4_EMCLK1                 0x0160 0x0464 0x0830 0x07 0x01
+
+#define IMX94_PAD_ETH3_RX_CLK__NETC_PINMUX_ETH3_RX_CLK      0x0164 0x0468 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_RX_CLK__LPUART4_CTS_B                0x0164 0x0468 0x07ac 0x01 0x01
+#define IMX94_PAD_ETH3_RX_CLK__XSPI_SLV_DATA3               0x0164 0x0468 0x0914 0x02 0x00
+#define IMX94_PAD_ETH3_RX_CLK__SAI2_TX_DATA0                0x0164 0x0468 0x0000 0x03 0x00
+#define IMX94_PAD_ETH3_RX_CLK__XBAR1_XBAR_INOUT44           0x0164 0x0468 0x08e8 0x04 0x01
+#define IMX94_PAD_ETH3_RX_CLK__GPIO6_IO23                   0x0164 0x0468 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_RX_CLK__FLEXPWM1_PWMB3               0x0164 0x0468 0x0000 0x06 0x00
+#define IMX94_PAD_ETH3_RX_CLK__SINC4_EMBIT1                 0x0164 0x0468 0x0824 0x07 0x01
+
+#define IMX94_PAD_ETH3_RXD0__NETC_PINMUX_ETH3_RXD0          0x0168 0x046c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_RXD0__LPUART4_RX                     0x0168 0x046c 0x07b0 0x01 0x02
+#define IMX94_PAD_ETH3_RXD0__XSPI_SLV_DATA2                 0x0168 0x046c 0x0910 0x02 0x00
+#define IMX94_PAD_ETH3_RXD0__SAI2_RX_SYNC                   0x0168 0x046c 0x07f4 0x03 0x01
+#define IMX94_PAD_ETH3_RXD0__GPIO6_IO24                     0x0168 0x046c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_RXD0__DIG_ENCODER1_DATA_EN           0x0168 0x046c 0x0000 0x06 0x00
+#define IMX94_PAD_ETH3_RXD0__XBAR1_XBAR_INOUT45             0x0168 0x046c 0x08ec 0x07 0x01
+
+#define IMX94_PAD_ETH3_RXD1__NETC_PINMUX_ETH3_RXD1          0x016c 0x0470 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_RXD1__XSPI_SLV_DATA1                 0x016c 0x0470 0x090c 0x02 0x00
+#define IMX94_PAD_ETH3_RXD1__SAI2_RX_BCLK                   0x016c 0x0470 0x07ec 0x03 0x01
+#define IMX94_PAD_ETH3_RXD1__LPUART3_RTS_B                  0x016c 0x0470 0x0000 0x04 0x00
+#define IMX94_PAD_ETH3_RXD1__GPIO6_IO25                     0x016c 0x0470 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_RXD1__DIG_ENCODER1_DATA_CLK          0x016c 0x0470 0x0000 0x06 0x00
+#define IMX94_PAD_ETH3_RXD1__XBAR1_XBAR_INOUT46             0x016c 0x0470 0x08f0 0x07 0x01
+
+#define IMX94_PAD_ETH3_RXD2__NETC_PINMUX_ETH3_RXD2          0x0170 0x0474 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_RXD2__MQS2_RIGHT                     0x0170 0x0474 0x0000 0x01 0x00
+#define IMX94_PAD_ETH3_RXD2__XSPI_SLV_DATA0                 0x0170 0x0474 0x0908 0x02 0x00
+#define IMX94_PAD_ETH3_RXD2__SAI2_RX_DATA0                  0x0170 0x0474 0x07f0 0x03 0x01
+#define IMX94_PAD_ETH3_RXD2__GPIO6_IO26                     0x0170 0x0474 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_RXD2__DIG_ENCODER1_DATA_OUT          0x0170 0x0474 0x0000 0x06 0x00
+#define IMX94_PAD_ETH3_RXD2__XBAR1_XBAR_INOUT47             0x0170 0x0474 0x08f4 0x07 0x01
+
+#define IMX94_PAD_ETH3_RXD3__NETC_PINMUX_ETH3_RXD3          0x0174 0x0478 0x0000 0x00 0x00
+#define IMX94_PAD_ETH3_RXD3__MQS2_LEFT                      0x0174 0x0478 0x0000 0x01 0x00
+#define IMX94_PAD_ETH3_RXD3__SAI2_MCLK                      0x0174 0x0478 0x07e8 0x03 0x01
+#define IMX94_PAD_ETH3_RXD3__GPIO6_IO27                     0x0174 0x0478 0x0000 0x05 0x00
+#define IMX94_PAD_ETH3_RXD3__DIG_ENCODER1_DATA_IN           0x0174 0x0478 0x0000 0x06 0x00
+#define IMX94_PAD_ETH3_RXD3__XBAR1_XBAR_INOUT48             0x0174 0x0478 0x08f8 0x07 0x01
+
+#define IMX94_PAD_ETH4_MDC_GPIO1__NETC_EMDC                 0x0178 0x047c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH4_MDC_GPIO1__ECAT_MDC                  0x0178 0x047c 0x0000 0x01 0x00
+#define IMX94_PAD_ETH4_MDC_GPIO1__ECAT_CLK25                0x0178 0x047c 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_MDC_GPIO1__NETC_ETH4_SLV_MDC         0x0178 0x047c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_MDC_GPIO1__FLEXIO1_3_2_FLEXIO12      0x0178 0x047c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_MDC_GPIO1__GPIO6_IO28                0x0178 0x047c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_MDC_GPIO1__FLEXPWM4_PWMX0            0x0178 0x047c 0x06f4 0x06 0x02
+#define IMX94_PAD_ETH4_MDC_GPIO1__SINC4_MOD_CLK2            0x0178 0x047c 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH4_MDIO_GPIO2__NETC_EMDIO               0x017c 0x0480 0x0678 0x00 0x02
+#define IMX94_PAD_ETH4_MDIO_GPIO2__ECAT_MDIO                0x017c 0x0480 0x0628 0x01 0x00
+#define IMX94_PAD_ETH4_MDIO_GPIO2__ENET_REF_CLK_ROOT        0x017c 0x0480 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_MDIO_GPIO2__NETC_ETH4_SLV_MDIO       0x017c 0x0480 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_MDIO_GPIO2__FLEXIO1_3_2_FLEXIO13     0x017c 0x0480 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_MDIO_GPIO2__GPIO6_IO29               0x017c 0x0480 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_MDIO_GPIO2__FLEXPWM4_PWMX1           0x017c 0x0480 0x06f8 0x06 0x02
+#define IMX94_PAD_ETH4_MDIO_GPIO2__SINC_FILTER_GLUE4_BREAK  0x017c 0x0480 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH4_TX_CLK__NETC_PINMUX_ETH4_TX_CLK      0x0180 0x0484 0x0648 0x00 0x00
+#define IMX94_PAD_ETH4_TX_CLK__USDHC3_CLK                   0x0180 0x0484 0x0000 0x01 0x00
+#define IMX94_PAD_ETH4_TX_CLK__XSPI2_A_SCLK                 0x0180 0x0484 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_TX_CLK__ECAT_LED_ERR                 0x0180 0x0484 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_TX_CLK__FLEXIO1_3_2_FLEXIO0          0x0180 0x0484 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_TX_CLK__GPIO6_IO30                   0x0180 0x0484 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_TX_CLK__FLEXPWM4_PWMA0               0x0180 0x0484 0x06d4 0x06 0x01
+#define IMX94_PAD_ETH4_TX_CLK__XBAR1_XBAR_INOUT30           0x0180 0x0484 0x08b0 0x07 0x02
+
+#define IMX94_PAD_ETH4_TX_CTL__NETC_PINMUX_ETH4_TX_CTL      0x0184 0x0488 0x0000 0x00 0x00
+#define IMX94_PAD_ETH4_TX_CTL__USDHC3_CMD                   0x0184 0x0488 0x0858 0x01 0x01
+#define IMX94_PAD_ETH4_TX_CTL__XSPI2_A_SS0_B                0x0184 0x0488 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_TX_CTL__ECAT_RESET_OUT               0x0184 0x0488 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_TX_CTL__FLEXIO1_3_2_FLEXIO1          0x0184 0x0488 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_TX_CTL__GPIO6_IO31                   0x0184 0x0488 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_TX_CTL__FLEXPWM4_PWMB0               0x0184 0x0488 0x06e4 0x06 0x01
+#define IMX94_PAD_ETH4_TX_CTL__XBAR1_XBAR_INOUT31           0x0184 0x0488 0x08b4 0x07 0x02
+
+#define IMX94_PAD_ETH4_TXD0__NETC_PINMUX_ETH4_TXD0          0x0188 0x048c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH4_TXD0__USDHC3_DATA0                   0x0188 0x048c 0x085c 0x01 0x01
+#define IMX94_PAD_ETH4_TXD0__XSPI2_A_DATA0                  0x0188 0x048c 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_TXD0__ECAT_LED_RUN                   0x0188 0x048c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_TXD0__FLEXIO1_3_2_FLEXIO2            0x0188 0x048c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_TXD0__GPIO7_IO0                      0x0188 0x048c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_TXD0__FLEXPWM4_PWMA1                 0x0188 0x048c 0x06d8 0x06 0x01
+#define IMX94_PAD_ETH4_TXD0__XBAR1_XBAR_INOUT32             0x0188 0x048c 0x08b8 0x07 0x02
+
+#define IMX94_PAD_ETH4_TXD1__NETC_PINMUX_ETH4_TXD1          0x018c 0x0490 0x0000 0x00 0x00
+#define IMX94_PAD_ETH4_TXD1__USDHC3_DATA1                   0x018c 0x0490 0x0860 0x01 0x01
+#define IMX94_PAD_ETH4_TXD1__XSPI2_A_DATA1                  0x018c 0x0490 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_TXD1__ECAT_LED_STATE_RUN             0x018c 0x0490 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_TXD1__FLEXIO1_3_2_FLEXIO3            0x018c 0x0490 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_TXD1__GPIO7_IO1                      0x018c 0x0490 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_TXD1__FLEXPWM4_PWMB1                 0x018c 0x0490 0x06e8 0x06 0x01
+#define IMX94_PAD_ETH4_TXD1__XBAR1_XBAR_INOUT33             0x018c 0x0490 0x08bc 0x07 0x02
+
+#define IMX94_PAD_ETH4_TXD2__NETC_PINMUX_ETH4_TXD2          0x0190 0x0494 0x0000 0x00 0x00
+#define IMX94_PAD_ETH4_TXD2__USDHC3_DATA2                   0x0190 0x0494 0x0864 0x01 0x01
+#define IMX94_PAD_ETH4_TXD2__XSPI2_A_DATA2                  0x0190 0x0494 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_TXD2__ECAT_CLK25                     0x0190 0x0494 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_TXD2__FLEXIO1_3_2_FLEXIO4            0x0190 0x0494 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_TXD2__GPIO7_IO2                      0x0190 0x0494 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_TXD2__FLEXPWM4_PWMA2                 0x0190 0x0494 0x06dc 0x06 0x01
+#define IMX94_PAD_ETH4_TXD2__ETH4_RMII_REF50_CLK            0x0190 0x0494 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH4_TXD3__NETC_PINMUX_ETH4_TXD3          0x0194 0x0498 0x0000 0x00 0x00
+#define IMX94_PAD_ETH4_TXD3__USDHC3_DATA3                   0x0194 0x0498 0x0868 0x01 0x01
+#define IMX94_PAD_ETH4_TXD3__XSPI2_A_DATA3                  0x0194 0x0498 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_TXD3__FLEXIO1_3_2_FLEXIO5            0x0194 0x0498 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_TXD3__GPIO7_IO3                      0x0194 0x0498 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_TXD3__FLEXPWM4_PWMB2                 0x0194 0x0498 0x06ec 0x06 0x01
+#define IMX94_PAD_ETH4_TXD3__XBAR1_XBAR_INOUT35             0x0194 0x0498 0x08c4 0x07 0x02
+
+#define IMX94_PAD_ETH4_RXD0__NETC_PINMUX_ETH4_RXD0          0x0198 0x049c 0x0638 0x00 0x00
+#define IMX94_PAD_ETH4_RXD0__XSPI2_A_DATA4                  0x0198 0x049c 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_RXD0__FLEXIO1_3_2_FLEXIO6            0x0198 0x049c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_RXD0__GPIO7_IO4                      0x0198 0x049c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_RXD0__FLEXPWM4_PWMA3                 0x0198 0x049c 0x06e0 0x06 0x01
+#define IMX94_PAD_ETH4_RXD0__SINC4_EMCLK2                   0x0198 0x049c 0x0834 0x07 0x01
+
+#define IMX94_PAD_ETH4_RXD1__NETC_PINMUX_ETH4_RXD1          0x019c 0x04a0 0x063c 0x00 0x00
+#define IMX94_PAD_ETH4_RXD1__XSPI2_A_DATA5                  0x019c 0x04a0 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_RXD1__FLEXIO2_4_1_FLEXIO11           0x019c 0x04a0 0x0694 0x03 0x00
+#define IMX94_PAD_ETH4_RXD1__FLEXIO1_3_2_FLEXIO7            0x019c 0x04a0 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_RXD1__GPIO7_IO5                      0x019c 0x04a0 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_RXD1__FLEXPWM4_PWMB3                 0x019c 0x04a0 0x06f0 0x06 0x01
+#define IMX94_PAD_ETH4_RXD1__SINC4_EMBIT2                   0x019c 0x04a0 0x0828 0x07 0x01
+
+#define IMX94_PAD_ETH4_RXD2__NETC_PINMUX_ETH4_RXD2          0x01a0 0x04a4 0x0640 0x00 0x00
+#define IMX94_PAD_ETH4_RXD2__XSPI2_A_DATA6                  0x01a0 0x04a4 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_RXD2__FLEXIO2_4_1_FLEXIO12           0x01a0 0x04a4 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_RXD2__FLEXIO1_3_2_FLEXIO8            0x01a0 0x04a4 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_RXD2__GPIO7_IO6                      0x01a0 0x04a4 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_RXD2__DIG_ENCODER2_DATA_EN           0x01a0 0x04a4 0x0000 0x06 0x00
+#define IMX94_PAD_ETH4_RXD2__XBAR1_XBAR_INOUT4              0x01a0 0x04a4 0x086c 0x07 0x01
+
+#define IMX94_PAD_ETH4_RXD3__NETC_PINMUX_ETH4_RXD3          0x01a4 0x04a8 0x0644 0x00 0x00
+#define IMX94_PAD_ETH4_RXD3__ENET_REF_CLK_ROOT              0x01a4 0x04a8 0x0000 0x01 0x00
+#define IMX94_PAD_ETH4_RXD3__XSPI2_A_DATA7                  0x01a4 0x04a8 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_RXD3__FLEXIO2_4_1_FLEXIO13           0x01a4 0x04a8 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_RXD3__FLEXIO1_3_2_FLEXIO9            0x01a4 0x04a8 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_RXD3__GPIO7_IO7                      0x01a4 0x04a8 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_RXD3__DIG_ENCODER2_DATA_CLK          0x01a4 0x04a8 0x068c 0x06 0x01
+#define IMX94_PAD_ETH4_RXD3__XBAR1_XBAR_INOUT5              0x01a4 0x04a8 0x0870 0x07 0x01
+
+#define IMX94_PAD_ETH4_RX_CTL__NETC_PINMUX_ETH4_RX_CTL      0x01a8 0x04ac 0x0634 0x00 0x00
+#define IMX94_PAD_ETH4_RX_CTL__XSPI2_A_SS1_B                0x01a8 0x04ac 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_RX_CTL__FLEXIO2_4_1_FLEXIO14         0x01a8 0x04ac 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_RX_CTL__FLEXIO1_3_2_FLEXIO10         0x01a8 0x04ac 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_RX_CTL__GPIO7_IO8                    0x01a8 0x04ac 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_RX_CTL__DIG_ENCODER2_DATA_OUT        0x01a8 0x04ac 0x0000 0x06 0x00
+#define IMX94_PAD_ETH4_RX_CTL__XBAR1_XBAR_INOUT6            0x01a8 0x04ac 0x0874 0x07 0x01
+
+#define IMX94_PAD_ETH4_RX_CLK__NETC_PINMUX_ETH4_RX_CLK      0x01ac 0x04b0 0x0630 0x00 0x00
+#define IMX94_PAD_ETH4_RX_CLK__XSPI2_A_DQS                  0x01ac 0x04b0 0x0000 0x02 0x00
+#define IMX94_PAD_ETH4_RX_CLK__FLEXIO2_4_1_FLEXIO15         0x01ac 0x04b0 0x0000 0x03 0x00
+#define IMX94_PAD_ETH4_RX_CLK__FLEXIO1_3_2_FLEXIO11         0x01ac 0x04b0 0x0000 0x04 0x00
+#define IMX94_PAD_ETH4_RX_CLK__GPIO7_IO9                    0x01ac 0x04b0 0x0000 0x05 0x00
+#define IMX94_PAD_ETH4_RX_CLK__DIG_ENCODER2_DATA_IN         0x01ac 0x04b0 0x0690 0x06 0x01
+#define IMX94_PAD_ETH4_RX_CLK__XBAR1_XBAR_INOUT7            0x01ac 0x04b0 0x0878 0x07 0x01
+
+#define IMX94_PAD_ETH0_TXD0__NETC_PINMUX_ETH0_TXD0          0x01b0 0x04b4 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_TXD0__ECAT_PT0_TXD0                  0x01b0 0x04b4 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_TXD0__FLEXIO4_FLEXIO0                0x01b0 0x04b4 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_TXD0__GPIO5_IO0                      0x01b0 0x04b4 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_TXD1__NETC_PINMUX_ETH0_TXD1          0x01b4 0x04b8 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_TXD1__ECAT_PT0_TXD1                  0x01b4 0x04b8 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_TXD1__FLEXIO4_FLEXIO1                0x01b4 0x04b8 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_TXD1__GPIO5_IO1                      0x01b4 0x04b8 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_TX_EN__NETC_PINMUX_ETH0_TX_EN        0x01b8 0x04bc 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_TX_EN__ECAT_PT0_TX_EN                0x01b8 0x04bc 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_TX_EN__FLEXIO4_FLEXIO2               0x01b8 0x04bc 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_TX_EN__GPIO5_IO2                     0x01b8 0x04bc 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_TX_CLK__NETC_PINMUX_ETH0_TX_CLK      0x01bc 0x04c0 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_TX_CLK__ECAT_PT0_TX_CLK              0x01bc 0x04c0 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_TX_CLK__FLEXIO4_FLEXIO3              0x01bc 0x04c0 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_TX_CLK__GPIO5_IO3                    0x01bc 0x04c0 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_RXD0__NETC_PINMUX_ETH0_RXD0          0x01c0 0x04c4 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_RXD0__ECAT_PT0_RXD0                  0x01c0 0x04c4 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_RXD0__FLEXIO4_FLEXIO4                0x01c0 0x04c4 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_RXD0__GPIO5_IO4                      0x01c0 0x04c4 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_RXD1__NETC_PINMUX_ETH0_RXD1          0x01c4 0x04c8 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_RXD1__ECAT_PT0_RXD1                  0x01c4 0x04c8 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_RXD1__FLEXIO4_FLEXIO5                0x01c4 0x04c8 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_RXD1__GPIO5_IO5                      0x01c4 0x04c8 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_RX_DV__NETC_PINMUX_ETH0_RX_DV        0x01c8 0x04cc 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_RX_DV__ECAT_PT0_RX_DV                0x01c8 0x04cc 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_RX_DV__FLEXIO4_FLEXIO6               0x01c8 0x04cc 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_RX_DV__GPIO5_IO6                     0x01c8 0x04cc 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_TXD2__NETC_PINMUX_ETH0_TXD2          0x01cc 0x04d0 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_TXD2__ECAT_PT0_TXD2                  0x01cc 0x04d0 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_TXD2__ETH0_RMII_REF50_CLK            0x01cc 0x04d0 0x0000 0x02 0x00
+#define IMX94_PAD_ETH0_TXD2__FLEXIO4_FLEXIO7                0x01cc 0x04d0 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_TXD2__GPIO5_IO7                      0x01cc 0x04d0 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_TXD3__NETC_PINMUX_ETH0_TXD3          0x01d0 0x04d4 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_TXD3__ECAT_PT0_TXD3                  0x01d0 0x04d4 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_TXD3__FLEXIO4_FLEXIO8                0x01d0 0x04d4 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_TXD3__GPIO5_IO8                      0x01d0 0x04d4 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_RXD2__NETC_PINMUX_ETH0_RXD2          0x01d4 0x04d8 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_RXD2__ECAT_PT0_RXD2                  0x01d4 0x04d8 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_RXD2__FLEXIO4_FLEXIO9                0x01d4 0x04d8 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_RXD2__GPIO5_IO9                      0x01d4 0x04d8 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_RXD3__NETC_PINMUX_ETH0_RXD3          0x01d8 0x04dc 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_RXD3__ECAT_PT0_RXD3                  0x01d8 0x04dc 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_RXD3__FLEXIO4_FLEXIO10               0x01d8 0x04dc 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_RXD3__GPIO5_IO10                     0x01d8 0x04dc 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_RX_CLK__NETC_PINMUX_ETH0_RX_CLK      0x01dc 0x04e0 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_RX_CLK__ECAT_PT0_RX_CLK              0x01dc 0x04e0 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_RX_CLK__FLEXIO4_FLEXIO11             0x01dc 0x04e0 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_RX_CLK__GPIO5_IO11                   0x01dc 0x04e0 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_RX_ER__NETC_PINMUX_ETH0_RX_ER        0x01e0 0x04e4 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_RX_ER__ECAT_PT0_RX_ER                0x01e0 0x04e4 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_RX_ER__FLEXIO4_FLEXIO12              0x01e0 0x04e4 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_RX_ER__GPIO5_IO12                    0x01e0 0x04e4 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_TX_ER__NETC_PINMUX_ETH0_TX_ER        0x01e4 0x04e8 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_TX_ER__ECAT_LINK_ACT0                0x01e4 0x04e8 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_TX_ER__FLEXIO4_FLEXIO13              0x01e4 0x04e8 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_TX_ER__GPIO5_IO13                    0x01e4 0x04e8 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH0_CRS__NETC_PINMUX_ETH0_CRS            0x01e8 0x04ec 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_CRS__ECAT_LINK0                      0x01e8 0x04ec 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_CRS__NETC_EMDC                       0x01e8 0x04ec 0x0000 0x02 0x00
+#define IMX94_PAD_ETH0_CRS__FLEXIO4_FLEXIO14                0x01e8 0x04ec 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_CRS__GPIO5_IO14                      0x01e8 0x04ec 0x0000 0x05 0x00
+#define IMX94_PAD_ETH0_CRS__XBAR1_XBAR_INOUT8               0x01e8 0x04ec 0x087c 0x06 0x02
+#define IMX94_PAD_ETH0_CRS__SINC_FILTER_GLUE2_BREAK         0x01e8 0x04ec 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH0_COL__NETC_PINMUX_ETH0_COL            0x01ec 0x04f0 0x0000 0x00 0x00
+#define IMX94_PAD_ETH0_COL__ECAT_LINK1                      0x01ec 0x04f0 0x0000 0x01 0x00
+#define IMX94_PAD_ETH0_COL__NETC_EMDIO                      0x01ec 0x04f0 0x0678 0x02 0x03
+#define IMX94_PAD_ETH0_COL__FLEXIO4_FLEXIO15                0x01ec 0x04f0 0x0000 0x04 0x00
+#define IMX94_PAD_ETH0_COL__GPIO5_IO15                      0x01ec 0x04f0 0x0000 0x05 0x00
+#define IMX94_PAD_ETH0_COL__XBAR1_XBAR_INOUT9               0x01ec 0x04f0 0x0880 0x06 0x02
+#define IMX94_PAD_ETH0_COL__SINC_FILTER_GLUE1_BREAK         0x01ec 0x04f0 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH1_TXD0__NETC_PINMUX_ETH1_TXD0          0x01f0 0x04f4 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_TXD0__ECAT_PT1_TXD0                  0x01f0 0x04f4 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_TXD0__ENCODER_DIAG0                  0x01f0 0x04f4 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_TXD0__FLEXIO3_FLEXIO0                0x01f0 0x04f4 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_TXD0__GPIO5_IO16                     0x01f0 0x04f4 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_TXD1__NETC_PINMUX_ETH1_TXD1          0x01f4 0x04f8 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_TXD1__ECAT_PT1_TXD1                  0x01f4 0x04f8 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_TXD1__ENCODER_DIAG1                  0x01f4 0x04f8 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_TXD1__FLEXIO3_FLEXIO1                0x01f4 0x04f8 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_TXD1__GPIO5_IO17                     0x01f4 0x04f8 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_TX_EN__NETC_PINMUX_ETH1_TX_EN        0x01f8 0x04fc 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_TX_EN__ECAT_PT1_TX_EN                0x01f8 0x04fc 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_TX_EN__ENCODER_DIAG2                 0x01f8 0x04fc 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_TX_EN__FLEXIO3_FLEXIO2               0x01f8 0x04fc 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_TX_EN__GPIO5_IO18                    0x01f8 0x04fc 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_TX_CLK__NETC_PINMUX_ETH1_TX_CLK      0x01fc 0x0500 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_TX_CLK__ECAT_PT1_TX_CLK              0x01fc 0x0500 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_TX_CLK__ENCODER_DIAG3                0x01fc 0x0500 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_TX_CLK__FLEXIO3_FLEXIO3              0x01fc 0x0500 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_TX_CLK__GPIO5_IO19                   0x01fc 0x0500 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_RXD0__NETC_PINMUX_ETH1_RXD0          0x0200 0x0504 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_RXD0__ECAT_PT1_RXD0                  0x0200 0x0504 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_RXD0__ENCODER_DIAG4                  0x0200 0x0504 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_RXD0__FLEXIO3_FLEXIO4                0x0200 0x0504 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_RXD0__GPIO5_IO20                     0x0200 0x0504 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_RXD1__NETC_PINMUX_ETH1_RXD1          0x0204 0x0508 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_RXD1__ECAT_PT1_RXD1                  0x0204 0x0508 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_RXD1__ENCODER_DIAG5                  0x0204 0x0508 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_RXD1__FLEXIO3_FLEXIO5                0x0204 0x0508 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_RXD1__GPIO5_IO21                     0x0204 0x0508 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_RX_DV__NETC_PINMUX_ETH1_RX_DV        0x0208 0x050c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_RX_DV__ECAT_PT1_RX_DV                0x0208 0x050c 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_RX_DV__ENCODER_DIAG6                 0x0208 0x050c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_RX_DV__FLEXIO3_FLEXIO6               0x0208 0x050c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_RX_DV__GPIO5_IO22                    0x0208 0x050c 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_TXD2__NETC_PINMUX_ETH1_TXD2          0x020c 0x0510 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_TXD2__ECAT_PT1_TXD2                  0x020c 0x0510 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_TXD2__ETH1_RMII_REF50_CLK            0x020c 0x0510 0x0000 0x02 0x00
+#define IMX94_PAD_ETH1_TXD2__ENCODER_DIAG7                  0x020c 0x0510 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_TXD2__FLEXIO3_FLEXIO7                0x020c 0x0510 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_TXD2__GPIO5_IO23                     0x020c 0x0510 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_TXD3__NETC_PINMUX_ETH1_TXD3          0x0210 0x0514 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_TXD3__ECAT_PT1_TXD3                  0x0210 0x0514 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_TXD3__ENCODER_DIAG8                  0x0210 0x0514 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_TXD3__FLEXIO3_FLEXIO8                0x0210 0x0514 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_TXD3__GPIO5_IO24                     0x0210 0x0514 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_RXD2__NETC_PINMUX_ETH1_RXD2          0x0214 0x0518 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_RXD2__ECAT_PT1_RXD2                  0x0214 0x0518 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_RXD2__ENCODER_DIAG9                  0x0214 0x0518 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_RXD2__FLEXIO3_FLEXIO9                0x0214 0x0518 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_RXD2__GPIO5_IO25                     0x0214 0x0518 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_RXD3__NETC_PINMUX_ETH1_RXD3          0x0218 0x051c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_RXD3__ECAT_PT1_RXD3                  0x0218 0x051c 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_RXD3__ENCODER_DIAG10                 0x0218 0x051c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_RXD3__FLEXIO3_FLEXIO10               0x0218 0x051c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_RXD3__GPIO5_IO26                     0x0218 0x051c 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_RX_CLK__NETC_PINMUX_ETH1_RX_CLK      0x021c 0x0520 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_RX_CLK__ECAT_PT1_RX_CLK              0x021c 0x0520 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_RX_CLK__ENCODER_DIAG11               0x021c 0x0520 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_RX_CLK__FLEXIO3_FLEXIO11             0x021c 0x0520 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_RX_CLK__GPIO5_IO27                   0x021c 0x0520 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_RX_ER__NETC_PINMUX_ETH1_RX_ER        0x0220 0x0524 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_RX_ER__ECAT_PT1_RX_ER                0x0220 0x0524 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_RX_ER__ENCODER_DIAG12                0x0220 0x0524 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_RX_ER__FLEXIO3_FLEXIO12              0x0220 0x0524 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_RX_ER__GPIO5_IO28                    0x0220 0x0524 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_TX_ER__NETC_PINMUX_ETH1_TX_ER        0x0224 0x0528 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_TX_ER__ECAT_LINK_ACT1                0x0224 0x0528 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_TX_ER__ENCODER_DIAG13                0x0224 0x0528 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_TX_ER__FLEXIO3_FLEXIO13              0x0224 0x0528 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_TX_ER__GPIO5_IO29                    0x0224 0x0528 0x0000 0x05 0x00
+
+#define IMX94_PAD_ETH1_CRS__NETC_PINMUX_ETH1_CRS            0x0228 0x052c 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_CRS__ECAT_MDC                        0x0228 0x052c 0x0000 0x01 0x00
+#define IMX94_PAD_ETH1_CRS__NETC_EMDC                       0x0228 0x052c 0x0000 0x02 0x00
+#define IMX94_PAD_ETH1_CRS__ENCODER_DIAG14                  0x0228 0x052c 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_CRS__FLEXIO3_FLEXIO14                0x0228 0x052c 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_CRS__GPIO5_IO30                      0x0228 0x052c 0x0000 0x05 0x00
+#define IMX94_PAD_ETH1_CRS__XBAR1_XBAR_INOUT10              0x0228 0x052c 0x0884 0x06 0x02
+#define IMX94_PAD_ETH1_CRS__SINC_FILTER_GLUE1_BREAK         0x0228 0x052c 0x0000 0x07 0x00
+
+#define IMX94_PAD_ETH1_COL__NETC_PINMUX_ETH1_COL            0x022c 0x0530 0x0000 0x00 0x00
+#define IMX94_PAD_ETH1_COL__ECAT_MDIO                       0x022c 0x0530 0x0628 0x01 0x01
+#define IMX94_PAD_ETH1_COL__NETC_EMDIO                      0x022c 0x0530 0x0678 0x02 0x04
+#define IMX94_PAD_ETH1_COL__ENCODER_DIAG15                  0x022c 0x0530 0x0000 0x03 0x00
+#define IMX94_PAD_ETH1_COL__FLEXIO3_FLEXIO15                0x022c 0x0530 0x0000 0x04 0x00
+#define IMX94_PAD_ETH1_COL__GPIO5_IO31                      0x022c 0x0530 0x0000 0x05 0x00
+#define IMX94_PAD_ETH1_COL__XBAR1_XBAR_INOUT11              0x022c 0x0530 0x0888 0x06 0x02
+#define IMX94_PAD_ETH1_COL__SINC_FILTER_GLUE2_BREAK         0x022c 0x0530 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_CLK__USDHC1_CLK                       0x0230 0x0534 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_CLK__SAI4_TX_BCLK                     0x0230 0x0534 0x0818 0x01 0x01
+#define IMX94_PAD_SD1_CLK__CAN4_TX                          0x0230 0x0534 0x0000 0x02 0x00
+#define IMX94_PAD_SD1_CLK__NETC_1588MUX_INOUT0              0x0230 0x0534 0x064c 0x03 0x01
+#define IMX94_PAD_SD1_CLK__FLEXIO2_4_1_FLEXIO0              0x0230 0x0534 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_CLK__GPIO4_IO8                        0x0230 0x0534 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_CLK__FLEXPWM3_PWMX0                   0x0230 0x0534 0x06c8 0x06 0x02
+#define IMX94_PAD_SD1_CLK__SINC1_EMCLK0                     0x0230 0x0534 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_CMD__USDHC1_CMD                       0x0234 0x0538 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_CMD__SAI4_RX_BCLK                     0x0234 0x0538 0x080c 0x01 0x01
+#define IMX94_PAD_SD1_CMD__CAN4_RX                          0x0234 0x0538 0x0684 0x02 0x02
+#define IMX94_PAD_SD1_CMD__NETC_1588MUX_INOUT1              0x0234 0x0538 0x0650 0x03 0x01
+#define IMX94_PAD_SD1_CMD__FLEXIO2_4_1_FLEXIO1              0x0234 0x0538 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_CMD__GPIO4_IO9                        0x0234 0x0538 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_CMD__FLEXPWM3_PWMX1                   0x0234 0x0538 0x06cc 0x06 0x02
+#define IMX94_PAD_SD1_CMD__SINC1_EMBIT0                     0x0234 0x0538 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_DATA0__USDHC1_DATA0                   0x0238 0x053c 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_DATA0__SAI4_RX_SYNC                   0x0238 0x053c 0x0814 0x01 0x01
+#define IMX94_PAD_SD1_DATA0__CAN5_TX                        0x0238 0x053c 0x0000 0x02 0x00
+#define IMX94_PAD_SD1_DATA0__NETC_1588MUX_INOUT2            0x0238 0x053c 0x0654 0x03 0x01
+#define IMX94_PAD_SD1_DATA0__FLEXIO2_4_1_FLEXIO2            0x0238 0x053c 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_DATA0__GPIO4_IO10                     0x0238 0x053c 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_DATA0__FLEXPWM3_PWMX2                 0x0238 0x053c 0x06d0 0x06 0x01
+#define IMX94_PAD_SD1_DATA0__SINC1_EMCLK1                   0x0238 0x053c 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_DATA1__USDHC1_DATA1                   0x023c 0x0540 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_DATA1__SAI4_TX_SYNC                   0x023c 0x0540 0x081c 0x01 0x01
+#define IMX94_PAD_SD1_DATA1__CAN5_RX                        0x023c 0x0540 0x0688 0x02 0x03
+#define IMX94_PAD_SD1_DATA1__NETC_1588MUX_INOUT3            0x023c 0x0540 0x0658 0x03 0x01
+#define IMX94_PAD_SD1_DATA1__FLEXIO2_4_1_FLEXIO3            0x023c 0x0540 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_DATA1__GPIO4_IO11                     0x023c 0x0540 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_DATA1__FLEXPWM3_PWMA3                 0x023c 0x0540 0x06b4 0x06 0x01
+#define IMX94_PAD_SD1_DATA1__SINC1_EMBIT1                   0x023c 0x0540 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_DATA2__USDHC1_DATA2                   0x0240 0x0544 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_DATA2__SAI4_TX_DATA0                  0x0240 0x0544 0x0000 0x01 0x00
+#define IMX94_PAD_SD1_DATA2__PMIC_READY                     0x0240 0x0544 0x0000 0x02 0x00
+#define IMX94_PAD_SD1_DATA2__NETC_1588MUX_INOUT4            0x0240 0x0544 0x065c 0x03 0x01
+#define IMX94_PAD_SD1_DATA2__FLEXIO2_4_1_FLEXIO4            0x0240 0x0544 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_DATA2__GPIO4_IO12                     0x0240 0x0544 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_DATA2__FLEXPWM3_PWMB3                 0x0240 0x0544 0x06c4 0x06 0x01
+#define IMX94_PAD_SD1_DATA2__SINC1_EMCLK2                   0x0240 0x0544 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_DATA3__USDHC1_DATA3                   0x0244 0x0548 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_DATA3__SAI4_RX_DATA0                  0x0244 0x0548 0x0810 0x01 0x01
+#define IMX94_PAD_SD1_DATA3__NETC_1588MUX_INOUT5            0x0244 0x0548 0x0660 0x03 0x01
+#define IMX94_PAD_SD1_DATA3__FLEXIO2_4_1_FLEXIO5            0x0244 0x0548 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_DATA3__GPIO4_IO13                     0x0244 0x0548 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_DATA3__FLEXPWM3_PWMA2                 0x0244 0x0548 0x06b0 0x06 0x01
+#define IMX94_PAD_SD1_DATA3__SINC1_EMBIT2                   0x0244 0x0548 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_DATA4__USDHC1_DATA4                   0x0248 0x054c 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_DATA4__SAI2_RX_DATA0                  0x0248 0x054c 0x07f0 0x01 0x02
+#define IMX94_PAD_SD1_DATA4__NETC_1588MUX_INOUT6            0x0248 0x054c 0x0664 0x03 0x01
+#define IMX94_PAD_SD1_DATA4__FLEXIO2_4_1_FLEXIO6            0x0248 0x054c 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_DATA4__GPIO4_IO14                     0x0248 0x054c 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_DATA4__FLEXPWM3_PWMB2                 0x0248 0x054c 0x06c0 0x06 0x01
+#define IMX94_PAD_SD1_DATA4__SINC1_EMCLK3                   0x0248 0x054c 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_DATA5__USDHC1_DATA5                   0x024c 0x0550 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_DATA5__SAI2_TX_DATA0                  0x024c 0x0550 0x0000 0x01 0x00
+#define IMX94_PAD_SD1_DATA5__USDHC1_RESET_B                 0x024c 0x0550 0x0000 0x02 0x00
+#define IMX94_PAD_SD1_DATA5__NETC_1588MUX_INOUT7            0x024c 0x0550 0x0668 0x03 0x01
+#define IMX94_PAD_SD1_DATA5__FLEXIO2_4_1_FLEXIO7            0x024c 0x0550 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_DATA5__GPIO4_IO15                     0x024c 0x0550 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_DATA5__FLEXPWM3_PWMA1                 0x024c 0x0550 0x06ac 0x06 0x01
+#define IMX94_PAD_SD1_DATA5__SINC1_EMBIT3                   0x024c 0x0550 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_DATA6__USDHC1_DATA6                   0x0250 0x0554 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_DATA6__SAI2_TX_BCLK                   0x0250 0x0554 0x07f8 0x01 0x02
+#define IMX94_PAD_SD1_DATA6__USDHC1_CD_B                    0x0250 0x0554 0x0000 0x02 0x00
+#define IMX94_PAD_SD1_DATA6__NETC_1588MUX_INOUT8            0x0250 0x0554 0x066c 0x03 0x01
+#define IMX94_PAD_SD1_DATA6__FLEXIO2_4_1_FLEXIO8            0x0250 0x0554 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_DATA6__GPIO4_IO16                     0x0250 0x0554 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_DATA6__FLEXPWM3_PWMB1                 0x0250 0x0554 0x06bc 0x06 0x01
+#define IMX94_PAD_SD1_DATA6__SINC1_MOD_CLK0                 0x0250 0x0554 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_DATA7__USDHC1_DATA7                   0x0254 0x0558 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_DATA7__SAI2_RX_SYNC                   0x0254 0x0558 0x07f4 0x01 0x02
+#define IMX94_PAD_SD1_DATA7__USDHC1_WP                      0x0254 0x0558 0x0000 0x02 0x00
+#define IMX94_PAD_SD1_DATA7__NETC_1588MUX_INOUT9            0x0254 0x0558 0x0670 0x03 0x01
+#define IMX94_PAD_SD1_DATA7__FLEXIO2_4_1_FLEXIO9            0x0254 0x0558 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_DATA7__GPIO4_IO17                     0x0254 0x0558 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_DATA7__FLEXPWM3_PWMA0                 0x0254 0x0558 0x06a8 0x06 0x01
+#define IMX94_PAD_SD1_DATA7__SINC1_MOD_CLK1                 0x0254 0x0558 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD1_STROBE__USDHC1_STROBE                 0x0258 0x055c 0x0000 0x00 0x00
+#define IMX94_PAD_SD1_STROBE__SAI2_TX_SYNC                  0x0258 0x055c 0x07fc 0x01 0x02
+#define IMX94_PAD_SD1_STROBE__NETC_1588MUX_INOUT10          0x0258 0x055c 0x0674 0x03 0x01
+#define IMX94_PAD_SD1_STROBE__FLEXIO2_4_1_FLEXIO10          0x0258 0x055c 0x0000 0x04 0x00
+#define IMX94_PAD_SD1_STROBE__GPIO4_IO18                    0x0258 0x055c 0x0000 0x05 0x00
+#define IMX94_PAD_SD1_STROBE__FLEXPWM3_PWMB0                0x0258 0x055c 0x06b8 0x06 0x01
+#define IMX94_PAD_SD1_STROBE__SINC1_MOD_CLK2                0x0258 0x055c 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_VSELECT__USDHC2_VSELECT               0x025c 0x0560 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_VSELECT__SAI4_MCLK                    0x025c 0x0560 0x0808 0x01 0x01
+#define IMX94_PAD_SD2_VSELECT__USDHC2_WP                    0x025c 0x0560 0x0854 0x02 0x02
+#define IMX94_PAD_SD2_VSELECT__NETC_1588MUX_INOUT10         0x025c 0x0560 0x0674 0x03 0x02
+#define IMX94_PAD_SD2_VSELECT__FLEXIO2_4_1_FLEXIO11         0x025c 0x0560 0x0694 0x04 0x01
+#define IMX94_PAD_SD2_VSELECT__GPIO4_IO19                   0x025c 0x0560 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_VSELECT__EXT_CLK1                     0x025c 0x0560 0x0624 0x06 0x01
+#define IMX94_PAD_SD2_VSELECT__XBAR1_XBAR_INOUT12           0x025c 0x0560 0x088c 0x07 0x02
+
+#define IMX94_PAD_XSPI1_DATA0__XSPI1_A_DATA0                0x0260 0x0564 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DATA0__SAI2_RX_SYNC                 0x0260 0x0564 0x07f4 0x01 0x03
+#define IMX94_PAD_XSPI1_DATA0__XSPI_SLV_DATA0               0x0260 0x0564 0x0908 0x03 0x01
+#define IMX94_PAD_XSPI1_DATA0__FLEXIO1_3_3_FLEXIO0          0x0260 0x0564 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DATA0__GPIO7_IO16                   0x0260 0x0564 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_DATA1__XSPI1_A_DATA1                0x0264 0x0568 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DATA1__SAI2_TX_SYNC                 0x0264 0x0568 0x07fc 0x01 0x03
+#define IMX94_PAD_XSPI1_DATA1__XSPI_SLV_DATA1               0x0264 0x0568 0x090c 0x03 0x01
+#define IMX94_PAD_XSPI1_DATA1__FLEXIO1_3_3_FLEXIO1          0x0264 0x0568 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DATA1__GPIO7_IO17                   0x0264 0x0568 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_DATA2__XSPI1_A_DATA2                0x0268 0x056c 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DATA2__SAI2_TX_DATA0                0x0268 0x056c 0x0000 0x01 0x00
+#define IMX94_PAD_XSPI1_DATA2__XSPI_SLV_DATA2               0x0268 0x056c 0x0910 0x03 0x01
+#define IMX94_PAD_XSPI1_DATA2__FLEXIO1_3_3_FLEXIO2          0x0268 0x056c 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DATA2__GPIO7_IO18                   0x0268 0x056c 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_DATA3__XSPI1_A_DATA3                0x026c 0x0570 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DATA3__SAI2_RX_DATA0                0x026c 0x0570 0x07f0 0x01 0x03
+#define IMX94_PAD_XSPI1_DATA3__SAI2_MCLK                    0x026c 0x0570 0x07e8 0x02 0x02
+#define IMX94_PAD_XSPI1_DATA3__XSPI_SLV_DATA3               0x026c 0x0570 0x0914 0x03 0x01
+#define IMX94_PAD_XSPI1_DATA3__FLEXIO1_3_3_FLEXIO3          0x026c 0x0570 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DATA3__GPIO7_IO19                   0x026c 0x0570 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_DATA4__XSPI1_A_DATA4                0x0270 0x0574 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DATA4__SAI4_RX_SYNC                 0x0270 0x0574 0x0814 0x01 0x02
+#define IMX94_PAD_XSPI1_DATA4__XSPI_SLV_DATA4               0x0270 0x0574 0x0918 0x03 0x01
+#define IMX94_PAD_XSPI1_DATA4__FLEXIO1_3_3_FLEXIO4          0x0270 0x0574 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DATA4__GPIO7_IO20                   0x0270 0x0574 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_DATA5__XSPI1_A_DATA5                0x0274 0x0578 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DATA5__SAI4_TX_SYNC                 0x0274 0x0578 0x081c 0x01 0x02
+#define IMX94_PAD_XSPI1_DATA5__XSPI_SLV_DATA5               0x0274 0x0578 0x091c 0x03 0x01
+#define IMX94_PAD_XSPI1_DATA5__FLEXIO1_3_3_FLEXIO5          0x0274 0x0578 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DATA5__GPIO7_IO21                   0x0274 0x0578 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_DATA6__XSPI1_A_DATA6                0x0278 0x057c 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DATA6__SAI4_TX_DATA0                0x0278 0x057c 0x0000 0x01 0x00
+#define IMX94_PAD_XSPI1_DATA6__XSPI_SLV_DATA6               0x0278 0x057c 0x0920 0x03 0x01
+#define IMX94_PAD_XSPI1_DATA6__FLEXIO1_3_3_FLEXIO6          0x0278 0x057c 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DATA6__GPIO7_IO22                   0x0278 0x057c 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_DATA7__XSPI1_A_DATA7                0x027c 0x0580 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DATA7__SAI4_RX_DATA0                0x027c 0x0580 0x0810 0x01 0x02
+#define IMX94_PAD_XSPI1_DATA7__SAI4_MCLK                    0x027c 0x0580 0x0808 0x02 0x02
+#define IMX94_PAD_XSPI1_DATA7__XSPI_SLV_DATA7               0x027c 0x0580 0x0924 0x03 0x01
+#define IMX94_PAD_XSPI1_DATA7__FLEXIO1_3_3_FLEXIO7          0x027c 0x0580 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DATA7__GPIO7_IO23                   0x027c 0x0580 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_DQS__XSPI1_A_DQS                    0x0280 0x0584 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_DQS__SAI2_TX_BCLK                   0x0280 0x0584 0x07f8 0x01 0x03
+#define IMX94_PAD_XSPI1_DQS__XSPI_SLV_DQS                   0x0280 0x0584 0x0900 0x03 0x01
+#define IMX94_PAD_XSPI1_DQS__FLEXIO1_3_3_FLEXIO8            0x0280 0x0584 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_DQS__GPIO7_IO24                     0x0280 0x0584 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_SCLK__XSPI1_A_SCLK                  0x0284 0x0588 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_SCLK__SAI4_TX_BCLK                  0x0284 0x0588 0x0818 0x01 0x02
+#define IMX94_PAD_XSPI1_SCLK__XSPI_SLV_CLK                  0x0284 0x0588 0x0904 0x03 0x01
+#define IMX94_PAD_XSPI1_SCLK__FLEXIO1_3_3_FLEXIO9           0x0284 0x0588 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_SCLK__GPIO7_IO25                    0x0284 0x0588 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_SS0_B__XSPI1_A_SS0_B                0x0288 0x058c 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_SS0_B__SAI4_RX_BCLK                 0x0288 0x058c 0x080c 0x01 0x02
+#define IMX94_PAD_XSPI1_SS0_B__XSPI_SLV_CS                  0x0288 0x058c 0x08fc 0x03 0x01
+#define IMX94_PAD_XSPI1_SS0_B__FLEXIO1_3_3_FLEXIO10         0x0288 0x058c 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_SS0_B__GPIO7_IO26                   0x0288 0x058c 0x0000 0x05 0x00
+
+#define IMX94_PAD_XSPI1_SS1_B__XSPI1_A_SS1_B                0x028c 0x0590 0x0000 0x00 0x00
+#define IMX94_PAD_XSPI1_SS1_B__SAI2_RX_BCLK                 0x028c 0x0590 0x07ec 0x01 0x02
+#define IMX94_PAD_XSPI1_SS1_B__FLEXPWM3_PWMX3               0x028c 0x0590 0x0000 0x03 0x00
+#define IMX94_PAD_XSPI1_SS1_B__FLEXIO1_3_3_FLEXIO11         0x028c 0x0590 0x0000 0x04 0x00
+#define IMX94_PAD_XSPI1_SS1_B__GPIO7_IO27                   0x028c 0x0590 0x0000 0x05 0x00
+#define IMX94_PAD_XSPI1_SS1_B__SINC1_MOD_CLK0               0x028c 0x0590 0x0000 0x06 0x00
+#define IMX94_PAD_XSPI1_SS1_B__SINC_FILTER_GLUE1_BREAK      0x028c 0x0590 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_CD_B__USDHC2_CD_B                     0x0290 0x0594 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_CD_B__NETC_PINMUX_ETH4_RX_CTL         0x0290 0x0594 0x0634 0x01 0x01
+#define IMX94_PAD_SD2_CD_B__I3C2_SCL                        0x0290 0x0594 0x0720 0x02 0x03
+#define IMX94_PAD_SD2_CD_B__NETC_1588MUX_INOUT9             0x0290 0x0594 0x0670 0x03 0x02
+#define IMX94_PAD_SD2_CD_B__FLEXIO2_4_2_FLEXIO0             0x0290 0x0594 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_CD_B__GPIO4_IO20                      0x0290 0x0594 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_CD_B__XBAR1_XBAR_INOUT13              0x0290 0x0594 0x0890 0x06 0x02
+#define IMX94_PAD_SD2_CD_B__SINC2_EMCLK0                    0x0290 0x0594 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_CLK__USDHC2_CLK                       0x0294 0x0598 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_CLK__NETC_PINMUX_ETH4_TX_CLK          0x0294 0x0598 0x0648 0x01 0x01
+#define IMX94_PAD_SD2_CLK__I3C2_SDA                         0x0294 0x0598 0x0724 0x02 0x03
+#define IMX94_PAD_SD2_CLK__NETC_1588MUX_INOUT8              0x0294 0x0598 0x066c 0x03 0x02
+#define IMX94_PAD_SD2_CLK__FLEXIO2_4_2_FLEXIO1              0x0294 0x0598 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_CLK__GPIO4_IO21                       0x0294 0x0598 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_CLK__OBSERVE0                         0x0294 0x0598 0x0000 0x06 0x00
+#define IMX94_PAD_SD2_CLK__SINC2_EMBIT0                     0x0294 0x0598 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_CMD__USDHC2_CMD                       0x0298 0x059c 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_CMD__NETC_PINMUX_ETH4_TX_CTL          0x0298 0x059c 0x0000 0x01 0x00
+#define IMX94_PAD_SD2_CMD__I3C2_PUR                         0x0298 0x059c 0x0000 0x02 0x00
+#define IMX94_PAD_SD2_CMD__I3C2_PUR_B                       0x0298 0x059c 0x0000 0x03 0x00
+#define IMX94_PAD_SD2_CMD__FLEXIO2_4_2_FLEXIO2              0x0298 0x059c 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_CMD__GPIO4_IO22                       0x0298 0x059c 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_CMD__OBSERVE1                         0x0298 0x059c 0x0000 0x06 0x00
+#define IMX94_PAD_SD2_CMD__SINC2_EMCLK1                     0x0298 0x059c 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_DATA0__USDHC2_DATA0                   0x029c 0x05a0 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_DATA0__NETC_PINMUX_ETH4_TXD0          0x029c 0x05a0 0x0000 0x01 0x00
+#define IMX94_PAD_SD2_DATA0__CAN2_TX                        0x029c 0x05a0 0x0000 0x02 0x00
+#define IMX94_PAD_SD2_DATA0__NETC_1588MUX_INOUT7            0x029c 0x05a0 0x0668 0x03 0x02
+#define IMX94_PAD_SD2_DATA0__FLEXIO2_4_2_FLEXIO3            0x029c 0x05a0 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_DATA0__GPIO4_IO23                     0x029c 0x05a0 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_DATA0__OBSERVE2                       0x029c 0x05a0 0x0000 0x06 0x00
+#define IMX94_PAD_SD2_DATA0__SINC2_EMBIT1                   0x029c 0x05a0 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_DATA1__USDHC2_DATA1                   0x02a0 0x05a4 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_DATA1__NETC_PINMUX_ETH4_TXD1          0x02a0 0x05a4 0x0000 0x01 0x00
+#define IMX94_PAD_SD2_DATA1__CAN2_RX                        0x02a0 0x05a4 0x067c 0x02 0x04
+#define IMX94_PAD_SD2_DATA1__NETC_1588MUX_INOUT6            0x02a0 0x05a4 0x0664 0x03 0x02
+#define IMX94_PAD_SD2_DATA1__FLEXIO2_4_2_FLEXIO4            0x02a0 0x05a4 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_DATA1__GPIO4_IO24                     0x02a0 0x05a4 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_DATA1__XBAR1_XBAR_INOUT14             0x02a0 0x05a4 0x0894 0x06 0x02
+#define IMX94_PAD_SD2_DATA1__SINC2_EMCLK2                   0x02a0 0x05a4 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_DATA2__USDHC2_DATA2                   0x02a4 0x05a8 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_DATA2__NETC_PINMUX_ETH4_TXD2          0x02a4 0x05a8 0x0000 0x01 0x00
+#define IMX94_PAD_SD2_DATA2__MQS2_RIGHT                     0x02a4 0x05a8 0x0000 0x02 0x00
+#define IMX94_PAD_SD2_DATA2__NETC_1588MUX_INOUT5            0x02a4 0x05a8 0x0660 0x03 0x02
+#define IMX94_PAD_SD2_DATA2__FLEXIO2_4_2_FLEXIO5            0x02a4 0x05a8 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_DATA2__GPIO4_IO25                     0x02a4 0x05a8 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_DATA2__XBAR1_XBAR_INOUT15             0x02a4 0x05a8 0x0898 0x06 0x01
+#define IMX94_PAD_SD2_DATA2__SINC2_EMBIT2                   0x02a4 0x05a8 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_DATA3__USDHC2_DATA3                   0x02a8 0x05ac 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_DATA3__NETC_PINMUX_ETH4_TXD3          0x02a8 0x05ac 0x0000 0x01 0x00
+#define IMX94_PAD_SD2_DATA3__MQS2_LEFT                      0x02a8 0x05ac 0x0000 0x02 0x00
+#define IMX94_PAD_SD2_DATA3__LPTMR2_ALT0                    0x02a8 0x05ac 0x0780 0x03 0x01
+#define IMX94_PAD_SD2_DATA3__FLEXIO2_4_2_FLEXIO6            0x02a8 0x05ac 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_DATA3__GPIO4_IO26                     0x02a8 0x05ac 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_DATA3__XBAR1_XBAR_INOUT16             0x02a8 0x05ac 0x089c 0x06 0x01
+#define IMX94_PAD_SD2_DATA3__SINC2_EMCLK3                   0x02a8 0x05ac 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_RESET_B__USDHC2_RESET_B               0x02ac 0x05b0 0x0000 0x00 0x00
+#define IMX94_PAD_SD2_RESET_B__NETC_PINMUX_ETH4_RXD0        0x02ac 0x05b0 0x0638 0x01 0x01
+#define IMX94_PAD_SD2_RESET_B__NETC_1588MUX_INOUT4          0x02ac 0x05b0 0x065c 0x02 0x02
+#define IMX94_PAD_SD2_RESET_B__LPTMR2_ALT1                  0x02ac 0x05b0 0x0784 0x03 0x01
+#define IMX94_PAD_SD2_RESET_B__FLEXIO2_4_2_FLEXIO7          0x02ac 0x05b0 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_RESET_B__GPIO4_IO27                   0x02ac 0x05b0 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_RESET_B__XBAR1_XBAR_INOUT17           0x02ac 0x05b0 0x08a0 0x06 0x01
+#define IMX94_PAD_SD2_RESET_B__SINC2_EMBIT3                 0x02ac 0x05b0 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_GPIO0__USDHC2_WP                      0x02b0 0x05b4 0x0854 0x00 0x03
+#define IMX94_PAD_SD2_GPIO0__NETC_PINMUX_ETH4_RXD1          0x02b0 0x05b4 0x063c 0x01 0x01
+#define IMX94_PAD_SD2_GPIO0__NETC_1588MUX_INOUT3            0x02b0 0x05b4 0x0658 0x03 0x02
+#define IMX94_PAD_SD2_GPIO0__FLEXIO2_4_2_FLEXIO8            0x02b0 0x05b4 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_GPIO0__GPIO4_IO28                     0x02b0 0x05b4 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_GPIO0__XBAR1_XBAR_INOUT18             0x02b0 0x05b4 0x08a4 0x06 0x01
+#define IMX94_PAD_SD2_GPIO0__SINC2_MOD_CLK1                 0x02b0 0x05b4 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_GPIO1__LPTMR2_ALT2                    0x02b4 0x05b8 0x0788 0x00 0x01
+#define IMX94_PAD_SD2_GPIO1__NETC_PINMUX_ETH4_RXD2          0x02b4 0x05b8 0x0640 0x01 0x01
+#define IMX94_PAD_SD2_GPIO1__ECAT_CLK25                     0x02b4 0x05b8 0x0000 0x02 0x00
+#define IMX94_PAD_SD2_GPIO1__NETC_1588MUX_INOUT2            0x02b4 0x05b8 0x0654 0x03 0x02
+#define IMX94_PAD_SD2_GPIO1__FLEXIO2_4_2_FLEXIO9            0x02b4 0x05b8 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_GPIO1__GPIO4_IO29                     0x02b4 0x05b8 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_GPIO1__XBAR1_XBAR_INOUT19             0x02b4 0x05b8 0x08a8 0x06 0x01
+#define IMX94_PAD_SD2_GPIO1__SINC2_MOD_CLK0                 0x02b4 0x05b8 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_GPIO2__NETC_PINMUX_ETH4_RXD3          0x02b8 0x05bc 0x0644 0x01 0x01
+#define IMX94_PAD_SD2_GPIO2__CAN5_TX                        0x02b8 0x05bc 0x0000 0x02 0x00
+#define IMX94_PAD_SD2_GPIO2__NETC_1588MUX_INOUT1            0x02b8 0x05bc 0x0650 0x03 0x02
+#define IMX94_PAD_SD2_GPIO2__FLEXIO2_4_2_FLEXIO10           0x02b8 0x05bc 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_GPIO2__GPIO4_IO30                     0x02b8 0x05bc 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_GPIO2__XBAR1_XBAR_INOUT20             0x02b8 0x05bc 0x08ac 0x06 0x01
+#define IMX94_PAD_SD2_GPIO2__SINC2_MOD_CLK2                 0x02b8 0x05bc 0x0000 0x07 0x00
+
+#define IMX94_PAD_SD2_GPIO3__NETC_PINMUX_ETH4_RX_CLK        0x02bc 0x05c0 0x0630 0x01 0x01
+#define IMX94_PAD_SD2_GPIO3__CAN5_RX                        0x02bc 0x05c0 0x0688 0x02 0x04
+#define IMX94_PAD_SD2_GPIO3__NETC_1588MUX_INOUT0            0x02bc 0x05c0 0x064c 0x03 0x02
+#define IMX94_PAD_SD2_GPIO3__FLEXIO2_4_2_FLEXIO11           0x02bc 0x05c0 0x0000 0x04 0x00
+#define IMX94_PAD_SD2_GPIO3__GPIO4_IO31                     0x02bc 0x05c0 0x0000 0x05 0x00
+#define IMX94_PAD_SD2_GPIO3__XBAR1_XBAR_INOUT21             0x02bc 0x05c0 0x0000 0x06 0x00
+#define IMX94_PAD_SD2_GPIO3__SINC_FILTER_GLUE2_BREAK        0x02bc 0x05c0 0x0000 0x07 0x00
+
+#define IMX94_PAD_I2C1_SCL__LPI2C1_SCL                      0x02c0 0x05c4 0x0000 0x00 0x00
+#define IMX94_PAD_I2C1_SCL__I3C1_SCL                        0x02c0 0x05c4 0x0000 0x01 0x00
+#define IMX94_PAD_I2C1_SCL__LPUART1_DCD_B                   0x02c0 0x05c4 0x0000 0x02 0x00
+#define IMX94_PAD_I2C1_SCL__TPM2_CH0                        0x02c0 0x05c4 0x0000 0x03 0x00
+#define IMX94_PAD_I2C1_SCL__SAI1_RX_SYNC                    0x02c0 0x05c4 0x0000 0x04 0x00
+#define IMX94_PAD_I2C1_SCL__GPIO1_IO0                       0x02c0 0x05c4 0x0000 0x05 0x00
+
+#define IMX94_PAD_I2C1_SDA__LPI2C1_SDA                      0x02c4 0x05c8 0x0000 0x00 0x00
+#define IMX94_PAD_I2C1_SDA__I3C1_SDA                        0x02c4 0x05c8 0x0000 0x01 0x00
+#define IMX94_PAD_I2C1_SDA__LPUART1_RIN_B                   0x02c4 0x05c8 0x0000 0x02 0x00
+#define IMX94_PAD_I2C1_SDA__TPM2_CH1                        0x02c4 0x05c8 0x0000 0x03 0x00
+#define IMX94_PAD_I2C1_SDA__SAI1_RX_BCLK                    0x02c4 0x05c8 0x0000 0x04 0x00
+#define IMX94_PAD_I2C1_SDA__GPIO1_IO1                       0x02c4 0x05c8 0x0000 0x05 0x00
+
+#define IMX94_PAD_I2C2_SCL__LPI2C2_SCL                      0x02c8 0x05cc 0x0000 0x00 0x00
+#define IMX94_PAD_I2C2_SCL__I3C1_PUR                        0x02c8 0x05cc 0x0000 0x01 0x00
+#define IMX94_PAD_I2C2_SCL__LPUART2_DCD_B                   0x02c8 0x05cc 0x0000 0x02 0x00
+#define IMX94_PAD_I2C2_SCL__TPM2_CH2                        0x02c8 0x05cc 0x0000 0x03 0x00
+#define IMX94_PAD_I2C2_SCL__GPT1_CLK                        0x02c8 0x05cc 0x060c 0x04 0x00
+#define IMX94_PAD_I2C2_SCL__GPIO1_IO2                       0x02c8 0x05cc 0x0000 0x05 0x00
+#define IMX94_PAD_I2C2_SCL__I3C1_PUR_B                      0x02c8 0x05cc 0x0000 0x06 0x00
+#define IMX94_PAD_I2C2_SCL__LPIT1_TRIGGER0                  0x02c8 0x05cc 0x0000 0x07 0x00
+
+#define IMX94_PAD_I2C2_SDA__LPI2C2_SDA                      0x02cc 0x05d0 0x0000 0x00 0x00
+#define IMX94_PAD_I2C2_SDA__LPI2C1_HREQ                     0x02cc 0x05d0 0x0000 0x01 0x00
+#define IMX94_PAD_I2C2_SDA__LPUART2_RIN_B                   0x02cc 0x05d0 0x0000 0x02 0x00
+#define IMX94_PAD_I2C2_SDA__TPM2_CH3                        0x02cc 0x05d0 0x0000 0x03 0x00
+#define IMX94_PAD_I2C2_SDA__SAI1_MCLK                       0x02cc 0x05d0 0x0620 0x04 0x00
+#define IMX94_PAD_I2C2_SDA__GPIO1_IO3                       0x02cc 0x05d0 0x0000 0x05 0x00
+#define IMX94_PAD_I2C2_SDA__EWM_OUT_B                       0x02cc 0x05d0 0x0000 0x06 0x00
+#define IMX94_PAD_I2C2_SDA__LPIT1_TRIGGER1                  0x02cc 0x05d0 0x0000 0x07 0x00
+
+#define IMX94_PAD_UART1_RXD__LPUART1_RX                     0x02d0 0x05d4 0x0000 0x00 0x00
+#define IMX94_PAD_UART1_RXD__S400_UART_RX                   0x02d0 0x05d4 0x0000 0x01 0x00
+#define IMX94_PAD_UART1_RXD__LPSPI2_SIN                     0x02d0 0x05d4 0x0000 0x02 0x00
+#define IMX94_PAD_UART1_RXD__TPM1_CH0                       0x02d0 0x05d4 0x0000 0x03 0x00
+#define IMX94_PAD_UART1_RXD__GPT1_CAPTURE1                  0x02d0 0x05d4 0x0000 0x04 0x00
+#define IMX94_PAD_UART1_RXD__GPIO1_IO4                      0x02d0 0x05d4 0x0000 0x05 0x00
+
+#define IMX94_PAD_UART1_TXD__LPUART1_TX                     0x02d4 0x05d8 0x0000 0x00 0x00
+#define IMX94_PAD_UART1_TXD__S400_UART_TX                   0x02d4 0x05d8 0x0000 0x01 0x00
+#define IMX94_PAD_UART1_TXD__LPSPI2_PCS0                    0x02d4 0x05d8 0x0000 0x02 0x00
+#define IMX94_PAD_UART1_TXD__TPM1_CH1                       0x02d4 0x05d8 0x0000 0x03 0x00
+#define IMX94_PAD_UART1_TXD__GPT1_COMPARE1                  0x02d4 0x05d8 0x0000 0x04 0x00
+#define IMX94_PAD_UART1_TXD__GPIO1_IO5                      0x02d4 0x05d8 0x0000 0x05 0x00
+
+#define IMX94_PAD_UART2_RXD__LPUART2_RX                     0x02d8 0x05dc 0x0000 0x00 0x00
+#define IMX94_PAD_UART2_RXD__LPUART1_CTS_B                  0x02d8 0x05dc 0x0000 0x01 0x00
+#define IMX94_PAD_UART2_RXD__LPSPI2_SOUT                    0x02d8 0x05dc 0x0000 0x02 0x00
+#define IMX94_PAD_UART2_RXD__TPM1_CH2                       0x02d8 0x05dc 0x0000 0x03 0x00
+#define IMX94_PAD_UART2_RXD__SAI1_MCLK                      0x02d8 0x05dc 0x0620 0x04 0x01
+#define IMX94_PAD_UART2_RXD__GPIO1_IO6                      0x02d8 0x05dc 0x0000 0x05 0x00
+#define IMX94_PAD_UART2_RXD__GPT1_CLK                       0x02d8 0x05dc 0x060c 0x06 0x01
+#define IMX94_PAD_UART2_RXD__LPIT1_TRIGGER2                 0x02d8 0x05dc 0x0000 0x07 0x00
+
+#define IMX94_PAD_UART2_TXD__LPUART2_TX                     0x02dc 0x05e0 0x0000 0x00 0x00
+#define IMX94_PAD_UART2_TXD__LPUART1_RTS_B                  0x02dc 0x05e0 0x0000 0x01 0x00
+#define IMX94_PAD_UART2_TXD__LPSPI2_SCK                     0x02dc 0x05e0 0x0000 0x02 0x00
+#define IMX94_PAD_UART2_TXD__TPM1_CH3                       0x02dc 0x05e0 0x0000 0x03 0x00
+#define IMX94_PAD_UART2_TXD__GPIO1_IO7                      0x02dc 0x05e0 0x0000 0x05 0x00
+
+#define IMX94_PAD_PDM_CLK__PDM_CLK                          0x02e0 0x05e4 0x0000 0x00 0x00
+#define IMX94_PAD_PDM_CLK__MQS1_LEFT                        0x02e0 0x05e4 0x0000 0x01 0x00
+#define IMX94_PAD_PDM_CLK__LPTMR1_ALT0                      0x02e0 0x05e4 0x0000 0x04 0x00
+#define IMX94_PAD_PDM_CLK__GPIO1_IO8                        0x02e0 0x05e4 0x0000 0x05 0x00
+#define IMX94_PAD_PDM_CLK__CAN1_TX                          0x02e0 0x05e4 0x0000 0x06 0x00
+#define IMX94_PAD_PDM_CLK__EWM_OUT_B                        0x02e0 0x05e4 0x0000 0x07 0x00
+
+#define IMX94_PAD_PDM_BIT_STREAM0__PDM_BIT_STREAM0          0x02e4 0x05e8 0x0610 0x00 0x02
+#define IMX94_PAD_PDM_BIT_STREAM0__MQS1_RIGHT               0x02e4 0x05e8 0x0000 0x01 0x00
+#define IMX94_PAD_PDM_BIT_STREAM0__LPSPI1_PCS1              0x02e4 0x05e8 0x0000 0x02 0x00
+#define IMX94_PAD_PDM_BIT_STREAM0__TPM1_EXTCLK              0x02e4 0x05e8 0x0000 0x03 0x00
+#define IMX94_PAD_PDM_BIT_STREAM0__LPTMR1_ALT1              0x02e4 0x05e8 0x0000 0x04 0x00
+#define IMX94_PAD_PDM_BIT_STREAM0__GPIO1_IO9                0x02e4 0x05e8 0x0000 0x05 0x00
+#define IMX94_PAD_PDM_BIT_STREAM0__CAN1_RX                  0x02e4 0x05e8 0x0608 0x06 0x00
+
+#define IMX94_PAD_PDM_BIT_STREAM1__PDM_BIT_STREAM1          0x02e8 0x05ec 0x0614 0x00 0x03
+#define IMX94_PAD_PDM_BIT_STREAM1__NMI_GLUE_NMI             0x02e8 0x05ec 0x0000 0x01 0x00
+#define IMX94_PAD_PDM_BIT_STREAM1__LPSPI2_PCS1              0x02e8 0x05ec 0x0000 0x02 0x00
+#define IMX94_PAD_PDM_BIT_STREAM1__TPM2_EXTCLK              0x02e8 0x05ec 0x0000 0x03 0x00
+#define IMX94_PAD_PDM_BIT_STREAM1__LPTMR1_ALT2              0x02e8 0x05ec 0x0000 0x04 0x00
+#define IMX94_PAD_PDM_BIT_STREAM1__GPIO1_IO10               0x02e8 0x05ec 0x0000 0x05 0x00
+#define IMX94_PAD_PDM_BIT_STREAM1__EXT_CLK1                 0x02e8 0x05ec 0x0624 0x06 0x00
+
+#define IMX94_PAD_SAI1_TXFS__SAI1_TX_SYNC                   0x02ec 0x05f0 0x0000 0x00 0x00
+#define IMX94_PAD_SAI1_TXFS__SAI1_TX_DATA1                  0x02ec 0x05f0 0x0000 0x01 0x00
+#define IMX94_PAD_SAI1_TXFS__LPSPI1_PCS0                    0x02ec 0x05f0 0x0000 0x02 0x00
+#define IMX94_PAD_SAI1_TXFS__LPUART2_DTR_B                  0x02ec 0x05f0 0x0000 0x03 0x00
+#define IMX94_PAD_SAI1_TXFS__MQS1_LEFT                      0x02ec 0x05f0 0x0000 0x04 0x00
+#define IMX94_PAD_SAI1_TXFS__GPIO1_IO11                     0x02ec 0x05f0 0x0000 0x05 0x00
+#define IMX94_PAD_SAI1_TXFS__EWM_OUT_B                      0x02ec 0x05f0 0x0000 0x06 0x00
+
+#define IMX94_PAD_SAI1_TXC__SAI1_TX_BCLK                    0x02f0 0x05f4 0x0000 0x00 0x00
+#define IMX94_PAD_SAI1_TXC__LPUART2_CTS_B                   0x02f0 0x05f4 0x0000 0x01 0x00
+#define IMX94_PAD_SAI1_TXC__LPSPI1_SIN                      0x02f0 0x05f4 0x0000 0x02 0x00
+#define IMX94_PAD_SAI1_TXC__LPUART1_DSR_B                   0x02f0 0x05f4 0x0000 0x03 0x00
+#define IMX94_PAD_SAI1_TXC__CAN1_RX                         0x02f0 0x05f4 0x0608 0x04 0x01
+#define IMX94_PAD_SAI1_TXC__GPIO1_IO12                      0x02f0 0x05f4 0x0000 0x05 0x00
+
+#define IMX94_PAD_SAI1_TXD0__SAI1_TX_DATA0                  0x02f4 0x05f8 0x0000 0x00 0x00
+#define IMX94_PAD_SAI1_TXD0__LPUART2_RTS_B                  0x02f4 0x05f8 0x0000 0x01 0x00
+#define IMX94_PAD_SAI1_TXD0__LPSPI1_SCK                     0x02f4 0x05f8 0x0000 0x02 0x00
+#define IMX94_PAD_SAI1_TXD0__LPUART1_DTR_B                  0x02f4 0x05f8 0x0000 0x03 0x00
+#define IMX94_PAD_SAI1_TXD0__CAN1_TX                        0x02f4 0x05f8 0x0000 0x04 0x00
+#define IMX94_PAD_SAI1_TXD0__GPIO1_IO13                     0x02f4 0x05f8 0x0000 0x05 0x00
+
+#define IMX94_PAD_SAI1_RXD0__SAI1_RX_DATA0                  0x02f8 0x05fc 0x0000 0x00 0x00
+#define IMX94_PAD_SAI1_RXD0__SAI1_MCLK                      0x02f8 0x05fc 0x0620 0x01 0x02
+#define IMX94_PAD_SAI1_RXD0__LPSPI1_SOUT                    0x02f8 0x05fc 0x0000 0x02 0x00
+#define IMX94_PAD_SAI1_RXD0__LPUART2_DSR_B                  0x02f8 0x05fc 0x0000 0x03 0x00
+#define IMX94_PAD_SAI1_RXD0__MQS1_RIGHT                     0x02f8 0x05fc 0x0000 0x04 0x00
+#define IMX94_PAD_SAI1_RXD0__GPIO1_IO14                     0x02f8 0x05fc 0x0000 0x05 0x00
+#define IMX94_PAD_SAI1_RXD0__LPIT1_TRIGGER3                 0x02f8 0x05fc 0x0000 0x07 0x00
+
+#define IMX94_PAD_WDOG_ANY__WDOG_ANY                        0x02fc 0x0600 0x0000 0x00 0x00
+#define IMX94_PAD_WDOG_ANY__FCCU_EOUT1                      0x02fc 0x0600 0x0000 0x01 0x00
+#define IMX94_PAD_WDOG_ANY__GPIO1_IO15                      0x02fc 0x0600 0x0000 0x05 0x00
+#endif /* __DTS_IMX94_PINFUNC_H */
diff --git a/src/arm64/freescale/imx94-power.h b/src/arm64/freescale/imx94-power.h
new file mode 100644 (file)
index 0000000..5209afe
--- /dev/null
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: (GPL-2.0 OR MIT) */
+/*
+ *  Copyright 2024-2025 NXP
+ */
+
+#ifndef __IMX94_POWER_H
+#define __IMX94_POWER_H
+
+#define IMX94_PD_ANA           0
+#define IMX94_PD_AON           1
+#define IMX94_PD_BBSM          2
+#define IMX94_PD_M71           3
+#define IMX94_PD_CCMSRCGPC     4
+#define IMX94_PD_A55C0         5
+#define IMX94_PD_A55C1         6
+#define IMX94_PD_A55C2         7
+#define IMX94_PD_A55C3         8
+#define IMX94_PD_A55P          9
+#define IMX94_PD_DDR           10
+#define IMX94_PD_DISPLAY       11
+#define IMX94_PD_M70           12
+#define IMX94_PD_HSIO_TOP      13
+#define IMX94_PD_HSIO_WAON     14
+#define IMX94_PD_NETC          15
+#define IMX94_PD_NOC           16
+#define IMX94_PD_NPU           17
+#define IMX94_PD_WAKEUP                18
+
+#define IMX94_PERF_M33         0
+#define IMX94_PERF_M33S                1
+#define IMX94_PERF_WAKEUP      2
+#define IMX94_PERF_M70         3
+#define IMX94_PERF_M71         4
+#define IMX94_PERF_DRAM                5
+#define IMX94_PERF_HSIO                6
+#define IMX94_PERF_NPU         7
+#define IMX94_PERF_NOC         8
+#define IMX94_PERF_A55         9
+#define IMX94_PERF_DISP                10
+
+#endif /* __IMX94_POWER_H */
diff --git a/src/arm64/freescale/imx94.dtsi b/src/arm64/freescale/imx94.dtsi
new file mode 100644 (file)
index 0000000..3661ea4
--- /dev/null
@@ -0,0 +1,1148 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2024-2025 NXP
+ */
+
+#include <dt-bindings/dma/fsl-edma.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+#include "imx94-clock.h"
+#include "imx94-pinfunc.h"
+#include "imx94-power.h"
+
+/ {
+       #address-cells = <2>;
+       #size-cells = <2>;
+       interrupt-parent = <&gic>;
+
+       osc_24m: clock-24m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "osc_24m";
+       };
+
+       dummy: clock-dummy {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+               clock-output-names = "dummy";
+       };
+
+       clk_ext1: clock-ext1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <133000000>;
+               clock-output-names = "clk_ext1";
+       };
+
+       sai1_mclk: clock-sai1-mclk1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+               clock-output-names = "sai1_mclk";
+       };
+
+       sai2_mclk: clock-sai2-mclk1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+               clock-output-names = "sai2_mclk";
+       };
+
+       sai3_mclk: clock-sai3-mclk1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+               clock-output-names = "sai3_mclk";
+       };
+
+       sai4_mclk: clock-sai4-mclk1 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <0>;
+               clock-output-names = "sai4_mclk";
+       };
+
+       firmware {
+               scmi {
+                       compatible = "arm,scmi";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       mboxes = <&mu2 5 0>, <&mu2 3 0>, <&mu2 3 1>, <&mu2 5 1>;
+                       shmem = <&scmi_buf0>, <&scmi_buf1>;
+                       arm,max-rx-timeout-ms = <5000>;
+
+                       scmi_devpd: protocol@11 {
+                               reg = <0x11>;
+                               #power-domain-cells = <1>;
+                       };
+
+                       scmi_sys_power: protocol@12 {
+                               reg = <0x12>;
+                       };
+
+                       scmi_perf: protocol@13 {
+                               reg = <0x13>;
+                               #power-domain-cells = <1>;
+                       };
+
+                       scmi_clk: protocol@14 {
+                               reg = <0x14>;
+                               #clock-cells = <1>;
+                       };
+
+                       scmi_iomuxc: protocol@19 {
+                               reg = <0x19>;
+                       };
+
+                       scmi_bbm: protocol@81 {
+                               reg = <0x81>;
+                       };
+
+                       scmi_misc: protocol@84 {
+                               reg = <0x84>;
+                       };
+               };
+       };
+
+       pmu {
+               compatible = "arm,cortex-a55-pmu";
+               interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(6) | IRQ_TYPE_LEVEL_LOW)>;
+               clock-frequency = <24000000>;
+               interrupt-parent = <&gic>;
+               arm,no-tick-in-suspend;
+       };
+
+       gic: interrupt-controller@48000000 {
+               compatible = "arm,gic-v3";
+               reg = <0 0x48000000 0 0x10000>,
+                     <0 0x48060000 0 0xc0000>;
+               ranges;
+               #interrupt-cells = <3>;
+               interrupt-controller;
+               interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               dma-noncoherent;
+               interrupt-parent = <&gic>;
+
+               its: msi-controller@48040000 {
+                       compatible = "arm,gic-v3-its";
+                       reg = <0 0x48040000 0 0x20000>;
+                       #msi-cells = <1>;
+                       dma-noncoherent;
+                       msi-controller;
+               };
+       };
+
+       soc {
+               compatible = "simple-bus";
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               aips2: bus@42000000 {
+                       compatible = "fsl,aips-bus", "simple-bus";
+                       reg = <0x0 0x42000000 0x0 0x800000>;
+                       ranges = <0x42000000 0x0 0x42000000 0x8000000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       edma2: dma-controller@42000000 {
+                               compatible = "fsl,imx94-edma5", "fsl,imx95-edma5";
+                               reg = <0x42000000 0x210000>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "dma";
+                               #dma-cells = <3>;
+                               dma-channels = <64>;
+                               interrupts-extended = <&a55_irqsteer 0>, <&a55_irqsteer 1>,
+                                                     <&a55_irqsteer 2>, <&a55_irqsteer 3>,
+                                                     <&a55_irqsteer 4>, <&a55_irqsteer 5>,
+                                                     <&a55_irqsteer 6>, <&a55_irqsteer 7>,
+                                                     <&a55_irqsteer 8>, <&a55_irqsteer 9>,
+                                                     <&a55_irqsteer 10>, <&a55_irqsteer 11>,
+                                                     <&a55_irqsteer 12>, <&a55_irqsteer 13>,
+                                                     <&a55_irqsteer 14>, <&a55_irqsteer 15>,
+                                                     <&a55_irqsteer 16>, <&a55_irqsteer 17>,
+                                                     <&a55_irqsteer 18>, <&a55_irqsteer 19>,
+                                                     <&a55_irqsteer 20>, <&a55_irqsteer 21>,
+                                                     <&a55_irqsteer 22>, <&a55_irqsteer 23>,
+                                                     <&a55_irqsteer 24>, <&a55_irqsteer 25>,
+                                                     <&a55_irqsteer 26>, <&a55_irqsteer 27>,
+                                                     <&a55_irqsteer 28>, <&a55_irqsteer 29>,
+                                                     <&a55_irqsteer 30>, <&a55_irqsteer 31>,
+                                                     <&a55_irqsteer 64>, <&a55_irqsteer 65>,
+                                                     <&a55_irqsteer 66>, <&a55_irqsteer 67>,
+                                                     <&a55_irqsteer 68>, <&a55_irqsteer 69>,
+                                                     <&a55_irqsteer 70>, <&a55_irqsteer 71>,
+                                                     <&a55_irqsteer 72>, <&a55_irqsteer 73>,
+                                                     <&a55_irqsteer 74>, <&a55_irqsteer 75>,
+                                                     <&a55_irqsteer 76>, <&a55_irqsteer 77>,
+                                                     <&a55_irqsteer 78>, <&a55_irqsteer 79>,
+                                                     <&a55_irqsteer 80>, <&a55_irqsteer 81>,
+                                                     <&a55_irqsteer 82>, <&a55_irqsteer 83>,
+                                                     <&a55_irqsteer 84>, <&a55_irqsteer 85>,
+                                                     <&a55_irqsteer 86>, <&a55_irqsteer 87>,
+                                                     <&a55_irqsteer 88>, <&a55_irqsteer 89>,
+                                                     <&a55_irqsteer 90>, <&a55_irqsteer 91>,
+                                                     <&a55_irqsteer 92>, <&a55_irqsteer 93>,
+                                                     <&a55_irqsteer 94>, <&a55_irqsteer 95>;
+                       };
+
+                       mu10: mailbox@42430000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x42430000 0x10000>;
+                               interrupts = <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       i3c2: i3c@42520000 {
+                               compatible = "silvaco,i3c-master-v1";
+                               reg = <0x42520000 0x10000>;
+                               interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <3>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>,
+                                        <&scmi_clk IMX94_CLK_I3C2SLOW>,
+                                        <&dummy>;
+                               clock-names = "pclk", "fast_clk", "slow_clk";
+                               status = "disabled";
+                       };
+
+                       lpi2c3: i2c@42530000 {
+                               compatible = "fsl,imx94-lpi2c", "fsl,imx7ulp-lpi2c";
+                               reg = <0x42530000 0x10000>;
+                               interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPI2C3>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma2 5 0 0>, <&edma2 6 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpi2c4: i2c@42540000 {
+                               compatible = "fsl,imx94-lpi2c", "fsl,imx7ulp-lpi2c";
+                               reg = <0x42540000 0x10000>;
+                               interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPI2C4>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma4 4 0 0>, <&edma4 5 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpspi3: spi@42550000 {
+                               compatible = "fsl,imx94-spi", "fsl,imx7ulp-spi";
+                               reg = <0x42550000 0x10000>;
+                               interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPSPI3>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma2 7 0 0>, <&edma2 8 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpspi4: spi@42560000 {
+                               compatible = "fsl,imx94-spi", "fsl,imx7ulp-spi";
+                               reg = <0x42560000 0x10000>;
+                               interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPSPI4>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma4 6 0 0>, <&edma4 7 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpuart3: serial@42570000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x42570000 0x1000>;
+                               interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART3>;
+                               clock-names = "ipg";
+                               dmas = <&edma2 10 0 FSL_EDMA_RX>, <&edma2 9 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpuart4: serial@42580000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x42580000 0x1000>;
+                               interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART4>;
+                               clock-names = "ipg";
+                               dmas = <&edma4 10 0 FSL_EDMA_RX>, <&edma4 9 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpuart5: serial@42590000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x42590000 0x1000>;
+                               interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART5>;
+                               clock-names = "ipg";
+                               dmas = <&edma2 12 0 FSL_EDMA_RX>, <&edma2 11 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpuart6: serial@425a0000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x425a0000 0x1000>;
+                               interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART6>;
+                               clock-names = "ipg";
+                               dmas = <&edma4 12 0 FSL_EDMA_RX>, <&edma4 11 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       flexcan2: can@425b0000 {
+                               compatible = "fsl,imx94-flexcan", "fsl,imx95-flexcan";
+                               reg = <0x425b0000 0x10000>;
+                               interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>,
+                                        <&scmi_clk IMX94_CLK_CAN2>;
+                               clock-names = "ipg", "per";
+                               assigned-clocks = <&scmi_clk IMX94_CLK_CAN2>;
+                               assigned-clock-parents = <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+                               assigned-clock-rates = <80000000>;
+                               fsl,clk-source = /bits/ 8 <0>;
+                               status = "disabled";
+                       };
+
+                       flexcan3: can@425e0000 {
+                               compatible = "fsl,imx94-flexcan", "fsl,imx95-flexcan";
+                               reg = <0x425e0000 0x10000>;
+                               interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>,
+                                        <&scmi_clk IMX94_CLK_CAN3>;
+                               clock-names = "ipg", "per";
+                               assigned-clocks = <&scmi_clk IMX94_CLK_CAN3>;
+                               assigned-clock-parents = <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+                               assigned-clock-rates = <80000000>;
+                               fsl,clk-source = /bits/ 8 <0>;
+                               status = "disabled";
+                       };
+
+                       flexcan4: can@425f0000 {
+                               compatible = "fsl,imx94-flexcan", "fsl,imx95-flexcan";
+                               reg = <0x425f0000 0x10000>;
+                               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>,
+                                        <&scmi_clk IMX94_CLK_CAN4>;
+                               clock-names = "ipg", "per";
+                               assigned-clocks = <&scmi_clk IMX94_CLK_CAN4>;
+                               assigned-clock-parents = <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+                               assigned-clock-rates = <80000000>;
+                               fsl,clk-source = /bits/ 8 <0>;
+                               status = "disabled";
+                       };
+
+                       flexcan5: can@42600000 {
+                               compatible = "fsl,imx94-flexcan", "fsl,imx95-flexcan";
+                               reg = <0x42600000 0x10000>;
+                               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>,
+                                        <&scmi_clk IMX94_CLK_CAN5>;
+                               clock-names = "ipg", "per";
+                               assigned-clocks = <&scmi_clk IMX94_CLK_CAN5>;
+                               assigned-clock-parents = <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+                               assigned-clock-rates = <80000000>;
+                               fsl,clk-source = /bits/ 8 <0>;
+                               status = "disabled";
+                       };
+
+                       sai2: sai@42650000 {
+                               compatible = "fsl,imx94-sai", "fsl,imx95-sai";
+                               reg = <0x42650000 0x10000>;
+                               interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>, <&dummy>,
+                                       <&scmi_clk IMX94_CLK_SAI2>, <&dummy>, <&dummy>;
+                               clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                               dmas = <&edma2 30 0 FSL_EDMA_RX>, <&edma2 29 0 0>;
+                               dma-names = "rx", "tx";
+                               #sound-dai-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       sai3: sai@42660000 {
+                               compatible = "fsl,imx94-sai", "fsl,imx95-sai";
+                               reg = <0x42660000 0x10000>;
+                               interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>, <&dummy>,
+                                       <&scmi_clk IMX94_CLK_SAI3>, <&dummy>, <&dummy>;
+                               clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                               dmas = <&edma2 32 0 FSL_EDMA_RX>, <&edma2 31 0 0>;
+                               dma-names = "rx", "tx";
+                               #sound-dai-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       sai4: sai@42670000 {
+                               compatible = "fsl,imx94-sai", "fsl,imx95-sai";
+                               reg = <0x42670000 0x10000>;
+                               interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>, <&dummy>,
+                                       <&scmi_clk IMX94_CLK_SAI4>, <&dummy>, <&dummy>;
+                               clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                               dmas = <&edma2 36 0 FSL_EDMA_RX>, <&edma2 35 0 0>;
+                               dma-names = "rx", "tx";
+                               #sound-dai-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       lpuart7: serial@42690000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x42690000 0x1000>;
+                               interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART7>;
+                               clock-names = "ipg";
+                               dmas = <&edma2 46 0 FSL_EDMA_RX>, <&edma2 45 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpuart8: serial@426a0000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x426a0000 0x1000>;
+                               interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART8>;
+                               clock-names = "ipg";
+                               dmas = <&edma4 39 0 FSL_EDMA_RX>, <&edma4 38 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpi2c5: i2c@426b0000 {
+                               compatible = "fsl,imx94-lpi2c", "fsl,imx7ulp-lpi2c";
+                               reg = <0x426b0000 0x10000>;
+                               interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPI2C5>,
+                                        <&scmi_clk IMX94_CLK_BUSAON>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma2 37 0 0>, <&edma2 38 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpi2c6: i2c@426c0000 {
+                               compatible = "fsl,imx94-lpi2c", "fsl,imx7ulp-lpi2c";
+                               reg = <0x426c0000 0x10000>;
+                               interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPI2C6>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma4 30 0 0>, <&edma4 31 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpi2c7: i2c@426d0000 {
+                               compatible = "fsl,imx94-lpi2c", "fsl,imx7ulp-lpi2c";
+                               reg = <0x426d0000 0x10000>;
+                               interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPI2C7>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma2 39 0 0>, <&edma2 40 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpi2c8: i2c@426e0000 {
+                               compatible = "fsl,imx94-lpi2c", "fsl,imx7ulp-lpi2c";
+                               reg = <0x426e0000 0x10000>;
+                               interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPI2C8>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma4 32 0 0>, <&edma4 33 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpspi5: spi@426f0000 {
+                               compatible = "fsl,imx94-spi", "fsl,imx7ulp-spi";
+                               reg = <0x426f0000 0x10000>;
+                               interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPSPI5>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma2 41 0 0>, <&edma2 42 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpspi6: spi@42700000 {
+                               compatible = "fsl,imx94-spi", "fsl,imx7ulp-spi";
+                               reg = <0x42700000 0x10000>;
+                               interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPSPI6>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma4 34 0 0>, <&edma4 35 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpspi7: spi@42710000 {
+                               compatible = "fsl,imx94-spi", "fsl,imx7ulp-spi";
+                               reg = <0x42710000 0x10000>;
+                               interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPSPI7>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma2 43 0 0>, <&edma2 44 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpspi8: spi@42720000 {
+                               compatible = "fsl,imx94-spi", "fsl,imx7ulp-spi";
+                               reg = <0x42720000 0x10000>;
+                               interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPSPI8>,
+                                        <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma4 36 0 0>, <&edma4 37 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       mu11: mailbox@42730000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x42730000 0x10000>;
+                               interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       edma4: dma-controller@42df0000 {
+                               compatible = "fsl,imx94-edma5", "fsl,imx95-edma5";
+                               reg = <0x42df0000 0x210000>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               clock-names = "dma";
+                               #dma-cells = <3>;
+                               dma-channels = <64>;
+                               interrupts-extended = <&a55_irqsteer 128>, <&a55_irqsteer 129>,
+                                                     <&a55_irqsteer 130>, <&a55_irqsteer 131>,
+                                                     <&a55_irqsteer 132>, <&a55_irqsteer 133>,
+                                                     <&a55_irqsteer 134>, <&a55_irqsteer 135>,
+                                                     <&a55_irqsteer 136>, <&a55_irqsteer 137>,
+                                                     <&a55_irqsteer 138>, <&a55_irqsteer 139>,
+                                                     <&a55_irqsteer 140>, <&a55_irqsteer 141>,
+                                                     <&a55_irqsteer 142>, <&a55_irqsteer 143>,
+                                                     <&a55_irqsteer 144>, <&a55_irqsteer 145>,
+                                                     <&a55_irqsteer 146>, <&a55_irqsteer 147>,
+                                                     <&a55_irqsteer 148>, <&a55_irqsteer 149>,
+                                                     <&a55_irqsteer 150>, <&a55_irqsteer 151>,
+                                                     <&a55_irqsteer 152>, <&a55_irqsteer 153>,
+                                                     <&a55_irqsteer 154>, <&a55_irqsteer 155>,
+                                                     <&a55_irqsteer 156>, <&a55_irqsteer 157>,
+                                                     <&a55_irqsteer 158>, <&a55_irqsteer 159>,
+                                                     <&a55_irqsteer 192>, <&a55_irqsteer 193>,
+                                                     <&a55_irqsteer 194>, <&a55_irqsteer 195>,
+                                                     <&a55_irqsteer 196>, <&a55_irqsteer 197>,
+                                                     <&a55_irqsteer 198>, <&a55_irqsteer 199>,
+                                                     <&a55_irqsteer 200>, <&a55_irqsteer 201>,
+                                                     <&a55_irqsteer 202>, <&a55_irqsteer 203>,
+                                                     <&a55_irqsteer 204>, <&a55_irqsteer 205>,
+                                                     <&a55_irqsteer 206>, <&a55_irqsteer 207>,
+                                                     <&a55_irqsteer 208>, <&a55_irqsteer 209>,
+                                                     <&a55_irqsteer 210>, <&a55_irqsteer 211>,
+                                                     <&a55_irqsteer 212>, <&a55_irqsteer 213>,
+                                                     <&a55_irqsteer 214>, <&a55_irqsteer 215>,
+                                                     <&a55_irqsteer 216>, <&a55_irqsteer 217>,
+                                                     <&a55_irqsteer 218>, <&a55_irqsteer 219>,
+                                                     <&a55_irqsteer 220>, <&a55_irqsteer 221>,
+                                                     <&a55_irqsteer 222>, <&a55_irqsteer 223>;
+                       };
+               };
+
+               aips3: bus@42800000 {
+                       compatible = "fsl,aips-bus", "simple-bus";
+                       reg = <0 0x42800000 0 0x800000>;
+                       ranges = <0x42800000 0x0 0x42800000 0x800000>,
+                                <0x28000000 0x0 0x28000000 0x1000000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       usdhc1: mmc@42850000 {
+                               compatible = "fsl,imx94-usdhc", "fsl,imx8mm-usdhc";
+                               reg = <0x42850000 0x10000>;
+                               interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>,
+                                        <&scmi_clk IMX94_CLK_WAKEUPAXI>,
+                                        <&scmi_clk IMX94_CLK_USDHC1>;
+                               clock-names = "ipg", "ahb", "per";
+                               assigned-clocks = <&scmi_clk IMX94_CLK_USDHC1>;
+                               assigned-clock-parents = <&scmi_clk IMX94_CLK_SYSPLL1_PFD1>;
+                               assigned-clock-rates = <400000000>;
+                               bus-width = <8>;
+                               fsl,tuning-start-tap = <1>;
+                               fsl,tuning-step = <2>;
+                               status = "disabled";
+                       };
+
+                       usdhc2: mmc@42860000 {
+                               compatible = "fsl,imx94-usdhc", "fsl,imx8mm-usdhc";
+                               reg = <0x42860000 0x10000>;
+                               interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>,
+                                        <&scmi_clk IMX94_CLK_WAKEUPAXI>,
+                                        <&scmi_clk IMX94_CLK_USDHC2>;
+                               clock-names = "ipg", "ahb", "per";
+                               assigned-clocks = <&scmi_clk IMX94_CLK_USDHC2>;
+                               assigned-clock-parents = <&scmi_clk IMX94_CLK_SYSPLL1_PFD1>;
+                               assigned-clock-rates = <200000000>;
+                               bus-width = <4>;
+                               fsl,tuning-start-tap = <1>;
+                               fsl,tuning-step = <2>;
+                               status = "disabled";
+                       };
+
+                       usdhc3: mmc@42880000 {
+                               compatible = "fsl,imx94-usdhc", "fsl,imx8mm-usdhc";
+                               reg = <0x42880000 0x10000>;
+                               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>,
+                                        <&scmi_clk IMX94_CLK_WAKEUPAXI>,
+                                        <&scmi_clk IMX94_CLK_USDHC3>;
+                               clock-names = "ipg", "ahb", "per";
+                               assigned-clocks = <&scmi_clk IMX94_CLK_USDHC3>;
+                               assigned-clock-parents = <&scmi_clk IMX94_CLK_SYSPLL1_PFD1>;
+                               assigned-clock-rates = <200000000>;
+                               bus-width = <4>;
+                               fsl,tuning-start-tap = <1>;
+                               fsl,tuning-step = <2>;
+                               status = "disabled";
+                       };
+
+                       lpuart9: serial@42a50000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x42a50000 0x1000>;
+                               interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART10>;
+                               clock-names = "ipg";
+                               dmas = <&edma2 51 0 FSL_EDMA_RX>, <&edma2 50 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpuart10: serial@42a60000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x42a60000 0x1000>;
+                               interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART10>;
+                               clock-names = "ipg";
+                               dmas = <&edma4 47 0 FSL_EDMA_RX>, <&edma4 46 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpuart11: serial@42a70000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x42a70000 0x1000>;
+                               interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART11>;
+                               clock-names = "ipg";
+                               dmas = <&edma2 53 0 FSL_EDMA_RX>, <&edma2 52 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpuart12: serial@42a80000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x42a80000 0x1000>;
+                               interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART12>;
+                               clock-names = "ipg";
+                               dmas = <&edma4 49 0 FSL_EDMA_RX>, <&edma4 48 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       mu12: mailbox@42ac0000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x42ac0000 0x10000>;
+                               interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       mu13: mailbox@42ae0000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x42ae0000 0x10000>;
+                               interrupts = <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       mu14: mailbox@42b00000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x42b00000 0x10000>;
+                               interrupts = <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       mu15: mailbox@42b20000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x42b20000 0x10000>;
+                               interrupts = <GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       mu16: mailbox@42b40000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x42b40000 0x10000>;
+                               interrupts = <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       mu17: mailbox@42b60000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x42b60000 0x10000>;
+                               interrupts = <GIC_SPI 288 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+               };
+
+               gpio2: gpio@43810000 {
+                       compatible = "fsl,imx94-gpio", "fsl,imx8ulp-gpio";
+                       reg = <0x0 0x43810000 0x0 0x1000>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&scmi_iomuxc 0 4 32>;
+               };
+
+               gpio3: gpio@43820000 {
+                       compatible = "fsl,imx94-gpio", "fsl,imx8ulp-gpio";
+                       reg = <0x0 0x43820000 0x0 0x1000>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&scmi_iomuxc 0 36 26>;
+               };
+
+               gpio4: gpio@43840000 {
+                       compatible = "fsl,imx94-gpio", "fsl,imx8ulp-gpio";
+                       reg = <0x0 0x43840000 0x0 0x1000>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&scmi_iomuxc 0 62 4>, <&scmi_iomuxc 4 0 4>,
+                                     <&scmi_iomuxc 8 140 12>, <&scmi_iomuxc 20 164 12>;
+               };
+
+               gpio5: gpio@43850000 {
+                       compatible = "fsl,imx94-gpio", "fsl,imx8ulp-gpio";
+                       reg = <0x0 0x43850000 0x0 0x1000>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&scmi_iomuxc 0 108 32>;
+               };
+
+               gpio6: gpio@43860000 {
+                       compatible = "fsl,imx94-gpio", "fsl,imx8ulp-gpio";
+                       reg = <0x0 0x43860000 0x0 0x1000>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&scmi_iomuxc 0 66 32>;
+               };
+
+               gpio7: gpio@43870000 {
+                       compatible = "fsl,imx94-gpio", "fsl,imx8ulp-gpio";
+                       reg = <0x0 0x43870000 0x0 0x1000>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       gpio-ranges = <&scmi_iomuxc 0 98 10>, <&scmi_iomuxc 16 152 12>;
+               };
+
+               aips1: bus@44000000 {
+                       compatible = "fsl,aips-bus", "simple-bus";
+                       reg = <0x0 0x44000000 0x0 0x800000>;
+                       ranges = <0x44000000 0x0 0x44000000 0x800000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       edma1: dma-controller@44000000 {
+                               compatible = "fsl,imx94-edma3", "fsl,imx93-edma3";
+                               reg = <0x44000000 0x210000>;
+                               interrupts = <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 232 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 235 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 236 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 237 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSAON>;
+                               clock-names = "dma";
+                               #dma-cells = <3>;
+                               dma-channels = <32>;
+                       };
+
+                       mu1: mailbox@44220000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x44220000 0x10000>;
+                               interrupts = <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSAON>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       system_counter: timer@44290000 {
+                               compatible = "nxp,imx94-sysctr-timer", "nxp,imx95-sysctr-timer";
+                               reg = <0x44290000 0x30000>;
+                               interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&osc_24m>;
+                               clock-names = "per";
+                               nxp,no-divider;
+                       };
+
+                       tpm1: pwm@44310000 {
+                               compatible = "fsl,imx94-pwm", "fsl,imx7ulp-pwm";
+                               reg = <0x44310000 0x1000>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSAON>;
+                               #pwm-cells = <3>;
+                               status = "disabled";
+                       };
+
+                       tpm2: pwm@44320000 {
+                               compatible = "fsl,imx94-pwm", "fsl,imx7ulp-pwm";
+                               reg = <0x44320000 0x1000>;
+                               clocks = <&scmi_clk IMX94_CLK_TPM2>;
+                               #pwm-cells = <3>;
+                               status = "disabled";
+                       };
+
+                       i3c1: i3c@44330000 {
+                               compatible = "silvaco,i3c-master-v1";
+                               reg = <0x44330000 0x10000>;
+                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <3>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSAON>,
+                                        <&scmi_clk IMX94_CLK_I3C1SLOW>,
+                                        <&dummy>;
+                               clock-names = "pclk", "fast_clk", "slow_clk";
+                               status = "disabled";
+                       };
+
+                       lpi2c1: i2c@44340000 {
+                               compatible = "fsl,imx94-lpi2c", "fsl,imx7ulp-lpi2c";
+                               reg = <0x44340000 0x10000>;
+                               interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPI2C1>,
+                                        <&scmi_clk IMX94_CLK_BUSAON>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma1 12 0 0>, <&edma1 13 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpi2c2: i2c@44350000 {
+                               compatible = "fsl,imx94-lpi2c", "fsl,imx7ulp-lpi2c";
+                               reg = <0x44350000 0x10000>;
+                               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPI2C2>,
+                                        <&scmi_clk IMX94_CLK_BUSAON>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma1 14 0 0>, <&edma1 15 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpspi1: spi@44360000 {
+                               compatible = "fsl,imx94-spi", "fsl,imx7ulp-spi";
+                               reg = <0x44360000 0x10000>;
+                               interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPSPI2>,
+                                        <&scmi_clk IMX94_CLK_BUSAON>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma1 16 0 0>, <&edma1 17 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpspi2: spi@44370000 {
+                               compatible = "fsl,imx94-spi", "fsl,imx7ulp-spi";
+                               reg = <0x44370000 0x10000>;
+                               interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               clocks = <&scmi_clk IMX94_CLK_LPSPI2>,
+                                        <&scmi_clk IMX94_CLK_BUSAON>;
+                               clock-names = "per", "ipg";
+                               dmas = <&edma1 18 0 0>, <&edma1 19 0 FSL_EDMA_RX>;
+                               dma-names = "tx", "rx";
+                               status = "disabled";
+                       };
+
+                       lpuart1: serial@44380000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x44380000 0x1000>;
+                               interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART1>;
+                               clock-names = "ipg";
+                               dmas = <&edma1 21 0 FSL_EDMA_RX>, <&edma1 20 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       lpuart2: serial@44390000 {
+                               compatible = "fsl,imx94-lpuart", "fsl,imx8ulp-lpuart",
+                                            "fsl,imx7ulp-lpuart";
+                               reg = <0x44390000 0x1000>;
+                               interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_LPUART2>;
+                               clock-names = "ipg";
+                               dmas = <&edma1 23 0 FSL_EDMA_RX>, <&edma1 22 0 0>;
+                               dma-names = "rx", "tx";
+                               status = "disabled";
+                       };
+
+                       flexcan1: can@443a0000 {
+                               compatible = "fsl,imx94-flexcan", "fsl,imx95-flexcan";
+                               reg = <0x443a0000 0x10000>;
+                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                               status = "disabled";
+                       };
+
+                       sai1: sai@443b0000 {
+                               compatible = "fsl,imx94-sai", "fsl,imx95-sai";
+                               reg = <0x443b0000 0x10000>;
+                               interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSAON>, <&dummy>,
+                                       <&scmi_clk IMX94_CLK_SAI1>, <&dummy>,
+                                       <&dummy>, <&dummy>;
+                               clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";
+                               dmas = <&edma1 25 0 FSL_EDMA_RX>, <&edma1 24 0 0>;
+                               dma-names = "rx", "tx";
+                               #sound-dai-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       adc1: adc@44530000 {
+                               compatible = "nxp,imx94-adc", "nxp,imx93-adc";
+                               reg = <0x44530000 0x10000>;
+                               interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_ADC>;
+                               clock-names = "ipg";
+                               #io-channel-cells = <1>;
+                               status = "disabled";
+                       };
+
+                       mu2: mailbox@445b0000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x445b0000 0x1000>;
+                               ranges;
+                               interrupts = <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               #mbox-cells = <2>;
+
+                               sram0: sram@445b1000 {
+                                       compatible = "mmio-sram";
+                                       reg = <0x445b1000 0x400>;
+                                       ranges = <0x0 0x445b1000 0x400>;
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+
+                                       scmi_buf0: scmi-sram-section@0 {
+                                               compatible = "arm,scmi-shmem";
+                                               reg = <0x0 0x80>;
+                                       };
+
+                                       scmi_buf1: scmi-sram-section@80 {
+                                               compatible = "arm,scmi-shmem";
+                                               reg = <0x80 0x80>;
+                                       };
+                               };
+                       };
+
+                       mu3: mailbox@445d0000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x445d0000 0x10000>;
+                               interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       mu4: mailbox@445f0000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x445f0000 0x10000>;
+                               interrupts = <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       mu6: mailbox@44630000 {
+                               compatible = "fsl,imx94-mu", "fsl,imx95-mu";
+                               reg = <0x44630000 0x10000>;
+                               interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+                               #mbox-cells = <2>;
+                               status = "disabled";
+                       };
+
+                       a55_irqsteer: interrupt-controller@446a0000 {
+                               compatible = "fsl,imx94-irqsteer", "fsl,imx-irqsteer";
+                               reg = <0x446a0000 0x1000>;
+                               #interrupt-cells = <1>;
+                               interrupt-controller;
+                               interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSAON>;
+                               clock-names = "ipg";
+                               fsl,channel = <0>;
+                               fsl,num-irqs = <960>;
+                       };
+               };
+
+               aips4: bus@49000000 {
+                       compatible = "fsl,aips-bus", "simple-bus";
+                       reg = <0x0 0x49000000 0x0 0x800000>;
+                       ranges = <0x49000000 0x0 0x49000000 0x800000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       wdog3: watchdog@49220000 {
+                               compatible = "fsl,imx94-wdt", "fsl,imx93-wdt";
+                               reg = <0x49220000 0x10000>;
+                               interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&scmi_clk IMX94_CLK_BUSWAKEUP>;
+                               timeout-sec = <40>;
+                               fsl,ext-reset-output;
+                               status = "disabled";
+                       };
+               };
+       };
+};
diff --git a/src/arm64/freescale/imx943-evk.dts b/src/arm64/freescale/imx943-evk.dts
new file mode 100644 (file)
index 0000000..cc8f3e6
--- /dev/null
@@ -0,0 +1,195 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2024-2025 NXP
+ */
+
+/dts-v1/;
+
+#include "imx943.dtsi"
+
+/ {
+       compatible = "fsl,imx943-evk", "fsl,imx94";
+       model = "NXP i.MX943 EVK board";
+
+       aliases {
+               mmc0 = &usdhc1;
+               mmc1 = &usdhc2;
+               serial0 = &lpuart1;
+       };
+
+       chosen {
+               stdout-path = &lpuart1;
+       };
+
+       reg_usdhc2_vmmc: regulator-usdhc2 {
+               compatible = "regulator-fixed";
+               off-on-delay-us = <12000>;
+               pinctrl-0 = <&pinctrl_reg_usdhc2_vmmc>;
+               pinctrl-names = "default";
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "VDD_SD2_3V3";
+               gpio = <&gpio4 27 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reserved-memory {
+               ranges;
+               #address-cells = <2>;
+               #size-cells = <2>;
+
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       alloc-ranges = <0 0x80000000 0 0x7f000000>;
+                       reusable;
+                       size = <0 0x10000000>;
+                       linux,cma-default;
+               };
+       };
+
+       memory@80000000 {
+               reg = <0x0 0x80000000 0x0 0x80000000>;
+               device_type = "memory";
+       };
+};
+
+&lpuart1 {
+       pinctrl-0 = <&pinctrl_uart1>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&scmi_iomuxc {
+       pinctrl_uart1: uart1grp {
+               fsl,pins = <
+                       IMX94_PAD_UART1_TXD__LPUART1_TX         0x31e
+                       IMX94_PAD_UART1_RXD__LPUART1_RX         0x31e
+               >;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <
+                       IMX94_PAD_SD1_CLK__USDHC1_CLK           0x158e
+                       IMX94_PAD_SD1_CMD__USDHC1_CMD           0x138e
+                       IMX94_PAD_SD1_DATA0__USDHC1_DATA0       0x138e
+                       IMX94_PAD_SD1_DATA1__USDHC1_DATA1       0x138e
+                       IMX94_PAD_SD1_DATA2__USDHC1_DATA2       0x138e
+                       IMX94_PAD_SD1_DATA3__USDHC1_DATA3       0x138e
+                       IMX94_PAD_SD1_DATA4__USDHC1_DATA4       0x138e
+                       IMX94_PAD_SD1_DATA5__USDHC1_DATA5       0x138e
+                       IMX94_PAD_SD1_DATA6__USDHC1_DATA6       0x138e
+                       IMX94_PAD_SD1_DATA7__USDHC1_DATA7       0x138e
+                       IMX94_PAD_SD1_STROBE__USDHC1_STROBE     0x158e
+               >;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <
+                       IMX94_PAD_SD1_CLK__USDHC1_CLK           0x15fe
+                       IMX94_PAD_SD1_CMD__USDHC1_CMD           0x13fe
+                       IMX94_PAD_SD1_DATA0__USDHC1_DATA0       0x13fe
+                       IMX94_PAD_SD1_DATA1__USDHC1_DATA1       0x13fe
+                       IMX94_PAD_SD1_DATA2__USDHC1_DATA2       0x13fe
+                       IMX94_PAD_SD1_DATA3__USDHC1_DATA3       0x13fe
+                       IMX94_PAD_SD1_DATA4__USDHC1_DATA4       0x13fe
+                       IMX94_PAD_SD1_DATA5__USDHC1_DATA5       0x13fe
+                       IMX94_PAD_SD1_DATA6__USDHC1_DATA6       0x13fe
+                       IMX94_PAD_SD1_DATA7__USDHC1_DATA7       0x13fe
+                       IMX94_PAD_SD1_STROBE__USDHC1_STROBE     0x15fe
+               >;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <
+                       IMX94_PAD_SD1_CLK__USDHC1_CLK           0x158e
+                       IMX94_PAD_SD1_CMD__USDHC1_CMD           0x138e
+                       IMX94_PAD_SD1_DATA0__USDHC1_DATA0       0x138e
+                       IMX94_PAD_SD1_DATA1__USDHC1_DATA1       0x138e
+                       IMX94_PAD_SD1_DATA2__USDHC1_DATA2       0x138e
+                       IMX94_PAD_SD1_DATA3__USDHC1_DATA3       0x138e
+                       IMX94_PAD_SD1_DATA4__USDHC1_DATA4       0x138e
+                       IMX94_PAD_SD1_DATA5__USDHC1_DATA5       0x138e
+                       IMX94_PAD_SD1_DATA6__USDHC1_DATA6       0x138e
+                       IMX94_PAD_SD1_DATA7__USDHC1_DATA7       0x138e
+                       IMX94_PAD_SD1_STROBE__USDHC1_STROBE     0x158e
+               >;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <
+                       IMX94_PAD_SD2_CLK__USDHC2_CLK           0x158e
+                       IMX94_PAD_SD2_CMD__USDHC2_CMD           0x138e
+                       IMX94_PAD_SD2_DATA0__USDHC2_DATA0       0x138e
+                       IMX94_PAD_SD2_DATA1__USDHC2_DATA1       0x138e
+                       IMX94_PAD_SD2_DATA2__USDHC2_DATA2       0x138e
+                       IMX94_PAD_SD2_DATA3__USDHC2_DATA3       0x138e
+                       IMX94_PAD_SD2_VSELECT__USDHC2_VSELECT   0x51e
+               >;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <
+                       IMX94_PAD_SD2_CLK__USDHC2_CLK           0x15fe
+                       IMX94_PAD_SD2_CMD__USDHC2_CMD           0x13fe
+                       IMX94_PAD_SD2_DATA0__USDHC2_DATA0       0x13fe
+                       IMX94_PAD_SD2_DATA1__USDHC2_DATA1       0x13fe
+                       IMX94_PAD_SD2_DATA2__USDHC2_DATA2       0x13fe
+                       IMX94_PAD_SD2_DATA3__USDHC2_DATA3       0x13fe
+                       IMX94_PAD_SD2_VSELECT__USDHC2_VSELECT   0x51e
+               >;
+       };
+
+       pinctrl_usdhc2_gpio: usdhc2gpiogrp {
+               fsl,pins = <
+                       IMX94_PAD_SD2_CD_B__GPIO4_IO20          0x31e
+               >;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <
+                       IMX94_PAD_SD2_CLK__USDHC2_CLK           0x158e
+                       IMX94_PAD_SD2_CMD__USDHC2_CMD           0x138e
+                       IMX94_PAD_SD2_DATA0__USDHC2_DATA0       0x138e
+                       IMX94_PAD_SD2_DATA1__USDHC2_DATA1       0x138e
+                       IMX94_PAD_SD2_DATA2__USDHC2_DATA2       0x138e
+                       IMX94_PAD_SD2_DATA3__USDHC2_DATA3       0x138e
+                       IMX94_PAD_SD2_VSELECT__USDHC2_VSELECT   0x51e
+               >;
+       };
+
+       pinctrl_reg_usdhc2_vmmc: usdhc2regvmmcgrp {
+               fsl,pins = <
+                       IMX94_PAD_SD2_RESET_B__GPIO4_IO27       0x31e
+               >;
+       };
+};
+
+&usdhc1 {
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       bus-width = <8>;
+       non-removable;
+       no-sdio;
+       no-sd;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       bus-width = <4>;
+       no-mmc;
+       no-sdio;
+       cd-gpios = <&gpio4 20 GPIO_ACTIVE_LOW>;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       status = "okay";
+};
+
+&wdog3 {
+       fsl,ext-reset-output;
+       status = "okay";
+};
diff --git a/src/arm64/freescale/imx943.dtsi b/src/arm64/freescale/imx943.dtsi
new file mode 100644 (file)
index 0000000..45b8da7
--- /dev/null
@@ -0,0 +1,148 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 NXP
+ */
+
+#include "imx94.dtsi"
+
+/ {
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               idle-states {
+                       entry-method = "psci";
+
+                       cpu_pd_wait: cpu-pd-wait {
+                               compatible = "arm,idle-state";
+                               arm,psci-suspend-param = <0x0010033>;
+                               local-timer-stop;
+                               entry-latency-us = <1000>;
+                               exit-latency-us = <700>;
+                               min-residency-us = <2700>;
+                               wakeup-latency-us = <1500>;
+                       };
+               };
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x0>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       cpu-idle-states = <&cpu_pd_wait>;
+                       power-domains = <&scmi_perf IMX94_PERF_A55>;
+                       power-domain-names = "perf";
+                       i-cache-size = <32768>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <128>;
+                       d-cache-size = <32768>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       next-level-cache = <&l2_cache_l0>;
+               };
+
+               cpu1: cpu@100 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x100>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       cpu-idle-states = <&cpu_pd_wait>;
+                       power-domains = <&scmi_perf IMX94_PERF_A55>;
+                       power-domain-names = "perf";
+                       i-cache-size = <32768>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <128>;
+                       d-cache-size = <32768>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       next-level-cache = <&l2_cache_l1>;
+               };
+
+               cpu2: cpu@200 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x200>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       cpu-idle-states = <&cpu_pd_wait>;
+                       power-domains = <&scmi_perf IMX94_PERF_A55>;
+                       power-domain-names = "perf";
+                       i-cache-size = <32768>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <128>;
+                       d-cache-size = <32768>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       next-level-cache = <&l2_cache_l2>;
+               };
+
+               cpu3: cpu@300 {
+                       compatible = "arm,cortex-a55";
+                       device_type = "cpu";
+                       reg = <0x300>;
+                       enable-method = "psci";
+                       #cooling-cells = <2>;
+                       cpu-idle-states = <&cpu_pd_wait>;
+                       power-domains = <&scmi_perf IMX94_PERF_A55>;
+                       power-domain-names = "perf";
+                       i-cache-size = <32768>;
+                       i-cache-line-size = <64>;
+                       i-cache-sets = <128>;
+                       d-cache-size = <32768>;
+                       d-cache-line-size = <64>;
+                       d-cache-sets = <128>;
+                       next-level-cache = <&l2_cache_l3>;
+               };
+
+               l2_cache_l0: l2-cache-l0 {
+                       compatible = "cache";
+                       cache-size = <65536>;
+                       cache-line-size = <64>;
+                       cache-sets = <256>;
+                       cache-level = <2>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache_l1: l2-cache-l1 {
+                       compatible = "cache";
+                       cache-size = <65536>;
+                       cache-line-size = <64>;
+                       cache-sets = <256>;
+                       cache-level = <2>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache_l2: l2-cache-l2 {
+                       compatible = "cache";
+                       cache-size = <65536>;
+                       cache-line-size = <64>;
+                       cache-sets = <256>;
+                       cache-level = <2>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache_l3: l2-cache-l3 {
+                       compatible = "cache";
+                       cache-size = <65536>;
+                       cache-line-size = <64>;
+                       cache-sets = <256>;
+                       cache-level = <2>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l3_cache: l3-cache {
+                       compatible = "cache";
+                       cache-size = <1048576>;
+                       cache-line-size = <64>;
+                       cache-sets = <1024>;
+                       cache-level = <3>;
+                       cache-unified;
+               };
+       };
+};
index 514f2429dcbc2754aad23456fc312bda5edd338f..9f4d0899a94da810cbe3ea99017e819d323c9780 100644 (file)
                startup-delay-us = <20000>;
        };
 
+       reg_usb_vbus: regulator-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "USB_VBUS";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&pcal6524 3 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        reg_vcc_12v: regulator-vcc-12v {
                compatible = "regulator-fixed";
                regulator-max-microvolt = <12000000>;
        status = "okay";
 };
 
+&pcie0_ep {
+       pinctrl-0 = <&pinctrl_pcie0>;
+       pinctrl-names = "default";
+       vpcie-supply = <&reg_m2_pwr>;
+       status = "disabled";
+};
+
 &sai1 {
        assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
                          <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
 &scmi_iomuxc {
        pinctrl_emdio: emdiogrp {
                fsl,pins = <
-                       IMX95_PAD_ENET2_MDC__NETCMIX_TOP_NETC_MDC               0x57e
-                       IMX95_PAD_ENET2_MDIO__NETCMIX_TOP_NETC_MDIO             0x97e
+                       IMX95_PAD_ENET2_MDC__NETCMIX_TOP_NETC_MDC               0x50e
+                       IMX95_PAD_ENET2_MDIO__NETCMIX_TOP_NETC_MDIO             0x90e
                >;
        };
 
        pinctrl_enetc0: enetc0grp {
                fsl,pins = <
-                       IMX95_PAD_ENET1_TD3__NETCMIX_TOP_ETH0_RGMII_TD3         0x57e
-                       IMX95_PAD_ENET1_TD2__NETCMIX_TOP_ETH0_RGMII_TD2         0x57e
-                       IMX95_PAD_ENET1_TD1__NETCMIX_TOP_ETH0_RGMII_TD1         0x57e
-                       IMX95_PAD_ENET1_TD0__NETCMIX_TOP_ETH0_RGMII_TD0         0x57e
+                       IMX95_PAD_ENET1_TD3__NETCMIX_TOP_ETH0_RGMII_TD3         0x50e
+                       IMX95_PAD_ENET1_TD2__NETCMIX_TOP_ETH0_RGMII_TD2         0x50e
+                       IMX95_PAD_ENET1_TD1__NETCMIX_TOP_ETH0_RGMII_TD1         0x50e
+                       IMX95_PAD_ENET1_TD0__NETCMIX_TOP_ETH0_RGMII_TD0         0x50e
                        IMX95_PAD_ENET1_TX_CTL__NETCMIX_TOP_ETH0_RGMII_TX_CTL   0x57e
                        IMX95_PAD_ENET1_TXC__NETCMIX_TOP_ETH0_RGMII_TX_CLK      0x58e
                        IMX95_PAD_ENET1_RX_CTL__NETCMIX_TOP_ETH0_RGMII_RX_CTL   0x57e
 
        pinctrl_enetc1: enetc1grp {
                fsl,pins = <
-                       IMX95_PAD_ENET2_TD3__NETCMIX_TOP_ETH1_RGMII_TD3         0x57e
-                       IMX95_PAD_ENET2_TD2__NETCMIX_TOP_ETH1_RGMII_TD2         0x57e
-                       IMX95_PAD_ENET2_TD1__NETCMIX_TOP_ETH1_RGMII_TD1         0x57e
-                       IMX95_PAD_ENET2_TD0__NETCMIX_TOP_ETH1_RGMII_TD0         0x57e
+                       IMX95_PAD_ENET2_TD3__NETCMIX_TOP_ETH1_RGMII_TD3         0x50e
+                       IMX95_PAD_ENET2_TD2__NETCMIX_TOP_ETH1_RGMII_TD2         0x50e
+                       IMX95_PAD_ENET2_TD1__NETCMIX_TOP_ETH1_RGMII_TD1         0x50e
+                       IMX95_PAD_ENET2_TD0__NETCMIX_TOP_ETH1_RGMII_TD0         0x50e
                        IMX95_PAD_ENET2_TX_CTL__NETCMIX_TOP_ETH1_RGMII_TX_CTL   0x57e
                        IMX95_PAD_ENET2_TXC__NETCMIX_TOP_ETH1_RGMII_TX_CLK      0x58e
                        IMX95_PAD_ENET2_RX_CTL__NETCMIX_TOP_ETH1_RGMII_RX_CTL   0x57e
        status = "okay";
 };
 
+&usb2 {
+       dr_mode = "host";
+       vbus-supply = <&reg_usb_vbus>;
+       disable-over-current;
+       status = "okay";
+};
+
 &usb3 {
        status = "okay";
 };
diff --git a/src/arm64/freescale/imx95-19x19-evk-sof.dts b/src/arm64/freescale/imx95-19x19-evk-sof.dts
new file mode 100644 (file)
index 0000000..808a9fe
--- /dev/null
@@ -0,0 +1,84 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 NXP
+ */
+
+/dts-v1/;
+
+#include "imx95-19x19-evk.dts"
+
+/ {
+       sof_cpu: cm7-cpu@80000000 {
+               compatible = "fsl,imx95-cm7-sof";
+               reg = <0x0 0x80000000 0x0 0x6100000>;
+               reg-names = "sram";
+               memory-region = <&adma_res>;
+               memory-region-names = "dma";
+               mboxes = <&mu7 2 0>, <&mu7 2 1>, <&mu7 3 0>, <&mu7 3 1>;
+               mbox-names = "txdb0", "txdb1", "rxdb0", "rxdb1";
+
+               sai3_cpu: port {
+                       sai3_cpu_ep: endpoint {
+                               remote-endpoint = <&wm8962_ep>;
+                       };
+               };
+       };
+
+       reserved-memory {
+               adma_res: memory@86100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x0 0x86100000 0x0 0x100000>;
+                       no-map;
+               };
+       };
+
+       sof-sound {
+               compatible = "audio-graph-card2";
+               links = <&sai3_cpu>;
+               label = "audio";
+               hp-det-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hp>;
+               widgets = "Headphone", "Headphones",
+                         "Microphone", "Headset Mic";
+               routing = "Headphones", "HPOUTL",
+                         "Headphones", "HPOUTR",
+                         "Headset Mic", "MICBIAS",
+                         "IN3R", "Headset Mic",
+                         "IN1R", "Headset Mic";
+       };
+
+       sound-wm8962 {
+               status = "disabled";
+       };
+
+};
+
+&edma2 {
+       /* channels 30 and 31 reserved for FW usage */
+       dma-channel-mask = <0xc0000000>, <0x0>;
+};
+
+&sai3 {
+       status = "disabled";
+};
+
+&wm8962 {
+       assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL2>,
+                         <&scmi_clk IMX95_CLK_SAI3>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>, <&scmi_clk IMX95_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>, <3612672000>,
+                              <393216000>, <361267200>,
+                              <12288000>;
+
+       port {
+               wm8962_ep: endpoint {
+                       bitclock-master;
+                       frame-master;
+                       remote-endpoint = <&sai3_cpu_ep>;
+               };
+       };
+};
index 25ac331f03183e3e8adebcbff4d4deb012cc25ea..d7d845231312a6de642821cf6971e606b29ce603 100644 (file)
                off-on-delay-us = <12000>;
        };
 
+       reg_usb_vbus: regulator-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "USB_VBUS";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&i2c7_pcal6524 3 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        sound-bt-sco {
                compatible = "simple-audio-card";
                simple-audio-card,name = "bt-sco-audio";
        status = "okay";
 };
 
+&pcie0_ep {
+       pinctrl-0 = <&pinctrl_pcie0>;
+       pinctrl-names = "default";
+       vpcie-supply = <&reg_pcie0>;
+       status = "disabled";
+};
+
 &pcie1 {
        pinctrl-0 = <&pinctrl_pcie1>;
        pinctrl-names = "default";
        status = "okay";
 };
 
+&pcie1_ep {
+       pinctrl-0 = <&pinctrl_pcie1>;
+       pinctrl-names = "default";
+       vpcie-supply = <&reg_slot_pwr>;
+       status = "disabled";
+};
+
 &sai1 {
        #sound-dai-cells = <0>;
        pinctrl-names = "default";
        status = "okay";
 };
 
+&usb2 {
+       dr_mode = "host";
+       disable-over-current;
+       vbus-supply = <&reg_usb_vbus>;
+       status = "okay";
+};
+
 &usb3 {
        status = "okay";
 };
 &scmi_iomuxc {
        pinctrl_emdio: emdiogrp{
                fsl,pins = <
-                       IMX95_PAD_ENET1_MDC__NETCMIX_TOP_NETC_MDC               0x57e
-                       IMX95_PAD_ENET1_MDIO__NETCMIX_TOP_NETC_MDIO             0x97e
+                       IMX95_PAD_ENET1_MDC__NETCMIX_TOP_NETC_MDC               0x50e
+                       IMX95_PAD_ENET1_MDIO__NETCMIX_TOP_NETC_MDIO             0x90e
                >;
        };
 
        pinctrl_enetc0: enetc0grp {
                fsl,pins = <
-                       IMX95_PAD_ENET1_TD3__NETCMIX_TOP_ETH0_RGMII_TD3         0x57e
-                       IMX95_PAD_ENET1_TD2__NETCMIX_TOP_ETH0_RGMII_TD2         0x57e
-                       IMX95_PAD_ENET1_TD1__NETCMIX_TOP_ETH0_RGMII_TD1         0x57e
-                       IMX95_PAD_ENET1_TD0__NETCMIX_TOP_ETH0_RGMII_TD0         0x57e
+                       IMX95_PAD_ENET1_TD3__NETCMIX_TOP_ETH0_RGMII_TD3         0x50e
+                       IMX95_PAD_ENET1_TD2__NETCMIX_TOP_ETH0_RGMII_TD2         0x50e
+                       IMX95_PAD_ENET1_TD1__NETCMIX_TOP_ETH0_RGMII_TD1         0x50e
+                       IMX95_PAD_ENET1_TD0__NETCMIX_TOP_ETH0_RGMII_TD0         0x50e
                        IMX95_PAD_ENET1_TX_CTL__NETCMIX_TOP_ETH0_RGMII_TX_CTL   0x57e
                        IMX95_PAD_ENET1_TXC__NETCMIX_TOP_ETH0_RGMII_TX_CLK      0x58e
                        IMX95_PAD_ENET1_RX_CTL__NETCMIX_TOP_ETH0_RGMII_RX_CTL   0x57e
diff --git a/src/arm64/freescale/imx95-tqma9596sa-mb-smarc-2.dts b/src/arm64/freescale/imx95-tqma9596sa-mb-smarc-2.dts
new file mode 100644 (file)
index 0000000..5b6b2bb
--- /dev/null
@@ -0,0 +1,324 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2024 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/phy/phy-imx8-pcie.h>
+#include "imx95-tqma9596sa.dtsi"
+
+/ {
+       model = "TQ-Systems i.MX95 TQMa95xxSA on MB-SMARC-2";
+       compatible = "tq,imx95-tqma9596sa-mb-smarc-2", "tq,imx95-tqma9596sa", "fsl,imx95";
+
+       aliases {
+               gpio0 = &gpio1;
+               gpio1 = &gpio2;
+               gpio2 = &gpio3;
+               gpio3 = &gpio4;
+               i2c0 = &lpi2c1;
+               i2c1 = &lpi2c2;
+               i2c2 = &lpi2c3;
+               i2c3 = &lpi2c4;
+               i2c4 = &lpi2c5;
+               i2c5 = &lpi2c6;
+               i2c6 = &lpi2c7;
+               i2c7 = &lpi2c8;
+               mmc0 = &usdhc1;
+               mmc1 = &usdhc2;
+               rtc0 = &pcf85063;
+               rtc1 = &scmi_bbm;
+               serial0 = &lpuart1;
+               serial1 = &lpuart2;
+               serial2 = &lpuart3;
+               serial3 = &lpuart4;
+               serial4 = &lpuart5;
+               serial5 = &lpuart6;
+               serial6 = &lpuart7;
+               serial7 = &lpuart8;
+       };
+
+       chosen {
+               stdout-path = &lpuart7;
+       };
+
+       backlight_lvds0: backlight-lvds0 {
+               compatible = "pwm-backlight";
+               pwms = <&tpm3 0 100000 0>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+               enable-gpios = <&expander2 1 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_12v0>;
+               status = "disabled";
+       };
+
+       backlight_lvds1: backlight-lvds1 {
+               compatible = "pwm-backlight";
+               pwms = <&tpm4 0 100000 0>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+               enable-gpios = <&expander2 3 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_12v0>;
+               status = "disabled";
+       };
+
+       panel_lvds0: panel-lvds0 {
+               /*
+                * Display is not fixed, so compatible has to be added from
+                * DT overlay
+                */
+               backlight = <&backlight_lvds0>;
+               power-supply = <&reg_lvds0>;
+               status = "disabled";
+
+               port {
+                       panel_in_lvds0: endpoint {
+                               /* TODO: LVDS0 out */
+                       };
+               };
+       };
+
+       panel_lvds1: panel-lvds1 {
+               /*
+                * Display is not fixed, so compatible has to be added from
+                * DT overlay
+                */
+               backlight = <&backlight_lvds1>;
+               power-supply = <&reg_lvds1>;
+               status = "disabled";
+
+               port {
+                       panel_in_lvds1: endpoint {
+                               /* TODO: LVDS1 out */
+                       };
+               };
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_12v0: regulator-12v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "12V0";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-always-on;
+       };
+
+       reg_lvds0: regulator-lvds0 {
+               compatible = "regulator-fixed";
+               regulator-name = "LCD0_VDD_EN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&expander2 2 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_lvds1: regulator-lvds1 {
+               compatible = "regulator-fixed";
+               regulator-name = "LCD1_VDD_EN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&expander2 4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       sound {
+               compatible = "fsl,imx-audio-tlv320aic32x4";
+               model = "tqm-tlv320aic32";
+               audio-codec = <&tlv320aic3x04>;
+               audio-cpu = <&sai3>;
+       };
+};
+
+&enetc_port0 {
+       status = "okay";
+};
+
+&enetc_port1 {
+       status = "okay";
+};
+
+&expander2 {
+       pcie1-clk-en-hog {
+               gpio-hog;
+               gpios = <14 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "PCIE1_CLK_EN";
+       };
+
+       pcie2-clk-en-hog {
+               gpio-hog;
+               gpios = <15 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "PCIE2_CLK_EN";
+       };
+};
+
+&flexcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       xceiver-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+&flexcan3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan3>;
+       xceiver-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+&lpi2c1 {
+       tlv320aic3x04: audio-codec@18 {
+               compatible = "ti,tlv320aic32x4";
+               reg = <0x18>;
+               clocks = <&scmi_clk IMX95_CLK_SAI3>;
+               clock-names = "mclk";
+               iov-supply = <&reg_1v8>;
+               ldoin-supply = <&reg_3v3>;
+       };
+
+       eeprom2: eeprom@57 {
+               compatible = "atmel,24c32";
+               reg = <0x57>;
+               pagesize = <32>;
+               vcc-supply = <&reg_3v3>;
+       };
+};
+
+&lpspi3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpspi3>;
+       cs-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>, <&gpio2 7 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+/* SER0 */
+&lpuart1 {
+       status = "disabled";
+};
+
+/* SER3 */
+&lpuart5 {
+       status = "okay";
+};
+
+/* SER1 */
+&lpuart7 {
+       status = "okay";
+};
+
+/* SER2 */
+&lpuart8 {
+       status = "okay";
+};
+
+/* X44 mPCIe */
+&pcie0 {
+       pinctrl-0 = <&pinctrl_pcie0>;
+       pinctrl-names = "default";
+       clocks = <&scmi_clk IMX95_CLK_HSIO>,
+                <&pcieclk 1>,
+                <&scmi_clk IMX95_CLK_HSIOPLL_VCO>,
+                <&scmi_clk IMX95_CLK_HSIOPCIEAUX>;
+       clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
+       reset-gpio = <&expander2 9 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+/* X22 PCIe x1 socket */
+&pcie1 {
+       pinctrl-0 = <&pinctrl_pcie1>;
+       pinctrl-names = "default";
+       clocks = <&scmi_clk IMX95_CLK_HSIO>,
+                <&pcieclk 0>,
+                <&scmi_clk IMX95_CLK_HSIOPLL_VCO>,
+                <&scmi_clk IMX95_CLK_HSIOPCIEAUX>;
+       clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
+       reset-gpio = <&expander2 10 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&reg_sdvmmc {
+       status = "okay";
+};
+
+&sai3 {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai3>;
+       assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL2>,
+                         <&scmi_clk IMX95_CLK_SAI3>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>,
+                                <&scmi_clk IMX95_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>,
+                              <3612672000>, <393216000>,
+                              <361267200>, <12288000>;
+       fsl,sai-mclk-direction-output;
+       status = "okay";
+};
+
+&sai5 {
+       #sound-dai-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai5>;
+       assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+                         <&scmi_clk IMX95_CLK_AUDIOPLL2>,
+                         <&scmi_clk IMX95_CLK_SAI5>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>,
+                                <&scmi_clk IMX95_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>,
+                              <3612672000>, <393216000>,
+                              <361267200>, <12288000>;
+};
+
+/* X4 */
+&usb2 {
+       srp-disable;
+       hnp-disable;
+       adp-disable;
+       /* DR not yet supported */
+       dr_mode = "peripheral";
+       disable-over-current;
+       status = "okay";
+};
+
+
+/* X16 */
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc2>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc2>;
+       vmmc-supply = <&reg_sdvmmc>;
+       cd-gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+       no-1-8-v;
+       no-mmc;
+       no-sdio;
+       disable-wp;
+       bus-width = <4>;
+       status = "okay";
+};
diff --git a/src/arm64/freescale/imx95-tqma9596sa.dtsi b/src/arm64/freescale/imx95-tqma9596sa.dtsi
new file mode 100644 (file)
index 0000000..180124c
--- /dev/null
@@ -0,0 +1,698 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2024 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/net/ti-dp83867.h>
+#include <dt-bindings/phy/phy-imx8-pcie.h>
+#include <dt-bindings/usb/pd.h>
+#include "imx95.dtsi"
+
+/ {
+       aliases {
+               ethernet0 = &enetc_port0;
+               ethernet1 = &enetc_port1;
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               /*
+                * DRAM base addr, size : 2048 MiB DRAM
+                * should be corrected by bootloader
+                */
+               reg = <0 0x80000000 0 0x80000000>;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               linux_cma: linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0 0x28000000>;
+                       alloc-ranges = <0 0x80000000 0 0x80000000>;
+                       linux,cma-default;
+               };
+
+               vpu_boot: vpu_boot@a0000000 {
+                       reg = <0 0xa0000000 0 0x100000>;
+                       no-map;
+               };
+       };
+
+       clk_dp: clk-dp {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <26000000>;
+       };
+
+       clk_xtal25: clk-xtal25 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "V_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "V_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       /* Controlled by system manager */
+       reg_sdvmmc: regulator-sdvmmc {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_sdvmmc>;
+               regulator-name = "SDIO_PWR_EN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio3 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               status = "disabled";
+       };
+};
+
+&enetc_port0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enetc0>;
+       phy-handle = <&ethphy0>;
+       phy-mode = "rgmii-id";
+};
+
+&enetc_port1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enetc1>;
+       phy-handle = <&ethphy3>;
+       phy-mode = "rgmii-id";
+};
+
+&netc_timer {
+       status = "okay";
+};
+
+&flexspi1 {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_flexspi1>;
+       pinctrl-1 = <&pinctrl_flexspi1>;
+       status = "okay";
+
+       flash0: flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <80000000>;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+               vcc-supply = <&reg_1v8>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
+       };
+};
+
+&gpio1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio1>;
+       gpio-line-names = "", "", "", "",
+                         "", "", "", "",
+                         "", "", "GPIO7", "GPIO8",
+                         "", "GPIO9", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "";
+};
+
+&gpio2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio2>;
+       gpio-line-names = "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "SLEEP", "GPIO5",
+                         "", "", "GPIO6", "",
+                         "", "", "", "",
+                         "", "", "", "";
+};
+
+&lpi2c1 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_lpi2c1>;
+       pinctrl-1 = <&pinctrl_lpi2c1>;
+       status = "okay";
+
+       tmp1075: temperature-sensor@4a {
+               compatible = "ti,tmp1075";
+               reg = <0x4a>;
+               vs-supply = <&reg_1v8>;
+       };
+
+       eeprom_smarc: eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+               pagesize = <32>;
+               vcc-supply = <&reg_1v8>;
+       };
+
+       pcf85063: rtc@51 {
+               compatible = "nxp,pcf85063a";
+               reg = <0x51>;
+               quartz-load-femtofarads = <7000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pcf85063>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <27 IRQ_TYPE_EDGE_FALLING>;
+       };
+
+       m24c64: eeprom@54 {
+               compatible = "atmel,24c64";
+               reg = <0x54>;
+               pagesize = <32>;
+               vcc-supply = <&reg_1v8>;
+       };
+
+       /* protectable identification memory (part of M24C64-D @50) */
+       eeprom@58 {
+               compatible = "atmel,24c64d-wl";
+               reg = <0x58>;
+               vcc-supply = <&reg_1v8>;
+       };
+
+       /* protectable identification memory (part of M24C64-D @54) */
+       eeprom@5c {
+               compatible = "atmel,24c64d-wl";
+               reg = <0x5c>;
+               vcc-supply = <&reg_1v8>;
+       };
+
+       pcieclk: clock-generator@6a {
+               compatible = "renesas,9fgv0441";
+               reg = <0x6a>;
+               clocks = <&clk_xtal25>;
+               #clock-cells = <1>;
+       };
+
+       imu@6b {
+               compatible = "st,ism330dhcx";
+               reg = <0x6b>;
+               vdd-supply = <&reg_3v3>;
+               vddio-supply = <&reg_3v3>;
+       };
+
+       /* D23 */
+       expander2: gpio@74 {
+               compatible = "ti,tca9539";
+               reg = <0x74>;
+               vcc-supply = <&reg_1v8>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-line-names = "GPIO4", "LCD0_BLKT_EN", "LCD0_VDD_EN", "LCD1_BLKT_EN",
+                                 "LCD1_VDD_EN", "ENET1_RESET#", "ENET2_RESET#", "GBE0_SDP_DIR",
+                                 "GBE1_SDP_DIR", "PCIE1_RST#", "PCIE2_RST#", "DP_BRIDGE_EN",
+                                 "HUB_RST#", "QSPI_RESET#", "PCIE1_CLK_EN", "PCIE2_CLK_EN";
+       };
+
+       /* D21 */
+       expander1: gpio@75 {
+               compatible = "ti,tca9539";
+               reg = <0x75>;
+               vcc-supply = <&reg_1v8>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_expander1>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <27 IRQ_TYPE_EDGE_FALLING>;
+               gpio-line-names = "GPIO10", "GPIO11", "GPIO12", "GPIO13",
+                                 "CHG_PRSNT#", "CHARGING", "LID", "BATLOW#",
+                                 "TEMP_EVENT#", "PGOOD_ARM", "PGOOD_SOC", "PCIE_WAKE#_1V8",
+                                 "GPIO0", "GPIO1", "GPIO2", "GPIO3";
+       };
+};
+
+/* I2C_CAM0 */
+&lpi2c3 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_lpi2c3>;
+       pinctrl-1 = <&pinctrl_lpi2c3>;
+       status = "okay";
+
+       dp_bridge: dp-bridge@f {
+               compatible = "toshiba,tc9595", "toshiba,tc358767";
+               reg = <0x0f>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_tc9595>;
+               clock-names = "ref";
+               clocks = <&clk_dp>;
+               reset-gpios = <&expander2 11 GPIO_ACTIVE_HIGH>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <25 IRQ_TYPE_EDGE_RISING>;
+               toshiba,hpd-pin = <0>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               dp_dsi_in: endpoint {
+                                       /* TODO: DSI out */
+                                       data-lanes = <1 2 3 4>;
+                               };
+                       };
+               };
+       };
+};
+
+/* I2C_CAM1 */
+&lpi2c4 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_lpi2c4>;
+       pinctrl-1 = <&pinctrl_lpi2c4>;
+       status = "okay";
+};
+
+/* I2C_LCD */
+&lpi2c6 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&pinctrl_lpi2c6>;
+       pinctrl-1 = <&pinctrl_lpi2c6>;
+       status = "okay";
+};
+
+/* SER0 */
+&lpuart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart1>;
+};
+
+/* SER3 */
+&lpuart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart5>;
+};
+
+/* SER1 */
+&lpuart7 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart7>;
+};
+
+/* SER2 */
+&lpuart8 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart8>;
+};
+
+&netc_blk_ctrl {
+       status = "okay";
+};
+
+&netc_emdio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mdio>;
+       status = "okay";
+
+       ethphy0: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ethphy0>;
+               reset-gpios = <&expander2 5 GPIO_ACTIVE_LOW>;
+               reset-assert-us = <500000>;
+               reset-deassert-us = <50000>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <13 IRQ_TYPE_LEVEL_LOW>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+               ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,dp83867-rxctrl-strap-quirk;
+               ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+       };
+
+       ethphy3: ethernet-phy@3 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <3>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ethphy3>;
+               reset-gpios = <&expander2 6 GPIO_ACTIVE_LOW>;
+               reset-assert-us = <500000>;
+               reset-deassert-us = <50000>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+               ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,dp83867-rxctrl-strap-quirk;
+               ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+       };
+};
+
+&scmi_bbm {
+       linux,code = <KEY_POWER>;
+};
+
+&tpm3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tpm3>;
+};
+
+&tpm4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tpm4>;
+};
+
+&tpm5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_tpm5>;
+};
+
+&usb3 {
+       status = "okay";
+};
+
+&usb3_dwc3 {
+       dr_mode = "host";
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       hub_2_0: hub@1 {
+               compatible = "usb451,8142";
+               reg = <1>;
+               peer-hub = <&hub_3_0>;
+               reset-gpios = <&expander2 12 GPIO_ACTIVE_LOW>;
+               vdd-supply = <&reg_3v3>;
+       };
+
+       hub_3_0: hub@2 {
+               compatible = "usb451,8140";
+               reg = <2>;
+               peer-hub = <&hub_2_0>;
+               reset-gpios = <&expander2 12 GPIO_ACTIVE_LOW>;
+               vdd-supply = <&reg_3v3>;
+       };
+};
+
+&usb3_phy {
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc1>;
+       bus-width = <8>;
+       non-removable;
+       no-sdio;
+       no-sd;
+       status = "okay";
+};
+
+&wdog3 {
+       status = "okay";
+};
+
+&scmi_iomuxc {
+       pinctrl_ethphy0: ethphy0grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO33__GPIO5_IO_BIT13                         0x1100>;
+       };
+
+       pinctrl_ethphy3: ethphy3grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO34__GPIO5_IO_BIT14                         0x1100>;
+       };
+
+       pinctrl_enetc0: enetc0grp {
+               fsl,pins = <IMX95_PAD_ENET1_RD0__NETCMIX_TOP_ETH0_RGMII_RD0             0x1100>,
+                          <IMX95_PAD_ENET1_RD1__NETCMIX_TOP_ETH0_RGMII_RD1             0x1100>,
+                          <IMX95_PAD_ENET1_RD2__NETCMIX_TOP_ETH0_RGMII_RD2             0x1100>,
+                          <IMX95_PAD_ENET1_RD3__NETCMIX_TOP_ETH0_RGMII_RD3             0x1100>,
+                          <IMX95_PAD_ENET1_RXC__NETCMIX_TOP_ETH0_RGMII_RX_CLK          0x1100>,
+                          <IMX95_PAD_ENET1_RX_CTL__NETCMIX_TOP_ETH0_RGMII_RX_CTL       0x1100>,
+                          <IMX95_PAD_ENET1_TD0__NETCMIX_TOP_ETH0_RGMII_TD0             0x11e>,
+                          <IMX95_PAD_ENET1_TD1__NETCMIX_TOP_ETH0_RGMII_TD1             0x11e>,
+                          <IMX95_PAD_ENET1_TD2__NETCMIX_TOP_ETH0_RGMII_TD2             0x11e>,
+                          <IMX95_PAD_ENET1_TD3__NETCMIX_TOP_ETH0_RGMII_TD3             0x11e>,
+                          <IMX95_PAD_ENET1_TXC__NETCMIX_TOP_ETH0_RGMII_TX_CLK          0x11e>,
+                          <IMX95_PAD_ENET1_TX_CTL__NETCMIX_TOP_ETH0_RGMII_TX_CTL       0x11e>,
+                          <IMX95_PAD_GPIO_IO23__GPIO2_IO_BIT23                         0x51e>;
+       };
+
+       pinctrl_enetc1: enetc1grp {
+               fsl,pins = <IMX95_PAD_ENET2_RD0__NETCMIX_TOP_ETH1_RGMII_RD0             0x1100>,
+                          <IMX95_PAD_ENET2_RD1__NETCMIX_TOP_ETH1_RGMII_RD1             0x1100>,
+                          <IMX95_PAD_ENET2_RD2__NETCMIX_TOP_ETH1_RGMII_RD2             0x1100>,
+                          <IMX95_PAD_ENET2_RD3__NETCMIX_TOP_ETH1_RGMII_RD3             0x1100>,
+                          <IMX95_PAD_ENET2_RXC__NETCMIX_TOP_ETH1_RGMII_RX_CLK          0x1100>,
+                          <IMX95_PAD_ENET2_RX_CTL__NETCMIX_TOP_ETH1_RGMII_RX_CTL       0x1100>,
+                          <IMX95_PAD_ENET2_TD0__NETCMIX_TOP_ETH1_RGMII_TD0             0x11e>,
+                          <IMX95_PAD_ENET2_TD1__NETCMIX_TOP_ETH1_RGMII_TD1             0x11e>,
+                          <IMX95_PAD_ENET2_TD2__NETCMIX_TOP_ETH1_RGMII_TD2             0x11e>,
+                          <IMX95_PAD_ENET2_TD3__NETCMIX_TOP_ETH1_RGMII_TD3             0x11e>,
+                          <IMX95_PAD_ENET2_TXC__NETCMIX_TOP_ETH1_RGMII_TX_CLK          0x11e>,
+                          <IMX95_PAD_ENET2_TX_CTL__NETCMIX_TOP_ETH1_RGMII_TX_CTL       0x11e>,
+                          <IMX95_PAD_GPIO_IO24__GPIO2_IO_BIT24                         0x51e>;
+       };
+
+       pinctrl_expander1: expander1grp {
+               fsl,pins = <IMX95_PAD_CCM_CLKO2__GPIO3_IO_BIT27                         0x1100>;
+       };
+
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <IMX95_PAD_PDM_BIT_STREAM0__AONMIX_TOP_CAN1_RX       0x1300>,
+                          <IMX95_PAD_PDM_CLK__AONMIX_TOP_CAN1_TX               0x31e>;
+       };
+
+       pinctrl_flexcan3: flexcan3grp {
+               fsl,pins = <IMX95_PAD_CCM_CLKO3__CAN3_TX                0x31e>,
+                          <IMX95_PAD_CCM_CLKO4__CAN3_RX                0x1300>;
+       };
+
+       pinctrl_flexspi1: flexspi1grp {
+               fsl,pins = <IMX95_PAD_SD3_CLK__FLEXSPI1_A_SCLK          0x11e>,
+                          <IMX95_PAD_SD3_CMD__FLEXSPI1_A_SS0_B         0x11e>,
+                          <IMX95_PAD_SD3_DATA0__FLEXSPI1_A_DATA_BIT0   0x11e>,
+                          <IMX95_PAD_SD3_DATA1__FLEXSPI1_A_DATA_BIT1   0x11e>,
+                          <IMX95_PAD_SD3_DATA2__FLEXSPI1_A_DATA_BIT2   0x11e>,
+                          <IMX95_PAD_SD3_DATA3__FLEXSPI1_A_DATA_BIT3   0x11e>;
+       };
+
+       pinctrl_gpio1: gpio1grp {
+               fsl,pins = <IMX95_PAD_PDM_BIT_STREAM1__AONMIX_TOP_GPIO1_IO_BIT10        0x111e>,
+                          <IMX95_PAD_SAI1_TXD0__AONMIX_TOP_GPIO1_IO_BIT13              0x111e>,
+                          <IMX95_PAD_SAI1_TXFS__AONMIX_TOP_GPIO1_IO_BIT11              0x111e>;
+       };
+
+       pinctrl_gpio2: gpio2grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO18__GPIO2_IO_BIT18         0x1100>,
+                          <IMX95_PAD_GPIO_IO19__GPIO2_IO_BIT19         0x111e>,
+                          <IMX95_PAD_GPIO_IO22__GPIO2_IO_BIT22         0x111e>;
+       };
+
+       pinctrl_lpi2c1: lpi2c1grp {
+               fsl,pins = <IMX95_PAD_I2C1_SCL__AONMIX_TOP_LPI2C1_SCL           0x4000191e>,
+                          <IMX95_PAD_I2C1_SDA__AONMIX_TOP_LPI2C1_SDA           0x4000191e>;
+       };
+
+       pinctrl_lpi2c3: lpi2c3grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO28__LPI2C3_SDA                     0x4000191e>,
+                          <IMX95_PAD_GPIO_IO29__LPI2C3_SCL                     0x4000191e>;
+       };
+
+       pinctrl_lpi2c4: lpi2c4grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO30__LPI2C4_SDA             0x4000191e>,
+                          <IMX95_PAD_GPIO_IO31__LPI2C4_SCL             0x4000191e>;
+       };
+
+       pinctrl_lpi2c6: lpi2c6grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO02__LPI2C6_SDA             0x4000191e>,
+                          <IMX95_PAD_GPIO_IO03__LPI2C6_SCL             0x4000191e>;
+       };
+
+       pinctrl_lpspi3: lpspi3grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO07__GPIO2_IO_BIT7          0x51e>,
+                          <IMX95_PAD_GPIO_IO08__GPIO2_IO_BIT8          0x51e>,
+                          <IMX95_PAD_GPIO_IO09__LPSPI3_SIN             0x51e>,
+                          <IMX95_PAD_GPIO_IO10__LPSPI3_SOUT            0x51e>,
+                          <IMX95_PAD_GPIO_IO11__LPSPI3_SCK             0x51e>;
+       };
+
+       pinctrl_lpuart1: lpuart1grp {
+               fsl,pins = <IMX95_PAD_UART1_RXD__AONMIX_TOP_LPUART1_RX          0x1300>,
+                          <IMX95_PAD_UART1_TXD__AONMIX_TOP_LPUART1_TX          0x31e>,
+                          <IMX95_PAD_UART2_TXD__AONMIX_TOP_LPUART1_RTS_B       0x1300>,
+                          <IMX95_PAD_UART2_RXD__AONMIX_TOP_LPUART1_CTS_B       0x31e>;
+       };
+
+       pinctrl_lpuart5: lpuart5grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO00__LPUART5_TX                     0x31e>,
+                          <IMX95_PAD_GPIO_IO01__LPUART5_RX                     0x1300>;
+       };
+
+       pinctrl_lpuart7: lpuart7grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO36__LPUART7_TX                     0x31e>,
+                          <IMX95_PAD_GPIO_IO37__LPUART7_RX                     0x1300>;
+       };
+
+       pinctrl_lpuart8: lpuart8grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO12__LPUART8_TX                     0x31e>,
+                          <IMX95_PAD_GPIO_IO13__LPUART8_RX                     0x1300>,
+                          <IMX95_PAD_GPIO_IO14__LPUART8_CTS_B                  0x31e>,
+                          <IMX95_PAD_GPIO_IO15__LPUART8_RTS_B                  0x1300>;
+       };
+
+       pinctrl_mdio: mdiogrp {
+               fsl,pins = <IMX95_PAD_ENET1_MDC__NETCMIX_TOP_NETC_MDC           0x51e>,
+                          <IMX95_PAD_ENET1_MDIO__NETCMIX_TOP_NETC_MDIO         0x51e>;
+       };
+
+       pinctrl_pcf85063: pcf85063grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO27__GPIO2_IO_BIT27                 0x1100>;
+       };
+
+       pinctrl_pcie0: pcie0grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO32__HSIOMIX_TOP_PCIE1_CLKREQ_B     0x111e>;
+       };
+
+       pinctrl_pcie1: pcie1grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO35__HSIOMIX_TOP_PCIE2_CLKREQ_B     0x111e>;
+       };
+
+       pinctrl_sai3: sai3grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO16__SAI3_TX_BCLK                   0x51e>,
+                          <IMX95_PAD_GPIO_IO17__SAI3_MCLK                      0x51e>,
+                          <IMX95_PAD_GPIO_IO20__SAI3_RX_DATA_BIT0              0x1300>,
+                          <IMX95_PAD_GPIO_IO21__SAI3_TX_DATA_BIT0              0x51e>,
+                          <IMX95_PAD_GPIO_IO26__SAI3_TX_SYNC                   0x51e>;
+       };
+
+       pinctrl_sai5: sai5grp {
+               fsl,pins = <IMX95_PAD_XSPI1_DATA4__SAI5_TX_DATA_BIT0            0x51e>,
+                          <IMX95_PAD_XSPI1_DATA5__SAI5_TX_SYNC                 0x51e>,
+                          <IMX95_PAD_XSPI1_DATA6__SAI5_TX_BCLK                 0x51e>,
+                          <IMX95_PAD_XSPI1_DATA7__SAI5_RX_DATA_BIT0            0x1300>;
+       };
+
+       pinctrl_sdvmmc: sdvmmcgrp {
+               fsl,pins = <IMX95_PAD_SD2_RESET_B__GPIO3_IO_BIT7                0x11e>;
+       };
+
+       pinctrl_tc9595: tc9595grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO25__GPIO2_IO_BIT25                 0x1500>;
+       };
+
+       pinctrl_tpm3: tpm3grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO04__TPM3_CH0                       0x51e>;
+       };
+
+       pinctrl_tpm4: tpm4grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO05__TPM4_CH0                       0x51e>;
+       };
+
+       pinctrl_tpm5: tpm4grp {
+               fsl,pins = <IMX95_PAD_GPIO_IO06__TPM5_CH0                       0x51e>;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <IMX95_PAD_SD1_CLK__USDHC1_CLK       0x158e>,
+                          <IMX95_PAD_SD1_CMD__USDHC1_CMD       0x138e>,
+                          <IMX95_PAD_SD1_DATA0__USDHC1_DATA0   0x138e>,
+                          <IMX95_PAD_SD1_DATA1__USDHC1_DATA1   0x138e>,
+                          <IMX95_PAD_SD1_DATA2__USDHC1_DATA2   0x138e>,
+                          <IMX95_PAD_SD1_DATA3__USDHC1_DATA3   0x138e>,
+                          <IMX95_PAD_SD1_DATA4__USDHC1_DATA4   0x138e>,
+                          <IMX95_PAD_SD1_DATA5__USDHC1_DATA5   0x138e>,
+                          <IMX95_PAD_SD1_DATA6__USDHC1_DATA6   0x138e>,
+                          <IMX95_PAD_SD1_DATA7__USDHC1_DATA7   0x138e>,
+                          <IMX95_PAD_SD1_STROBE__USDHC1_STROBE 0x158e>;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1-100mhzgrp {
+               fsl,pins = <IMX95_PAD_SD1_CLK__USDHC1_CLK       0x158e>,
+                          <IMX95_PAD_SD1_CMD__USDHC1_CMD       0x138e>,
+                          <IMX95_PAD_SD1_DATA0__USDHC1_DATA0   0x138e>,
+                          <IMX95_PAD_SD1_DATA1__USDHC1_DATA1   0x138e>,
+                          <IMX95_PAD_SD1_DATA2__USDHC1_DATA2   0x138e>,
+                          <IMX95_PAD_SD1_DATA3__USDHC1_DATA3   0x138e>,
+                          <IMX95_PAD_SD1_DATA4__USDHC1_DATA4   0x138e>,
+                          <IMX95_PAD_SD1_DATA5__USDHC1_DATA5   0x138e>,
+                          <IMX95_PAD_SD1_DATA6__USDHC1_DATA6   0x138e>,
+                          <IMX95_PAD_SD1_DATA7__USDHC1_DATA7   0x138e>,
+                          <IMX95_PAD_SD1_STROBE__USDHC1_STROBE 0x158e>;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1-200mhzgrp {
+               fsl,pins = <IMX95_PAD_SD1_CLK__USDHC1_CLK       0x15fe>,
+                          <IMX95_PAD_SD1_CMD__USDHC1_CMD       0x13fe>,
+                          <IMX95_PAD_SD1_DATA0__USDHC1_DATA0   0x13fe>,
+                          <IMX95_PAD_SD1_DATA1__USDHC1_DATA1   0x13fe>,
+                          <IMX95_PAD_SD1_DATA2__USDHC1_DATA2   0x13fe>,
+                          <IMX95_PAD_SD1_DATA3__USDHC1_DATA3   0x13fe>,
+                          <IMX95_PAD_SD1_DATA4__USDHC1_DATA4   0x13fe>,
+                          <IMX95_PAD_SD1_DATA5__USDHC1_DATA5   0x13fe>,
+                          <IMX95_PAD_SD1_DATA6__USDHC1_DATA6   0x13fe>,
+                          <IMX95_PAD_SD1_DATA7__USDHC1_DATA7   0x13fe>,
+                          <IMX95_PAD_SD1_STROBE__USDHC1_STROBE 0x15fe>;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <IMX95_PAD_SD2_CD_B__GPIO3_IO_BIT0                   0x1100>,
+                          <IMX95_PAD_SD2_CLK__USDHC2_CLK                       0x51e>,
+                          <IMX95_PAD_SD2_CMD__USDHC2_CMD                       0x31e>,
+                          <IMX95_PAD_SD2_DATA0__USDHC2_DATA0                   0x131e>,
+                          <IMX95_PAD_SD2_DATA1__USDHC2_DATA1                   0x131e>,
+                          <IMX95_PAD_SD2_DATA2__USDHC2_DATA2                   0x131e>,
+                          <IMX95_PAD_SD2_DATA3__USDHC2_DATA3                   0x131e>,
+                          <IMX95_PAD_SD2_VSELECT__USDHC2_VSELECT               0x51e>;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+               fsl,pins = <IMX95_PAD_SD2_CD_B__GPIO3_IO_BIT0                   0x1100>,
+                          <IMX95_PAD_SD2_CLK__USDHC2_CLK                       0x158e>,
+                          <IMX95_PAD_SD2_CMD__USDHC2_CMD                       0x138e>,
+                          <IMX95_PAD_SD2_DATA0__USDHC2_DATA0                   0x138e>,
+                          <IMX95_PAD_SD2_DATA1__USDHC2_DATA1                   0x138e>,
+                          <IMX95_PAD_SD2_DATA2__USDHC2_DATA2                   0x138e>,
+                          <IMX95_PAD_SD2_DATA3__USDHC2_DATA3                   0x138e>,
+                          <IMX95_PAD_SD2_VSELECT__USDHC2_VSELECT               0x51e>;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+               fsl,pins = <IMX95_PAD_SD2_CD_B__GPIO3_IO_BIT0                   0x1100>,
+                          <IMX95_PAD_SD2_CLK__USDHC2_CLK                       0x15fe>,
+                          <IMX95_PAD_SD2_CMD__USDHC2_CMD                       0x13fe>,
+                          <IMX95_PAD_SD2_DATA0__USDHC2_DATA0                   0x13fe>,
+                          <IMX95_PAD_SD2_DATA1__USDHC2_DATA1                   0x13fe>,
+                          <IMX95_PAD_SD2_DATA2__USDHC2_DATA2                   0x13fe>,
+                          <IMX95_PAD_SD2_DATA3__USDHC2_DATA3                   0x13fe>,
+                          <IMX95_PAD_SD2_VSELECT__USDHC2_VSELECT               0x51e>;
+       };
+};
index 59f057ba6fa7ffb9bbb46eb101980f05516016bb..5aecdd9b62ff657fc746f5ecfa750173b8da9b5e 100644 (file)
                };
        };
 
+       usbphynop: usbphynop {
+               compatible = "usb-nop-xceiv";
+               clocks = <&scmi_clk IMX95_CLK_HSIO>;
+               clock-names = "main_clk";
+               #phy-cells = <0>;
+       };
+
        soc {
                compatible = "simple-bus";
                #address-cells = <2>;
                        status = "disabled";
                };
 
+               usb2: usb@4c200000 {
+                       compatible = "fsl,imx95-usb", "fsl,imx7d-usb", "fsl,imx27-usb";
+                       reg = <0x0 0x4c200000 0x0 0x200>;
+                       interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&scmi_clk IMX95_CLK_HSIO>,
+                                <&scmi_clk IMX95_CLK_32K>;
+                       clock-names = "usb_ctrl_root", "usb_wakeup";
+                       iommus = <&smmu 0xf>;
+                       phys = <&usbphynop>;
+                       power-domains = <&scmi_devpd IMX95_PD_HSIO_TOP>;
+                       fsl,usbmisc = <&usbmisc 0>;
+                       status = "disabled";
+               };
+
+               usbmisc: usbmisc@4c200200 {
+                       compatible = "fsl,imx95-usbmisc", "fsl,imx7d-usbmisc",
+                                    "fsl,imx6q-usbmisc";
+                       reg = <0x0 0x4c200200 0x0 0x200>,
+                             <0x0 0x4c010014 0x0 0x04>;
+                       #index-cells = <1>;
+               };
+
                pcie0: pcie@4c300000 {
                        compatible = "fsl,imx95-pcie";
                        reg = <0 0x4c300000 0 0x10000>,
                              <0x9 0 1 0>;
                        reg-names = "dbi","atu", "dbi2", "app", "dma", "addr_space";
                        num-lanes = <1>;
-                       interrupts = <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "dma";
                        clocks = <&scmi_clk IMX95_CLK_HSIO>,
                                 <&scmi_clk IMX95_CLK_HSIOPLL>,
index ba53ec622f0b5463ddbe0e89ca586c8d166b0865..4587e1cb88357fbd73fc7f8bb09dd8f55ed920fb 100644 (file)
                gpio-controller;
                #gpio-cells = <2>;
        };
+
+       pca85073a: rtc@51 {
+               compatible = "nxp,pca85073a";
+               reg = <0x51>;
+       };
 };
 
 &i2c2 {
diff --git a/src/arm64/freescale/tqma8xxs-mb-smarc-2.dtsi b/src/arm64/freescale/tqma8xxs-mb-smarc-2.dtsi
new file mode 100644 (file)
index 0000000..478cc8e
--- /dev/null
@@ -0,0 +1,194 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+/ {
+       aliases {
+               rtc0 = &rtc1;
+               rtc1 = &rtc;
+       };
+
+       backlight_lvds0: backlight-lvds0 {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_backlight_lvds0>;
+               /* PWM support still missing */
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+               power-supply = <&reg_12v0>;
+               enable-gpios = <&lsio_gpio1 2 GPIO_ACTIVE_HIGH>;
+               status = "disabled";
+       };
+
+       backlight_lvds1: backlight-lvds1 {
+               compatible = "pwm-backlight";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_backlight_lvds1>;
+               /* PWM support still missing */
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+               power-supply = <&reg_12v0>;
+               enable-gpios = <&lsio_gpio1 0 GPIO_ACTIVE_HIGH>;
+               status = "disabled";
+       };
+
+       chosen {
+               stdout-path = &lpuart0;
+       };
+
+       panel_lvds0: panel-lvds0 {
+               /*
+                * Display is not fixed, so compatible has to be added from
+                * DT
+                */
+               backlight = <&backlight_lvds0>;
+               power-supply = <&reg_lvds0>;
+               status = "disabled";
+
+               port {
+                       panel_in_lvds0: endpoint {
+                       };
+               };
+       };
+
+       panel_lvds1: panel-lvds1 {
+               /*
+                * Display is not fixed, so compatible has to be added from
+                * DT
+                */
+               backlight = <&backlight_lvds1>;
+               power-supply = <&reg_lvds1>;
+               status = "disabled";
+
+               port {
+                       panel_in_lvds1: endpoint {
+                       };
+               };
+       };
+
+       reg_1v8: regulator-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+       };
+
+       reg_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_12v0: regulator-12v0 {
+               compatible = "regulator-fixed";
+               regulator-name = "12V0";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-always-on;
+       };
+
+       sound {
+               compatible = "fsl,imx-audio-tlv320aic32x4";
+               model = "tqm-tlv320aic32";
+               ssi-controller = <&sai1>;
+               audio-codec = <&tlv320aic3x04>;
+       };
+};
+
+&fec1 {
+       status = "okay";
+};
+
+&fec2 {
+       status = "okay";
+};
+
+&flexcan2 {
+       xceiver-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+&flexcan3 {
+       xceiver-supply = <&reg_3v3>;
+       status = "okay";
+};
+
+&i2c0 {
+       tlv320aic3x04: audio-codec@18 {
+               compatible = "ti,tlv320aic32x4";
+               reg = <0x18>;
+               clocks = <&mclkout0_lpcg 0>;
+               clock-names = "mclk";
+               iov-supply = <&reg_1v8>;
+               ldoin-supply = <&reg_3v3>;
+       };
+
+       eeprom2: eeprom@57 {
+               compatible = "atmel,24c32";
+               reg = <0x57>;
+               pagesize = <32>;
+               vcc-supply = <&reg_3v3>;
+       };
+};
+
+&lpspi1 {
+       status = "okay";
+};
+
+&lpuart0 {
+       status = "okay";
+};
+
+&lpuart3 {
+       status = "okay";
+};
+
+&reg_sdvmmc {
+       off-on-delay-us = <200000>;
+       status = "okay";
+};
+
+&usbotg1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg1>;
+       srp-disable;
+       hnp-disable;
+       adp-disable;
+       power-active-high;
+       over-current-active-low;
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbotg3 {
+       status = "okay";
+};
+
+&usbotg3_cdns3 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usb3_phy {
+       status = "okay";
+};
+
+&usbphy1 {
+       status = "okay";
+};
+
+&usdhc2 {
+       cd-gpios = <&lsio_gpio4 22 GPIO_ACTIVE_LOW>;
+       wp-gpios = <&lsio_gpio4 21 GPIO_ACTIVE_HIGH>;
+       vmmc-supply = <&reg_sdvmmc>;
+       no-1-8-v;
+       no-mmc;
+       no-sdio;
+       status = "okay";
+};
diff --git a/src/arm64/freescale/tqma8xxs.dtsi b/src/arm64/freescale/tqma8xxs.dtsi
new file mode 100644 (file)
index 0000000..2d0a329
--- /dev/null
@@ -0,0 +1,768 @@
+// SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
+/*
+ * Copyright (c) 2018-2025 TQ-Systems GmbH <linux@ew.tq-group.com>,
+ * D-82229 Seefeld, Germany.
+ * Author: Alexander Stein
+ */
+
+#include <dt-bindings/net/ti-dp83867.h>
+
+/delete-node/ &encoder_rpc;
+
+/ {
+       memory@80000000 {
+               device_type = "memory";
+               /*
+                * DRAM base addr, minimal size : 1024 MiB DRAM
+                * should be corrected by bootloader
+                */
+               reg = <0x00000000 0x80000000 0 0x40000000>;
+       };
+
+       clk_xtal25: clk-xtal25 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <25000000>;
+       };
+
+       reg_tqma8xxs_3v3: regulator-3v3 {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_lvds0: regulator-lvds0 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lvds0>;
+               regulator-name = "LCD0_VDD_EN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&lsio_gpio1 3 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_lvds1: regulator-lvds1 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_lvds1>;
+               regulator-name = "LCD1_VDD_EN";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&lsio_gpio1 1 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_sdvmmc: regulator-sdvmmc {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_sdvmmc>;
+               regulator-name = "SD1_VMMC";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&lsio_gpio4 19 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               status = "disabled";
+       };
+
+       reg_vmmc: regulator-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "MMC0_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_vqmmc: regulator-vqmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "MMC0_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /*
+                * global autoconfigured region for contiguous allocations
+                * must not exceed memory size and region
+                */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0 0x20000000>;
+                       alloc-ranges = <0 0x96000000 0 0x30000000>;
+                       linux,cma-default;
+               };
+
+               decoder_boot: decoder-boot@84000000 {
+                       reg = <0 0x84000000 0 0x2000000>;
+                       no-map;
+               };
+
+               encoder_boot: encoder-boot@86000000 {
+                       reg = <0 0x86000000 0 0x200000>;
+                       no-map;
+               };
+
+               m4_reserved: m4@88000000 {
+                       no-map;
+                       reg = <0 0x88000000 0 0x8000000>;
+                       status = "disabled";
+               };
+
+               vdev0vring0: vdev0vring0@90000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x90000000 0 0x8000>;
+                       no-map;
+                       status = "disabled";
+               };
+
+               vdev0vring1: vdev0vring1@90008000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x90008000 0 0x8000>;
+                       no-map;
+                       status = "disabled";
+               };
+
+               vdev1vring0: vdev1vring0@90010000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x90010000 0 0x8000>;
+                       no-map;
+                       status = "disabled";
+               };
+
+               vdev1vring1: vdev1vring1@90018000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x90018000 0 0x8000>;
+                       no-map;
+                       status = "disabled";
+               };
+
+               rsc_table: rsc-table@900ff000 {
+                       reg = <0 0x900ff000 0 0x1000>;
+                       no-map;
+                       status = "disabled";
+               };
+
+               vdevbuffer: vdevbuffer@90400000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x90400000 0 0x100000>;
+                       no-map;
+                       status = "disabled";
+               };
+
+               decoder_rpc: decoder-rpc@92000000 {
+                       reg = <0 0x92000000 0 0x100000>;
+                       no-map;
+               };
+
+               encoder_rpc: encoder-rpc@92100000 {
+                       reg = <0 0x92100000 0 0x700000>;
+                       no-map;
+               };
+       };
+
+};
+
+/* TQMa8XxS only uses industrial grade, reduce trip points accordingly */
+&cpu_alert0 {
+       temperature = <95000>;
+};
+
+&cpu_crit0 {
+       temperature = <100000>;
+};
+/* end of temperature grade adjustments */
+
+&fec1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec1>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy0>;
+       fsl,magic-packet;
+       mac-address = [ 00 00 00 00 00 00 ];
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_ethphy0>;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+                       ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       ti,dp83867-rxctrl-strap-quirk;
+                       ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+                       reset-gpios = <&lsio_gpio3 22 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <500000>;
+                       reset-deassert-us = <50000>;
+                       enet-phy-lane-no-swap;
+                       interrupt-parent = <&lsio_gpio1>;
+                       interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
+               };
+
+               ethphy3: ethernet-phy@3 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <3>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_ethphy1>;
+                       ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+                       ti,tx-internal-delay = <DP83867_RGMIIDCTL_2_50_NS>;
+                       ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+                       ti,dp83867-rxctrl-strap-quirk;
+                       ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+                       reset-gpios = <&lsio_gpio0 24 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <500000>;
+                       reset-deassert-us = <50000>;
+                       enet-phy-lane-no-swap;
+                       interrupt-parent = <&lsio_gpio1>;
+                       interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
+               };
+       };
+};
+
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec2>;
+       phy-mode = "rgmii-id";
+       phy-handle = <&ethphy3>;
+       fsl,magic-packet;
+       mac-address = [ 00 00 00 00 00 00 ];
+};
+
+&flexcan2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can1>;
+};
+
+&flexcan3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_can2>;
+};
+
+&flexspi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexspi0>;
+       status = "okay";
+
+       flash0: flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <66000000>;
+               spi-tx-bus-width = <1>;
+               spi-rx-bus-width = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
+       };
+};
+
+&lsio_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_smarc_fangpio>, <&pinctrl_smarc_mngtpio>;
+
+       gpio-line-names = "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "LID", "SLEEP", "CHARGING#", "CHGPRSNT#",
+                         "BATLOW#", "", "", "",
+                         "", "SMARC_GPIO6", "SMARC_GPIO5", "",
+                         "PHY3 RST#", "", "", "SPI0_CS0",
+                         "", "SPI0_CS1", "", "";
+};
+
+&lsio_gpio1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_smarc_gpio>;
+
+       gpio-line-names = "LCD1_BLKT_EN", "LCD1_VDD_EN", "LCD0_BLKT_EN", "LCD0_VDD_EN",
+                         "SMARC_GPIO0", "SMARC_GPIO1", "SMARC_GPIO2", "",
+                         "SMARC_GPIO3", "SMARC_GPIO8", "SMARC_GPIO7", "SMARC_GPIO10",
+                         "SMARC_GPIO9", "SMARC_GPIO4", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "";
+};
+
+&lsio_gpio2 {
+       gpio-line-names = "RTC_INT#", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "";
+};
+
+&lsio_gpio3 {
+       gpio-line-names = "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "PHY0_RST#", "",
+                         "", "", "", "",
+                         "", "", "", "";
+};
+
+&lsio_gpio4 {
+       gpio-line-names = "PCIE_PERST#", "", "PCIE_WAKE#", "USB_OTG1_PWR",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "",
+                         "", "", "", "SDIO_PWR_EN",
+                         "", "SDIO_WP", "SDIO_CD#", "",
+                         "", "", "", "",
+                         "", "", "", "";
+};
+
+&i2c0 {
+       clock-frequency = <100000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_lpi2c0>;
+       pinctrl-1 = <&pinctrl_lpi2c0_gpio>;
+       scl-gpios = <&lsio_gpio3 8 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       sda-gpios = <&lsio_gpio3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "okay";
+
+       /* NXP SE97BTP with temperature sensor + eeprom */
+       sensor0: temperature-sensor@1b {
+               compatible = "nxp,se97b", "jedec,jc-42.4-temp";
+               reg = <0x1b>;
+       };
+
+       eeprom0: eeprom@50 {
+               compatible = "atmel,24c64";
+               reg = <0x50>;
+               pagesize = <32>;
+               vcc-supply = <&reg_tqma8xxs_3v3>;
+       };
+
+       rtc1: rtc@51 {
+               compatible = "nxp,pcf85063a";
+               reg = <0x51>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_rtc>;
+               quartz-load-femtofarads = <7000>;
+               interrupt-parent = <&lsio_gpio2>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+       };
+
+       eeprom1: eeprom@53 {
+               compatible = "nxp,se97b", "atmel,24c02";
+               reg = <0x53>;
+               pagesize = <16>;
+               read-only;
+               vcc-supply = <&reg_tqma8xxs_3v3>;
+       };
+
+       pcieclk: clock-generator@6a {
+               compatible = "renesas,9fgv0241";
+               reg = <0x6a>;
+               clocks = <&clk_xtal25>;
+               #clock-cells = <1>;
+       };
+};
+
+&lpspi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spi1>;
+       cs-gpios = <&lsio_gpio0 27 GPIO_ACTIVE_LOW>, <&lsio_gpio0 29 GPIO_ACTIVE_LOW>;
+};
+
+&lpuart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart0>;
+};
+
+&lpuart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart3>;
+};
+
+&mu_m0 {
+       status = "okay";
+};
+
+&mu1_m0 {
+       status = "okay";
+};
+
+&sai1 {
+       assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
+                         <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
+                         <&sai1_lpcg 0>;
+       assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai1>;
+       status = "okay";
+};
+
+&thermal_zones {
+       pmic0_thermal: pmic0-thermal {
+               polling-delay-passive = <250>;
+               polling-delay = <2000>;
+               thermal-sensors = <&tsens IMX_SC_R_PMIC_0>;
+
+               trips {
+                       pmic_alert0: trip0 {
+                               temperature = <110000>;
+                               hysteresis = <2000>;
+                               type = "passive";
+                       };
+
+                       pmic_crit0: trip1 {
+                               temperature = <125000>;
+                               hysteresis = <2000>;
+                               type = "critical";
+                       };
+               };
+
+               cooling-maps {
+                       map0 {
+                               trip = <&pmic_alert0>;
+                               cooling-device =
+                                       <&A35_0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&A35_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&A35_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&A35_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+               };
+       };
+};
+
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       vmmc-supply = <&reg_vmmc>;
+       vqmmc-supply = <&reg_vqmmc>;
+       bus-width = <8>;
+       non-removable;
+       no-sd;
+       no-sdio;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
+       bus-width = <4>;
+       /* NOTE: CD / WP and VMMC support depends on mainboard */
+};
+
+&vpu {
+       compatible = "nxp,imx8qxp-vpu";
+       status = "okay";
+};
+
+&vpu_core0 {
+       memory-region = <&decoder_boot>, <&decoder_rpc>;
+       status = "okay";
+};
+
+&vpu_core1 {
+       memory-region = <&encoder_boot>, <&encoder_rpc>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_backlight_lvds0: backlight-lvds0grp {
+               fsl,pins = <IMX8QXP_SPI2_SDI_LSIO_GPIO1_IO02    0x00000021>;
+       };
+
+       pinctrl_backlight_lvds1: backlight-lvds1grp {
+               fsl,pins = <IMX8QXP_SPI2_CS0_LSIO_GPIO1_IO00    0x00000021>;
+       };
+
+       pinctrl_can1: can1grp {
+               fsl,pins = <IMX8QXP_UART2_TX_ADMA_FLEXCAN1_TX   0x00000021>,
+                          <IMX8QXP_UART2_RX_ADMA_FLEXCAN1_RX   0x00000021>;
+       };
+
+       pinctrl_can2: can2grp {
+               fsl,pins = <IMX8QXP_FLEXCAN2_TX_ADMA_FLEXCAN2_TX        0x00000021>,
+                          <IMX8QXP_FLEXCAN2_RX_ADMA_FLEXCAN2_RX        0x00000021>;
+       };
+
+       pinctrl_ethphy0: ethphy0grp {
+               fsl,pins = <IMX8QXP_MIPI_DSI1_I2C0_SDA_LSIO_GPIO1_IO30  0x00000040>,
+                          <IMX8QXP_QSPI0B_DQS_LSIO_GPIO3_IO22          0x00000040>;
+       };
+
+       pinctrl_ethphy1: ethphy1grp {
+               fsl,pins = <IMX8QXP_ADC_IN4_LSIO_GPIO1_IO14             0x00000040>,
+                          <IMX8QXP_UART1_CTS_B_LSIO_GPIO0_IO24         0x00000040>;
+       };
+
+       pinctrl_fec1: fec1grp {
+               fsl,pins = <IMX8QXP_ENET0_MDC_CONN_ENET0_MDC                    0x06000041>,
+                          <IMX8QXP_ENET0_MDIO_CONN_ENET0_MDIO                  0x06000041>,
+                          <IMX8QXP_ENET0_RGMII_TX_CTL_CONN_ENET0_RGMII_TX_CTL  0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_TXC_CONN_ENET0_RGMII_TXC        0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_TXD0_CONN_ENET0_RGMII_TXD0      0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_TXD1_CONN_ENET0_RGMII_TXD1      0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_TXD2_CONN_ENET0_RGMII_TXD2      0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_TXD3_CONN_ENET0_RGMII_TXD3      0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_RXC_CONN_ENET0_RGMII_RXC        0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_RX_CTL_CONN_ENET0_RGMII_RX_CTL  0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_RXD0_CONN_ENET0_RGMII_RXD0      0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_RXD1_CONN_ENET0_RGMII_RXD1      0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_RXD2_CONN_ENET0_RGMII_RXD2      0x00000040>,
+                          <IMX8QXP_ENET0_RGMII_RXD3_CONN_ENET0_RGMII_RXD3      0x00000040>;
+       };
+
+       pinctrl_fec2: fec2grp {
+               fsl,pins = <IMX8QXP_ESAI0_SCKR_CONN_ENET1_RGMII_TX_CTL          0x00000040>,
+                          <IMX8QXP_ESAI0_FSR_CONN_ENET1_RGMII_TXC              0x00000040>,
+                          <IMX8QXP_ESAI0_TX4_RX1_CONN_ENET1_RGMII_TXD0         0x00000040>,
+                          <IMX8QXP_ESAI0_TX5_RX0_CONN_ENET1_RGMII_TXD1         0x00000040>,
+                          <IMX8QXP_ESAI0_FST_CONN_ENET1_RGMII_TXD2             0x00000040>,
+                          <IMX8QXP_ESAI0_SCKT_CONN_ENET1_RGMII_TXD3            0x00000040>,
+                          <IMX8QXP_ESAI0_TX0_CONN_ENET1_RGMII_RXC              0x00000040>,
+                          <IMX8QXP_SPDIF0_TX_CONN_ENET1_RGMII_RX_CTL           0x00000040>,
+                          <IMX8QXP_SPDIF0_RX_CONN_ENET1_RGMII_RXD0             0x00000040>,
+                          <IMX8QXP_ESAI0_TX3_RX2_CONN_ENET1_RGMII_RXD1         0x00000040>,
+                          <IMX8QXP_ESAI0_TX2_RX3_CONN_ENET1_RGMII_RXD2         0x00000040>,
+                          <IMX8QXP_ESAI0_TX1_CONN_ENET1_RGMII_RXD3             0x00000040>;
+       };
+
+       pinctrl_flexspi0: flexspi0grp {
+               fsl,pins = <IMX8QXP_QSPI0A_DATA0_LSIO_QSPI0A_DATA0      0x0000004d>,
+                          <IMX8QXP_QSPI0A_DATA1_LSIO_QSPI0A_DATA1      0x0000004d>,
+                          <IMX8QXP_QSPI0A_DATA2_LSIO_QSPI0A_DATA2      0x0000004d>,
+                          <IMX8QXP_QSPI0A_DATA3_LSIO_QSPI0A_DATA3      0x0000004d>,
+                          <IMX8QXP_QSPI0A_DQS_LSIO_QSPI0A_DQS          0x0000004d>,
+                          <IMX8QXP_QSPI0A_SS0_B_LSIO_QSPI0A_SS0_B      0x0000004d>,
+                          <IMX8QXP_QSPI0A_SCLK_LSIO_QSPI0A_SCLK        0x0000004d>,
+                          <IMX8QXP_QSPI0B_SCLK_LSIO_QSPI0B_SCLK        0x0000004d>,
+                          <IMX8QXP_QSPI0B_DATA0_LSIO_QSPI0B_DATA0      0x0000004d>,
+                          <IMX8QXP_QSPI0B_DATA1_LSIO_QSPI0B_DATA1      0x0000004d>,
+                          <IMX8QXP_QSPI0B_DATA2_LSIO_QSPI0B_DATA2      0x0000004d>,
+                          <IMX8QXP_QSPI0B_DATA3_LSIO_QSPI0B_DATA3      0x0000004d>,
+                          <IMX8QXP_QSPI0B_SS0_B_LSIO_QSPI0B_SS0_B      0x0000004d>,
+                          <IMX8QXP_QSPI0B_SS1_B_LSIO_QSPI0B_SS1_B      0x0000004d>;
+       };
+
+       pinctrl_smarc_gpio: smarcgpiogrp {
+               fsl,pins = /* SMARC_GPIO0 / CAM0_PWR# */
+                          <IMX8QXP_SPI0_SCK_LSIO_GPIO1_IO04    0x00000021>,
+                          /* SMARC_GPIO1 / CAM1_PWR# */
+                          <IMX8QXP_SPI0_SDI_LSIO_GPIO1_IO05    0x00000021>,
+                          /* SMARC_GPIO2 / CAM0_RST# */
+                          <IMX8QXP_SPI0_SDO_LSIO_GPIO1_IO06    0x00000021>,
+                          /* SMARC_GPIO3 / CAM1_RST# */
+                          <IMX8QXP_SPI0_CS0_LSIO_GPIO1_IO08    0x00000021>,
+                          /* SMARC_GPIO4 / HDA_RST# */
+                          <IMX8QXP_ADC_IN5_LSIO_GPIO1_IO13     0x00000021>,
+                          /* SMARC_GPIO7 */
+                          <IMX8QXP_ADC_IN0_LSIO_GPIO1_IO10     0x00000021>,
+                          /* SMARC_GPIO8 */
+                          <IMX8QXP_ADC_IN1_LSIO_GPIO1_IO09     0x00000021>,
+                          /* SMARC_GPIO9 */
+                          <IMX8QXP_ADC_IN2_LSIO_GPIO1_IO12     0x00000021>,
+                          /* SMARC_GPIO10 */
+                          <IMX8QXP_ADC_IN3_LSIO_GPIO1_IO11     0x00000021>;
+       };
+
+       pinctrl_smarc_fangpio: smarcfangpiogrp {
+               fsl,pins = /* SMARC_GPIO5 */
+                          <IMX8QXP_UART1_RX_LSIO_GPIO0_IO22    0x00000021>,
+                          /* SMARC_GPIO6 */
+                          <IMX8QXP_UART1_TX_LSIO_GPIO0_IO21    0x00000021>;
+       };
+
+       pinctrl_smarc_mngtpio: smarcmngtgpiogrp {
+               fsl,pins = /* SMARC BATLOW# */
+                          <IMX8QXP_SPI3_CS0_LSIO_GPIO0_IO16            0x00000021>,
+                          /* SMARC SLEEP */
+                          <IMX8QXP_SPI3_SCK_LSIO_GPIO0_IO13            0x00000021>,
+                          /* SMARC CHGPRSNT# */
+                          <IMX8QXP_SPI3_SDI_LSIO_GPIO0_IO15            0x00000021>,
+                          /* SMARC CHARGING# */
+                          <IMX8QXP_SPI3_SDO_LSIO_GPIO0_IO14            0x00000021>,
+                          /* SMARC LID */
+                          <IMX8QXP_SPDIF0_EXT_CLK_LSIO_GPIO0_IO12      0x00000021>;
+       };
+
+       pinctrl_lvds0: lbdpanel0grp {
+               fsl,pins = /* LCD PWR */
+                       <IMX8QXP_SPI2_SCK_LSIO_GPIO1_IO03               0x00000021>;
+       };
+
+       pinctrl_lvds1: lbdpanel1grp {
+               fsl,pins = /* LCD PWR */
+                       <IMX8QXP_SPI2_SDO_LSIO_GPIO1_IO01               0x00000021>;
+       };
+
+       pinctrl_lpi2c0: lpi2c0grp {
+               fsl,pins = <IMX8QXP_MIPI_CSI0_GPIO0_00_ADMA_I2C0_SCL    0x06000021>,
+                          <IMX8QXP_MIPI_CSI0_GPIO0_01_ADMA_I2C0_SDA    0x06000021>;
+       };
+
+       pinctrl_lpi2c0_gpio: lpi2c0gpiogrp {
+               fsl,pins = <IMX8QXP_MIPI_CSI0_GPIO0_00_LSIO_GPIO3_IO08  0x00000021>,
+                          <IMX8QXP_MIPI_CSI0_GPIO0_01_LSIO_GPIO3_IO07  0x00000021>;
+       };
+
+       pinctrl_lpuart0: lpuart0grp {
+               fsl,pins = <IMX8QXP_UART0_RX_ADMA_UART0_RX              0x06000020>,
+                          <IMX8QXP_UART0_TX_ADMA_UART0_TX              0x06000020>,
+                          <IMX8QXP_FLEXCAN0_RX_ADMA_UART0_RTS_B        0x06000020>,
+                          <IMX8QXP_FLEXCAN0_TX_ADMA_UART0_CTS_B        0x06000020>;
+       };
+
+       pinctrl_lpuart3: lpuart3grp {
+               fsl,pins = <IMX8QXP_SCU_GPIO0_00_ADMA_UART3_RX          0x06000020>,
+                          <IMX8QXP_SCU_GPIO0_01_ADMA_UART3_TX          0x06000020>;
+       };
+
+       pinctrl_i2c0_mipi_lvds0: mipi-lvds0-i2c0grp {
+               fsl,pins = <IMX8QXP_MIPI_DSI0_I2C0_SCL_MIPI_DSI0_I2C0_SCL       0x06000021>,
+                          <IMX8QXP_MIPI_DSI0_I2C0_SDA_MIPI_DSI0_I2C0_SDA       0x06000021>;
+       };
+
+       pinctrl_i2c0_gpio_mipi_lvds0: mipi-lvds0-i2c0-gpiogrp {
+               fsl,pins = <IMX8QXP_MIPI_DSI0_I2C0_SCL_LSIO_GPIO1_IO25  0x0000021>,
+                          <IMX8QXP_MIPI_DSI0_I2C0_SDA_LSIO_GPIO1_IO26  0x0000021>;
+       };
+
+       pinctrl_pcieb: pcieagrp {
+               fsl,pins = <IMX8QXP_PCIE_CTRL0_PERST_B_LSIO_GPIO4_IO00  0x06000041>,
+                          <IMX8QXP_PCIE_CTRL0_CLKREQ_B_LSIO_GPIO4_IO01 0x06000041>,
+                          <IMX8QXP_PCIE_CTRL0_WAKE_B_LSIO_GPIO4_IO02   0x04000041>;
+       };
+
+       pinctrl_pwm_mipi_lvds0: mipi-lvds0-pwmgrp {
+               fsl,pins = <IMX8QXP_MIPI_DSI0_GPIO0_00_MIPI_DSI0_PWM0_OUT       0x00000021>;
+       };
+
+       pinctrl_pwm_mipi_lvds1: mipi-lvds1-pwmgrp {
+               fsl,pins = <IMX8QXP_MIPI_DSI1_GPIO0_00_MIPI_DSI1_PWM0_OUT       0x00000021>;
+       };
+
+       pinctrl_rtc: rtcgrp {
+               fsl,pins = <IMX8QXP_MIPI_DSI1_GPIO0_01_LSIO_GPIO2_IO00          0x00000021>;
+       };
+
+       pinctrl_usdhc1: usdhc1grp {
+               fsl,pins = <IMX8QXP_EMMC0_CLK_CONN_EMMC0_CLK            0x06000040>,
+                          <IMX8QXP_EMMC0_CMD_CONN_EMMC0_CMD            0x00000020>,
+                          <IMX8QXP_EMMC0_DATA0_CONN_EMMC0_DATA0        0x00000020>,
+                          <IMX8QXP_EMMC0_DATA1_CONN_EMMC0_DATA1        0x00000020>,
+                          <IMX8QXP_EMMC0_DATA2_CONN_EMMC0_DATA2        0x00000020>,
+                          <IMX8QXP_EMMC0_DATA3_CONN_EMMC0_DATA3        0x00000020>,
+                          <IMX8QXP_EMMC0_DATA4_CONN_EMMC0_DATA4        0x00000020>,
+                          <IMX8QXP_EMMC0_DATA5_CONN_EMMC0_DATA5        0x00000020>,
+                          <IMX8QXP_EMMC0_DATA6_CONN_EMMC0_DATA6        0x00000020>,
+                          <IMX8QXP_EMMC0_DATA7_CONN_EMMC0_DATA7        0x00000020>,
+                          <IMX8QXP_EMMC0_STROBE_CONN_EMMC0_STROBE      0x00000040>;
+       };
+
+       pinctrl_usdhc1_100mhz: usdhc1100mhzgrp {
+               fsl,pins = <IMX8QXP_EMMC0_CLK_CONN_EMMC0_CLK            0x06000041>,
+                          <IMX8QXP_EMMC0_CMD_CONN_EMMC0_CMD            0x00000021>,
+                          <IMX8QXP_EMMC0_DATA0_CONN_EMMC0_DATA0        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA1_CONN_EMMC0_DATA1        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA2_CONN_EMMC0_DATA2        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA3_CONN_EMMC0_DATA3        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA4_CONN_EMMC0_DATA4        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA5_CONN_EMMC0_DATA5        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA6_CONN_EMMC0_DATA6        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA7_CONN_EMMC0_DATA7        0x00000021>,
+                          <IMX8QXP_EMMC0_STROBE_CONN_EMMC0_STROBE      0x00000041>;
+       };
+
+       pinctrl_usdhc1_200mhz: usdhc1200mhzgrp {
+               fsl,pins = <IMX8QXP_EMMC0_CLK_CONN_EMMC0_CLK            0x06000041>,
+                          <IMX8QXP_EMMC0_CMD_CONN_EMMC0_CMD            0x00000021>,
+                          <IMX8QXP_EMMC0_DATA0_CONN_EMMC0_DATA0        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA1_CONN_EMMC0_DATA1        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA2_CONN_EMMC0_DATA2        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA3_CONN_EMMC0_DATA3        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA4_CONN_EMMC0_DATA4        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA5_CONN_EMMC0_DATA5        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA6_CONN_EMMC0_DATA6        0x00000021>,
+                          <IMX8QXP_EMMC0_DATA7_CONN_EMMC0_DATA7        0x00000021>,
+                          <IMX8QXP_EMMC0_STROBE_CONN_EMMC0_STROBE      0x00000041>;
+       };
+
+       pinctrl_sdvmmc: sdvmmcgrp {
+               fsl,pins = <IMX8QXP_USDHC1_RESET_B_LSIO_GPIO4_IO19      0x00000021>;
+       };
+
+       pinctrl_spi1: spi1grp {
+               fsl,pins = /* PD + PDRV Low + INOUT - MEK has 0x0600004c */
+                          <IMX8QXP_SAI0_TXC_ADMA_SPI1_SDI              0x06000041>,
+                          <IMX8QXP_SAI0_TXD_ADMA_SPI1_SDO              0x06000041>,
+                          <IMX8QXP_SAI0_TXFS_ADMA_SPI1_SCK             0x06000041>,
+                          <IMX8QXP_SAI0_RXD_LSIO_GPIO0_IO27            0x00000021>,
+                          <IMX8QXP_SAI1_RXD_LSIO_GPIO0_IO29            0x00000021>;
+       };
+
+       pinctrl_sai1: sai1grp {
+               fsl,pins = <IMX8QXP_MCLK_OUT0_ADMA_ACM_MCLK_OUT0        0x06000040>,
+                          <IMX8QXP_SAI1_RXC_ADMA_SAI1_TXC              0x06000040>,
+                          <IMX8QXP_SAI1_RXFS_ADMA_SAI1_TXFS            0x06000040>,
+                          <IMX8QXP_FLEXCAN1_RX_ADMA_SAI1_TXD           0x06000040>,
+                          <IMX8QXP_FLEXCAN1_TX_ADMA_SAI1_RXD           0x06000040>;
+       };
+
+       pinctrl_usbotg1: usbotg1grp {
+               fsl,pins = <IMX8QXP_USB_SS3_TC0_CONN_USB_OTG1_PWR       0x00000021>,
+                          <IMX8QXP_USB_SS3_TC2_CONN_USB_OTG1_OC        0x00000021>;
+       };
+
+       pinctrl_usdhc2_gpio: usdhc2gpiogrp {
+               fsl,pins = <IMX8QXP_USDHC1_WP_LSIO_GPIO4_IO21           0x00000021>,
+                          <IMX8QXP_USDHC1_CD_B_LSIO_GPIO4_IO22         0x00000021>;
+       };
+
+       pinctrl_usdhc2: usdhc2grp {
+               fsl,pins = <IMX8QXP_USDHC1_CLK_CONN_USDHC1_CLK          0x06000041>,
+                          <IMX8QXP_USDHC1_CMD_CONN_USDHC1_CMD          0x00000021>,
+                          <IMX8QXP_USDHC1_DATA0_CONN_USDHC1_DATA0      0x00000021>,
+                          <IMX8QXP_USDHC1_DATA1_CONN_USDHC1_DATA1      0x00000021>,
+                          <IMX8QXP_USDHC1_DATA2_CONN_USDHC1_DATA2      0x00000021>,
+                          <IMX8QXP_USDHC1_DATA3_CONN_USDHC1_DATA3      0x00000021>,
+                          <IMX8QXP_USDHC1_VSELECT_CONN_USDHC1_VSELECT  0x00000021>;
+       };
+
+       pinctrl_usdhc2_100mhz: usdhc2100mhzgrp {
+               fsl,pins = <IMX8QXP_USDHC1_CLK_CONN_USDHC1_CLK          0x06000040>,
+                          <IMX8QXP_USDHC1_CMD_CONN_USDHC1_CMD          0x00000020>,
+                          <IMX8QXP_USDHC1_DATA0_CONN_USDHC1_DATA0      0x00000020>,
+                          <IMX8QXP_USDHC1_DATA1_CONN_USDHC1_DATA1      0x00000020>,
+                          <IMX8QXP_USDHC1_DATA2_CONN_USDHC1_DATA2      0x00000020>,
+                          <IMX8QXP_USDHC1_DATA3_CONN_USDHC1_DATA3      0x00000020>,
+                          <IMX8QXP_USDHC1_VSELECT_CONN_USDHC1_VSELECT  0x00000020>;
+       };
+
+       pinctrl_usdhc2_200mhz: usdhc2200mhzgrp {
+               fsl,pins = <IMX8QXP_USDHC1_CLK_CONN_USDHC1_CLK          0x06000040>,
+                          <IMX8QXP_USDHC1_CMD_CONN_USDHC1_CMD          0x00000020>,
+                          <IMX8QXP_USDHC1_DATA0_CONN_USDHC1_DATA0      0x00000020>,
+                          <IMX8QXP_USDHC1_DATA1_CONN_USDHC1_DATA1      0x00000020>,
+                          <IMX8QXP_USDHC1_DATA2_CONN_USDHC1_DATA2      0x00000020>,
+                          <IMX8QXP_USDHC1_DATA3_CONN_USDHC1_DATA3      0x00000020>,
+                          <IMX8QXP_USDHC1_VSELECT_CONN_USDHC1_VSELECT  0x00000020>;
+       };
+};
index 1235ba5a9865a175001fd3ef2bad710842f93be4..a77a504effeab6b487ea0ef4c733f3ed80cad5be 100644 (file)
                cb_intosc_hs_div2_clk: cb-intosc-hs-div2-clk {
                        #clock-cells = <0>;
                        compatible = "fixed-clock";
+                       clock-frequency = <200000000>;
                };
 
                cb_intosc_ls_clk: cb-intosc-ls-clk {
                        #clock-cells = <0>;
                        compatible = "fixed-clock";
+                       clock-frequency = <400000000>;
                };
 
                f2s_free_clk: f2s-free-clk {
                        reg-io-width = <4>;
                        num-cs = <4>;
                        clocks = <&clkmgr AGILEX_L4_MAIN_CLK>;
+                       dmas = <&pdma 16>, <&pdma 17>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
                        reg-io-width = <4>;
                        num-cs = <4>;
                        clocks = <&clkmgr AGILEX_L4_MAIN_CLK>;
+                       dmas = <&pdma 20>, <&pdma 21>;
+                       dma-names = "tx", "rx";
                        status = "disabled";
                };
 
index 51c6e19e40b843adbdb58cfa987878d5b0bbb652..7d9394a0430272f9a00ac0f0b653dbae8c95bce8 100644 (file)
                        status = "disabled";
                };
 
-               gpio0: gpio@ffc03200 {
+               gpio0: gpio@10c03200 {
                        compatible = "snps,dw-apb-gpio";
-                       reg = <0xffc03200 0x100>;
+                       reg = <0x10c03200 0x100>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        resets = <&rst GPIO0_RESET>;
index c533e5a3a61064195c82da9a563d6e4382a6a93a..d3b913b7902c19fd2f9992af8f81cccce4222af8 100644 (file)
        chosen {
                stdout-path = "serial0:115200n8";
        };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led-0 {
+                       label = "hps_led0";
+                       gpios = <&porta 11 GPIO_ACTIVE_HIGH>;
+               };
+
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               /* We expect the bootloader to fill in the reg */
+               reg = <0x0 0x80000000 0x0 0x0>;
+       };
+};
+
+&gpio0 {
+       status = "okay";
 };
 
 &gpio1 {
        clock-frequency = <25000000>;
 };
 
+&qspi {
+       status = "okay";
+       flash@0 {
+               compatible = "micron,mt25qu02g", "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <100000000>;
+               m25p,fast-read;
+               cdns,read-delay = <2>;
+               cdns,tshsl-ns = <50>;
+               cdns,tsd2d-ns = <50>;
+               cdns,tchsh-ns = <4>;
+               cdns,tslch-ns = <4>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       qspi_boot: partition@0 {
+                               label = "u-boot";
+                               reg = <0x0 0x04200000>;
+                       };
+
+                       root: partition@4200000 {
+                               label = "root";
+                               reg = <0x04200000 0x0be00000>;
+                       };
+               };
+       };
+};
+
 &uart0 {
        status = "okay";
 };
diff --git a/src/arm64/intel/socfpga_agilex5_socdk_nand.dts b/src/arm64/intel/socfpga_agilex5_socdk_nand.dts
new file mode 100644 (file)
index 0000000..38a582e
--- /dev/null
@@ -0,0 +1,89 @@
+// SPDX-License-Identifier:     GPL-2.0
+/*
+ * Copyright (C) 2025, Altera Corporation
+ */
+#include "socfpga_agilex5.dtsi"
+
+/ {
+       model = "SoCFPGA Agilex5 SoCDK NAND daughter board";
+       compatible = "intel,socfpga-agilex5-socdk-nand", "intel,socfpga-agilex5";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               led0 {
+                       label = "hps_led0";
+                       gpios = <&porta 6 GPIO_ACTIVE_HIGH>;
+               };
+
+               led1 {
+                       label = "hps_led1";
+                       gpios = <&porta 7 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               /* We expect the bootloader to fill in the reg */
+               reg = <0x0 0x80000000 0x0 0x0>;
+       };
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+};
+
+&i3c0 {
+       status = "okay";
+};
+
+&i3c1 {
+       status = "okay";
+};
+
+&nand {
+       status = "okay";
+
+       nand@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0>;
+               nand-bus-width = <8>;
+
+               partition@0 {
+                       label = "u-boot";
+                       reg = <0 0x200000>;
+               };
+               partition@200000 {
+                       label = "root";
+                       reg = <0x200000 0xffe00000>;
+               };
+       };
+};
+
+&osc1 {
+       clock-frequency = <25000000>;
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&watchdog0 {
+       status = "okay";
+};
index 2b5e45d2c5a6f1f654dc85a4039f809470c1994b..3add6506ff20e5a67c163b5ae703469e7d960a8d 100644 (file)
 
        expander0: pca9555@21 {
                compatible = "nxp,pca9555";
-               pinctrl-names = "default";
                gpio-controller;
                #gpio-cells = <2>;
                reg = <0x21>;
index 9d45e881a97d33853d29bb6c59c9a93ded1165f5..21ecb9c12505a9d5608cc0cc346181603d196895 100644 (file)
        /* U31 */
        expander0: pca9555@21 {
                compatible = "nxp,pca9555";
-               pinctrl-names = "default";
                gpio-controller;
                #gpio-cells = <2>;
                reg = <0x21>;
        /* U25 */
        expander1: pca9555@25 {
                compatible = "nxp,pca9555";
-               pinctrl-names = "default";
                gpio-controller;
                #gpio-cells = <2>;
                reg = <0x25>;
index be56a233626534bd64e6f75a5a0821044c38caed..50e9e0724828925a6527404ce5764f35f85bdd6c 100644 (file)
                        /* U12 */
                        cp0_module_expander1: pca9555@21 {
                                compatible = "nxp,pca9555";
-                               pinctrl-names = "default";
                                gpio-controller;
                                #gpio-cells = <2>;
                                reg = <0x21>;
index 5fafa842d312f3b01e7d71ddc04ef48ca52bc89d..dca4e5c3d8e210c1e118539153e77e2822066da3 100644 (file)
@@ -60,7 +60,6 @@
                        };
 
                        mt6357_vfe28_reg: ldo-vfe28 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vfe28";
                                regulator-min-microvolt = <2800000>;
                                regulator-max-microvolt = <2800000>;
@@ -75,7 +74,6 @@
                        };
 
                        mt6357_vrf18_reg: ldo-vrf18 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vrf18";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
@@ -83,7 +81,6 @@
                        };
 
                        mt6357_vrf12_reg: ldo-vrf12 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vrf12";
                                regulator-min-microvolt = <1200000>;
                                regulator-max-microvolt = <1200000>;
                        };
 
                        mt6357_vcn28_reg: ldo-vcn28 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vcn28";
                                regulator-min-microvolt = <2800000>;
                                regulator-max-microvolt = <2800000>;
                        };
 
                        mt6357_vcn18_reg: ldo-vcn18 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vcn18";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                        };
 
                        mt6357_vcamio_reg: ldo-vcamio18 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vcamio";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                        };
 
                        mt6357_vaux18_reg: ldo-vaux18 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vaux18";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
                        };
 
                        mt6357_vaud28_reg: ldo-vaud28 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vaud28";
                                regulator-min-microvolt = <2800000>;
                                regulator-max-microvolt = <2800000>;
                        };
 
                        mt6357_vio28_reg: ldo-vio28 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vio28";
                                regulator-min-microvolt = <2800000>;
                                regulator-max-microvolt = <2800000>;
                        };
 
                        mt6357_vio18_reg: ldo-vio18 {
-                               compatible = "regulator-fixed";
                                regulator-name = "vio18";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
index 7b10f9c59819a9ad02319f00938f35c931091f9f..467d8a4c2aa7f16ade92a287ecdeed5089302045 100644 (file)
@@ -20,6 +20,8 @@
                };
 
                regulators {
+                       compatible = "mediatek,mt6359-regulator";
+
                        mt6359_vs1_buck_reg: buck_vs1 {
                                regulator-name = "vs1";
                                regulator-min-microvolt = <800000>;
                        };
                };
 
-               mt6359rtc: mt6359rtc {
+               mt6359rtc: rtc {
                        compatible = "mediatek,mt6358-rtc";
                };
        };
diff --git a/src/arm64/mediatek/mt6893-pinfunc.h b/src/arm64/mediatek/mt6893-pinfunc.h
new file mode 100644 (file)
index 0000000..982bc95
--- /dev/null
@@ -0,0 +1,1356 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2019 MediaTek Inc.
+ * Copyright (c) 2025 Collabora Ltd
+ */
+
+#ifndef __MT6893_PINFUNC_H
+#define __MT6893_PINFUNC_H
+
+#include "mt65xx.h"
+
+#define PINMUX_GPIO0__FUNC_GPIO0 (MTK_PIN_NO(0) | 0)
+#define PINMUX_GPIO0__FUNC_SPI6_CLK (MTK_PIN_NO(0) | 1)
+#define PINMUX_GPIO0__FUNC_I2S5_MCK (MTK_PIN_NO(0) | 2)
+#define PINMUX_GPIO0__FUNC_PWM_0 (MTK_PIN_NO(0) | 3)
+#define PINMUX_GPIO0__FUNC_MD_INT0 (MTK_PIN_NO(0) | 4)
+#define PINMUX_GPIO0__FUNC_TP_GPIO0_AO (MTK_PIN_NO(0) | 5)
+
+#define PINMUX_GPIO1__FUNC_GPIO1 (MTK_PIN_NO(1) | 0)
+#define PINMUX_GPIO1__FUNC_SPI6_CSB (MTK_PIN_NO(1) | 1)
+#define PINMUX_GPIO1__FUNC_I2S5_BCK (MTK_PIN_NO(1) | 2)
+#define PINMUX_GPIO1__FUNC_PWM_1 (MTK_PIN_NO(1) | 3)
+#define PINMUX_GPIO1__FUNC_MD_INT1_C2K_UIM0_HOT_PLUG (MTK_PIN_NO(1) | 4)
+#define PINMUX_GPIO1__FUNC_TP_GPIO1_AO (MTK_PIN_NO(1) | 5)
+
+#define PINMUX_GPIO2__FUNC_GPIO2 (MTK_PIN_NO(2) | 0)
+#define PINMUX_GPIO2__FUNC_SPI6_MI (MTK_PIN_NO(2) | 1)
+#define PINMUX_GPIO2__FUNC_I2S5_LRCK (MTK_PIN_NO(2) | 2)
+#define PINMUX_GPIO2__FUNC_PWM_2 (MTK_PIN_NO(2) | 3)
+#define PINMUX_GPIO2__FUNC_MD_INT2_C2K_UIM1_HOT_PLUG (MTK_PIN_NO(2) | 4)
+#define PINMUX_GPIO2__FUNC_TP_GPIO2_AO (MTK_PIN_NO(2) | 5)
+
+#define PINMUX_GPIO3__FUNC_GPIO3 (MTK_PIN_NO(3) | 0)
+#define PINMUX_GPIO3__FUNC_SPI6_MO (MTK_PIN_NO(3) | 1)
+#define PINMUX_GPIO3__FUNC_I2S5_DO (MTK_PIN_NO(3) | 2)
+#define PINMUX_GPIO3__FUNC_PWM_3 (MTK_PIN_NO(3) | 3)
+#define PINMUX_GPIO3__FUNC_CLKM0 (MTK_PIN_NO(3) | 4)
+#define PINMUX_GPIO3__FUNC_TP_GPIO3_AO (MTK_PIN_NO(3) | 5)
+
+#define PINMUX_GPIO4__FUNC_GPIO4 (MTK_PIN_NO(4) | 0)
+#define PINMUX_GPIO4__FUNC_SPI7_A_CLK (MTK_PIN_NO(4) | 1)
+#define PINMUX_GPIO4__FUNC_I2S2_MCK (MTK_PIN_NO(4) | 2)
+#define PINMUX_GPIO4__FUNC_DMIC1_CLK (MTK_PIN_NO(4) | 3)
+#define PINMUX_GPIO4__FUNC_PCM1_DI (MTK_PIN_NO(4) | 4)
+#define PINMUX_GPIO4__FUNC_TP_GPIO4_AO (MTK_PIN_NO(4) | 5)
+
+#define PINMUX_GPIO5__FUNC_GPIO5 (MTK_PIN_NO(5) | 0)
+#define PINMUX_GPIO5__FUNC_SPI7_A_CSB (MTK_PIN_NO(5) | 1)
+#define PINMUX_GPIO5__FUNC_I2S2_BCK (MTK_PIN_NO(5) | 2)
+#define PINMUX_GPIO5__FUNC_DMIC1_DAT (MTK_PIN_NO(5) | 3)
+#define PINMUX_GPIO5__FUNC_PCM1_CLK (MTK_PIN_NO(5) | 4)
+#define PINMUX_GPIO5__FUNC_TP_GPIO5_AO (MTK_PIN_NO(5) | 5)
+
+#define PINMUX_GPIO6__FUNC_GPIO6 (MTK_PIN_NO(6) | 0)
+#define PINMUX_GPIO6__FUNC_SPI7_A_MI (MTK_PIN_NO(6) | 1)
+#define PINMUX_GPIO6__FUNC_I2S2_LRCK (MTK_PIN_NO(6) | 2)
+#define PINMUX_GPIO6__FUNC_DMIC_CLK (MTK_PIN_NO(6) | 3)
+#define PINMUX_GPIO6__FUNC_PCM1_SYNC (MTK_PIN_NO(6) | 4)
+#define PINMUX_GPIO6__FUNC_TP_GPIO6_AO (MTK_PIN_NO(6) | 5)
+#define PINMUX_GPIO6__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(6) | 6)
+
+#define PINMUX_GPIO7__FUNC_GPIO7 (MTK_PIN_NO(7) | 0)
+#define PINMUX_GPIO7__FUNC_SPI7_A_MO (MTK_PIN_NO(7) | 1)
+#define PINMUX_GPIO7__FUNC_I2S2_DI (MTK_PIN_NO(7) | 2)
+#define PINMUX_GPIO7__FUNC_DMIC_DAT (MTK_PIN_NO(7) | 3)
+#define PINMUX_GPIO7__FUNC_PCM1_DO0 (MTK_PIN_NO(7) | 4)
+#define PINMUX_GPIO7__FUNC_TP_GPIO7_AO (MTK_PIN_NO(7) | 5)
+#define PINMUX_GPIO7__FUNC_WIFI_TXD (MTK_PIN_NO(7) | 6)
+
+#define PINMUX_GPIO8__FUNC_GPIO8 (MTK_PIN_NO(8) | 0)
+#define PINMUX_GPIO8__FUNC_SRCLKENAI1 (MTK_PIN_NO(8) | 1)
+#define PINMUX_GPIO8__FUNC_I2S2_DI2 (MTK_PIN_NO(8) | 2)
+#define PINMUX_GPIO8__FUNC_KPCOL2 (MTK_PIN_NO(8) | 3)
+#define PINMUX_GPIO8__FUNC_PCM1_DO1 (MTK_PIN_NO(8) | 4)
+#define PINMUX_GPIO8__FUNC_CLKM1 (MTK_PIN_NO(8) | 5)
+#define PINMUX_GPIO8__FUNC_CONN_BT_TXD (MTK_PIN_NO(8) | 6)
+
+#define PINMUX_GPIO9__FUNC_GPIO9 (MTK_PIN_NO(9) | 0)
+#define PINMUX_GPIO9__FUNC_SRCLKENAI0 (MTK_PIN_NO(9) | 1)
+#define PINMUX_GPIO9__FUNC_DVFSRC_EXT_REQ (MTK_PIN_NO(9) | 2)
+#define PINMUX_GPIO9__FUNC_KPROW2 (MTK_PIN_NO(9) | 3)
+#define PINMUX_GPIO9__FUNC_PCM1_DO2 (MTK_PIN_NO(9) | 4)
+#define PINMUX_GPIO9__FUNC_CLKM3 (MTK_PIN_NO(9) | 5)
+#define PINMUX_GPIO9__FUNC_CMMCLK4 (MTK_PIN_NO(9) | 6)
+
+#define PINMUX_GPIO10__FUNC_GPIO10 (MTK_PIN_NO(10) | 0)
+#define PINMUX_GPIO10__FUNC_MSDC1_CLK_A (MTK_PIN_NO(10) | 1)
+#define PINMUX_GPIO10__FUNC_SPI4_B_CLK (MTK_PIN_NO(10) | 2)
+#define PINMUX_GPIO10__FUNC_I2S8_MCK (MTK_PIN_NO(10) | 3)
+#define PINMUX_GPIO10__FUNC_DSI1_TE (MTK_PIN_NO(10) | 4)
+#define PINMUX_GPIO10__FUNC_MD_INT0 (MTK_PIN_NO(10) | 5)
+#define PINMUX_GPIO10__FUNC_TP_GPIO0_AO (MTK_PIN_NO(10) | 6)
+
+#define PINMUX_GPIO11__FUNC_GPIO11 (MTK_PIN_NO(11) | 0)
+#define PINMUX_GPIO11__FUNC_MSDC1_CMD_A (MTK_PIN_NO(11) | 1)
+#define PINMUX_GPIO11__FUNC_SPI4_B_CSB (MTK_PIN_NO(11) | 2)
+#define PINMUX_GPIO11__FUNC_I2S8_BCK (MTK_PIN_NO(11) | 3)
+#define PINMUX_GPIO11__FUNC_LCM1_RST (MTK_PIN_NO(11) | 4)
+#define PINMUX_GPIO11__FUNC_MD_INT1_C2K_UIM0_HOT_PLUG (MTK_PIN_NO(11) | 5)
+#define PINMUX_GPIO11__FUNC_TP_GPIO1_AO (MTK_PIN_NO(11) | 6)
+
+#define PINMUX_GPIO12__FUNC_GPIO12 (MTK_PIN_NO(12) | 0)
+#define PINMUX_GPIO12__FUNC_MSDC1_DAT3_A (MTK_PIN_NO(12) | 1)
+#define PINMUX_GPIO12__FUNC_SPI4_B_MI (MTK_PIN_NO(12) | 2)
+#define PINMUX_GPIO12__FUNC_I2S8_LRCK (MTK_PIN_NO(12) | 3)
+#define PINMUX_GPIO12__FUNC_DMIC1_CLK (MTK_PIN_NO(12) | 4)
+#define PINMUX_GPIO12__FUNC_MD_INT2_C2K_UIM1_HOT_PLUG (MTK_PIN_NO(12) | 5)
+#define PINMUX_GPIO12__FUNC_TP_GPIO2_AO (MTK_PIN_NO(12) | 6)
+
+#define PINMUX_GPIO13__FUNC_GPIO13 (MTK_PIN_NO(13) | 0)
+#define PINMUX_GPIO13__FUNC_MSDC1_DAT0_A (MTK_PIN_NO(13) | 1)
+#define PINMUX_GPIO13__FUNC_SPI4_B_MO (MTK_PIN_NO(13) | 2)
+#define PINMUX_GPIO13__FUNC_I2S8_DI (MTK_PIN_NO(13) | 3)
+#define PINMUX_GPIO13__FUNC_DMIC1_DAT (MTK_PIN_NO(13) | 4)
+#define PINMUX_GPIO13__FUNC_ANT_SEL10 (MTK_PIN_NO(13) | 5)
+#define PINMUX_GPIO13__FUNC_TP_GPIO3_AO (MTK_PIN_NO(13) | 6)
+
+#define PINMUX_GPIO14__FUNC_GPIO14 (MTK_PIN_NO(14) | 0)
+#define PINMUX_GPIO14__FUNC_MSDC1_DAT2_A (MTK_PIN_NO(14) | 1)
+#define PINMUX_GPIO14__FUNC_SPI5_C_CLK (MTK_PIN_NO(14) | 2)
+#define PINMUX_GPIO14__FUNC_I2S9_MCK (MTK_PIN_NO(14) | 3)
+#define PINMUX_GPIO14__FUNC_IDDIG (MTK_PIN_NO(14) | 4)
+#define PINMUX_GPIO14__FUNC_ANT_SEL11 (MTK_PIN_NO(14) | 5)
+#define PINMUX_GPIO14__FUNC_TP_GPIO4_AO (MTK_PIN_NO(14) | 6)
+
+#define PINMUX_GPIO15__FUNC_GPIO15 (MTK_PIN_NO(15) | 0)
+#define PINMUX_GPIO15__FUNC_MSDC1_DAT1_A (MTK_PIN_NO(15) | 1)
+#define PINMUX_GPIO15__FUNC_SPI5_C_CSB (MTK_PIN_NO(15) | 2)
+#define PINMUX_GPIO15__FUNC_I2S9_BCK (MTK_PIN_NO(15) | 3)
+#define PINMUX_GPIO15__FUNC_USB_DRVVBUS (MTK_PIN_NO(15) | 4)
+#define PINMUX_GPIO15__FUNC_ANT_SEL12 (MTK_PIN_NO(15) | 5)
+#define PINMUX_GPIO15__FUNC_TP_GPIO5_AO (MTK_PIN_NO(15) | 6)
+
+#define PINMUX_GPIO16__FUNC_GPIO16 (MTK_PIN_NO(16) | 0)
+#define PINMUX_GPIO16__FUNC_SRCLKENAI1 (MTK_PIN_NO(16) | 1)
+#define PINMUX_GPIO16__FUNC_SPI5_C_MI (MTK_PIN_NO(16) | 2)
+#define PINMUX_GPIO16__FUNC_I2S9_LRCK (MTK_PIN_NO(16) | 3)
+#define PINMUX_GPIO16__FUNC_KPCOL2 (MTK_PIN_NO(16) | 4)
+#define PINMUX_GPIO16__FUNC_GPS_L1_ELNA_EN (MTK_PIN_NO(16) | 5)
+#define PINMUX_GPIO16__FUNC_TP_GPIO6_AO (MTK_PIN_NO(16) | 6)
+#define PINMUX_GPIO16__FUNC_DBG_MON_A30 (MTK_PIN_NO(16) | 7)
+
+#define PINMUX_GPIO17__FUNC_GPIO17 (MTK_PIN_NO(17) | 0)
+#define PINMUX_GPIO17__FUNC_SRCLKENAI0 (MTK_PIN_NO(17) | 1)
+#define PINMUX_GPIO17__FUNC_SPI5_C_MO (MTK_PIN_NO(17) | 2)
+#define PINMUX_GPIO17__FUNC_I2S9_DO (MTK_PIN_NO(17) | 3)
+#define PINMUX_GPIO17__FUNC_KPROW2 (MTK_PIN_NO(17) | 4)
+#define PINMUX_GPIO17__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(17) | 5)
+#define PINMUX_GPIO17__FUNC_TP_GPIO7_AO (MTK_PIN_NO(17) | 6)
+#define PINMUX_GPIO17__FUNC_DBG_MON_A31 (MTK_PIN_NO(17) | 7)
+
+#define PINMUX_GPIO18__FUNC_GPIO18 (MTK_PIN_NO(18) | 0)
+#define PINMUX_GPIO18__FUNC_DP_TX_HPD (MTK_PIN_NO(18) | 1)
+#define PINMUX_GPIO18__FUNC_SPI4_C_MI (MTK_PIN_NO(18) | 2)
+#define PINMUX_GPIO18__FUNC_SPI1_B_MI (MTK_PIN_NO(18) | 3)
+#define PINMUX_GPIO18__FUNC_GPS_L1_ELNA_EN (MTK_PIN_NO(18) | 4)
+#define PINMUX_GPIO18__FUNC_ANT_SEL10 (MTK_PIN_NO(18) | 5)
+#define PINMUX_GPIO18__FUNC_MD_INT0 (MTK_PIN_NO(18) | 6)
+
+#define PINMUX_GPIO19__FUNC_GPIO19 (MTK_PIN_NO(19) | 0)
+#define PINMUX_GPIO19__FUNC_SRCLKENAI1 (MTK_PIN_NO(19) | 1)
+#define PINMUX_GPIO19__FUNC_SPI4_C_MO (MTK_PIN_NO(19) | 2)
+#define PINMUX_GPIO19__FUNC_SPI1_B_MO (MTK_PIN_NO(19) | 3)
+#define PINMUX_GPIO19__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(19) | 4)
+#define PINMUX_GPIO19__FUNC_ANT_SEL11 (MTK_PIN_NO(19) | 5)
+#define PINMUX_GPIO19__FUNC_MD_INT1_C2K_UIM0_HOT_PLUG (MTK_PIN_NO(19) | 6)
+
+#define PINMUX_GPIO20__FUNC_GPIO20 (MTK_PIN_NO(20) | 0)
+#define PINMUX_GPIO20__FUNC_SRCLKENAI0 (MTK_PIN_NO(20) | 1)
+#define PINMUX_GPIO20__FUNC_SPI4_C_CLK (MTK_PIN_NO(20) | 2)
+#define PINMUX_GPIO20__FUNC_SPI1_B_CLK (MTK_PIN_NO(20) | 3)
+#define PINMUX_GPIO20__FUNC_PWM_3 (MTK_PIN_NO(20) | 4)
+#define PINMUX_GPIO20__FUNC_ANT_SEL12 (MTK_PIN_NO(20) | 5)
+#define PINMUX_GPIO20__FUNC_MD_INT2_C2K_UIM1_HOT_PLUG (MTK_PIN_NO(20) | 6)
+
+#define PINMUX_GPIO21__FUNC_GPIO21 (MTK_PIN_NO(21) | 0)
+#define PINMUX_GPIO21__FUNC_DP_TX_HPD (MTK_PIN_NO(21) | 1)
+#define PINMUX_GPIO21__FUNC_SPI4_C_CSB (MTK_PIN_NO(21) | 2)
+#define PINMUX_GPIO21__FUNC_SPI1_B_CSB (MTK_PIN_NO(21) | 3)
+#define PINMUX_GPIO21__FUNC_I2S7_MCK (MTK_PIN_NO(21) | 4)
+#define PINMUX_GPIO21__FUNC_I2S9_MCK (MTK_PIN_NO(21) | 5)
+#define PINMUX_GPIO21__FUNC_IDDIG (MTK_PIN_NO(21) | 6)
+
+#define PINMUX_GPIO22__FUNC_GPIO22 (MTK_PIN_NO(22) | 0)
+#define PINMUX_GPIO22__FUNC_LCM1_RST (MTK_PIN_NO(22) | 1)
+#define PINMUX_GPIO22__FUNC_SPI0_C_CLK (MTK_PIN_NO(22) | 2)
+#define PINMUX_GPIO22__FUNC_SPI7_B_CLK (MTK_PIN_NO(22) | 3)
+#define PINMUX_GPIO22__FUNC_I2S7_BCK (MTK_PIN_NO(22) | 4)
+#define PINMUX_GPIO22__FUNC_I2S9_BCK (MTK_PIN_NO(22) | 5)
+#define PINMUX_GPIO22__FUNC_SCL13 (MTK_PIN_NO(22) | 6)
+
+#define PINMUX_GPIO23__FUNC_GPIO23 (MTK_PIN_NO(23) | 0)
+#define PINMUX_GPIO23__FUNC_DSI1_TE (MTK_PIN_NO(23) | 1)
+#define PINMUX_GPIO23__FUNC_SPI0_C_CSB (MTK_PIN_NO(23) | 2)
+#define PINMUX_GPIO23__FUNC_SPI7_B_CSB (MTK_PIN_NO(23) | 3)
+#define PINMUX_GPIO23__FUNC_I2S7_LRCK (MTK_PIN_NO(23) | 4)
+#define PINMUX_GPIO23__FUNC_I2S9_LRCK (MTK_PIN_NO(23) | 5)
+#define PINMUX_GPIO23__FUNC_SDA13 (MTK_PIN_NO(23) | 6)
+
+#define PINMUX_GPIO24__FUNC_GPIO24 (MTK_PIN_NO(24) | 0)
+#define PINMUX_GPIO24__FUNC_SRCLKENAI1 (MTK_PIN_NO(24) | 1)
+#define PINMUX_GPIO24__FUNC_SPI0_C_MI (MTK_PIN_NO(24) | 2)
+#define PINMUX_GPIO24__FUNC_SPI7_B_MI (MTK_PIN_NO(24) | 3)
+#define PINMUX_GPIO24__FUNC_I2S6_DI (MTK_PIN_NO(24) | 4)
+#define PINMUX_GPIO24__FUNC_I2S8_DI (MTK_PIN_NO(24) | 5)
+#define PINMUX_GPIO24__FUNC_SCL_6306 (MTK_PIN_NO(24) | 6)
+
+#define PINMUX_GPIO25__FUNC_GPIO25 (MTK_PIN_NO(25) | 0)
+#define PINMUX_GPIO25__FUNC_SRCLKENAI0 (MTK_PIN_NO(25) | 1)
+#define PINMUX_GPIO25__FUNC_SPI0_C_MO (MTK_PIN_NO(25) | 2)
+#define PINMUX_GPIO25__FUNC_SPI7_B_MO (MTK_PIN_NO(25) | 3)
+#define PINMUX_GPIO25__FUNC_I2S7_DO (MTK_PIN_NO(25) | 4)
+#define PINMUX_GPIO25__FUNC_I2S9_DO (MTK_PIN_NO(25) | 5)
+#define PINMUX_GPIO25__FUNC_SDA_6306 (MTK_PIN_NO(25) | 6)
+
+#define PINMUX_GPIO26__FUNC_GPIO26 (MTK_PIN_NO(26) | 0)
+#define PINMUX_GPIO26__FUNC_PWM_2 (MTK_PIN_NO(26) | 1)
+#define PINMUX_GPIO26__FUNC_CLKM0 (MTK_PIN_NO(26) | 2)
+#define PINMUX_GPIO26__FUNC_USB_DRVVBUS (MTK_PIN_NO(26) | 3)
+
+#define PINMUX_GPIO27__FUNC_GPIO27 (MTK_PIN_NO(27) | 0)
+#define PINMUX_GPIO27__FUNC_PWM_3 (MTK_PIN_NO(27) | 1)
+#define PINMUX_GPIO27__FUNC_CLKM1 (MTK_PIN_NO(27) | 2)
+
+#define PINMUX_GPIO28__FUNC_GPIO28 (MTK_PIN_NO(28) | 0)
+#define PINMUX_GPIO28__FUNC_PWM_0 (MTK_PIN_NO(28) | 1)
+#define PINMUX_GPIO28__FUNC_CLKM2 (MTK_PIN_NO(28) | 2)
+
+#define PINMUX_GPIO29__FUNC_GPIO29 (MTK_PIN_NO(29) | 0)
+#define PINMUX_GPIO29__FUNC_PWM_1 (MTK_PIN_NO(29) | 1)
+#define PINMUX_GPIO29__FUNC_CLKM3 (MTK_PIN_NO(29) | 2)
+#define PINMUX_GPIO29__FUNC_DSI1_TE (MTK_PIN_NO(29) | 3)
+
+#define PINMUX_GPIO30__FUNC_GPIO30 (MTK_PIN_NO(30) | 0)
+#define PINMUX_GPIO30__FUNC_PWM_2 (MTK_PIN_NO(30) | 1)
+#define PINMUX_GPIO30__FUNC_CLKM0 (MTK_PIN_NO(30) | 2)
+#define PINMUX_GPIO30__FUNC_LCM1_RST (MTK_PIN_NO(30) | 3)
+
+#define PINMUX_GPIO31__FUNC_GPIO31 (MTK_PIN_NO(31) | 0)
+#define PINMUX_GPIO31__FUNC_I2S3_MCK (MTK_PIN_NO(31) | 1)
+#define PINMUX_GPIO31__FUNC_I2S1_MCK (MTK_PIN_NO(31) | 2)
+#define PINMUX_GPIO31__FUNC_I2S5_MCK (MTK_PIN_NO(31) | 3)
+#define PINMUX_GPIO31__FUNC_SRCLKENAI0 (MTK_PIN_NO(31) | 4)
+#define PINMUX_GPIO31__FUNC_I2S0_MCK (MTK_PIN_NO(31) | 5)
+
+#define PINMUX_GPIO32__FUNC_GPIO32 (MTK_PIN_NO(32) | 0)
+#define PINMUX_GPIO32__FUNC_I2S3_BCK (MTK_PIN_NO(32) | 1)
+#define PINMUX_GPIO32__FUNC_I2S1_BCK (MTK_PIN_NO(32) | 2)
+#define PINMUX_GPIO32__FUNC_I2S5_BCK (MTK_PIN_NO(32) | 3)
+#define PINMUX_GPIO32__FUNC_PCM0_CLK (MTK_PIN_NO(32) | 4)
+#define PINMUX_GPIO32__FUNC_I2S0_BCK (MTK_PIN_NO(32) | 5)
+
+#define PINMUX_GPIO33__FUNC_GPIO33 (MTK_PIN_NO(33) | 0)
+#define PINMUX_GPIO33__FUNC_I2S3_LRCK (MTK_PIN_NO(33) | 1)
+#define PINMUX_GPIO33__FUNC_I2S1_LRCK (MTK_PIN_NO(33) | 2)
+#define PINMUX_GPIO33__FUNC_I2S5_LRCK (MTK_PIN_NO(33) | 3)
+#define PINMUX_GPIO33__FUNC_PCM0_SYNC (MTK_PIN_NO(33) | 4)
+#define PINMUX_GPIO33__FUNC_I2S0_LRCK (MTK_PIN_NO(33) | 5)
+
+#define PINMUX_GPIO34__FUNC_GPIO34 (MTK_PIN_NO(34) | 0)
+#define PINMUX_GPIO34__FUNC_I2S0_DI (MTK_PIN_NO(34) | 1)
+#define PINMUX_GPIO34__FUNC_I2S2_DI (MTK_PIN_NO(34) | 2)
+#define PINMUX_GPIO34__FUNC_I2S2_DI2 (MTK_PIN_NO(34) | 3)
+#define PINMUX_GPIO34__FUNC_PCM0_DI (MTK_PIN_NO(34) | 4)
+#define PINMUX_GPIO34__FUNC_I2S0_DI_A (MTK_PIN_NO(34) | 5)
+
+#define PINMUX_GPIO35__FUNC_GPIO35 (MTK_PIN_NO(35) | 0)
+#define PINMUX_GPIO35__FUNC_I2S3_DO (MTK_PIN_NO(35) | 1)
+#define PINMUX_GPIO35__FUNC_I2S1_DO (MTK_PIN_NO(35) | 2)
+#define PINMUX_GPIO35__FUNC_I2S5_DO (MTK_PIN_NO(35) | 3)
+#define PINMUX_GPIO35__FUNC_PCM0_DO (MTK_PIN_NO(35) | 4)
+
+#define PINMUX_GPIO36__FUNC_GPIO36 (MTK_PIN_NO(36) | 0)
+#define PINMUX_GPIO36__FUNC_SPI5_A_CLK (MTK_PIN_NO(36) | 1)
+#define PINMUX_GPIO36__FUNC_DMIC1_CLK (MTK_PIN_NO(36) | 2)
+#define PINMUX_GPIO36__FUNC_IDDIG (MTK_PIN_NO(36) | 3)
+#define PINMUX_GPIO36__FUNC_MD_URXD0 (MTK_PIN_NO(36) | 4)
+#define PINMUX_GPIO36__FUNC_UCTS0 (MTK_PIN_NO(36) | 5)
+#define PINMUX_GPIO36__FUNC_URXD1 (MTK_PIN_NO(36) | 6)
+#define PINMUX_GPIO36__FUNC_DBG_MON_A0 (MTK_PIN_NO(36) | 7)
+
+#define PINMUX_GPIO37__FUNC_GPIO37 (MTK_PIN_NO(37) | 0)
+#define PINMUX_GPIO37__FUNC_SPI5_A_CSB (MTK_PIN_NO(37) | 1)
+#define PINMUX_GPIO37__FUNC_DMIC1_DAT (MTK_PIN_NO(37) | 2)
+#define PINMUX_GPIO37__FUNC_USB_DRVVBUS (MTK_PIN_NO(37) | 3)
+#define PINMUX_GPIO37__FUNC_MD_UTXD0 (MTK_PIN_NO(37) | 4)
+#define PINMUX_GPIO37__FUNC_URTS0 (MTK_PIN_NO(37) | 5)
+#define PINMUX_GPIO37__FUNC_UTXD1 (MTK_PIN_NO(37) | 6)
+#define PINMUX_GPIO37__FUNC_DBG_MON_A1 (MTK_PIN_NO(37) | 7)
+
+#define PINMUX_GPIO38__FUNC_GPIO38 (MTK_PIN_NO(38) | 0)
+#define PINMUX_GPIO38__FUNC_SPI5_A_MI (MTK_PIN_NO(38) | 1)
+#define PINMUX_GPIO38__FUNC_DMIC_CLK (MTK_PIN_NO(38) | 2)
+#define PINMUX_GPIO38__FUNC_DSI1_TE (MTK_PIN_NO(38) | 3)
+#define PINMUX_GPIO38__FUNC_MD_URXD1 (MTK_PIN_NO(38) | 4)
+#define PINMUX_GPIO38__FUNC_URXD0 (MTK_PIN_NO(38) | 5)
+#define PINMUX_GPIO38__FUNC_UCTS1 (MTK_PIN_NO(38) | 6)
+#define PINMUX_GPIO38__FUNC_DBG_MON_A2 (MTK_PIN_NO(38) | 7)
+
+#define PINMUX_GPIO39__FUNC_GPIO39 (MTK_PIN_NO(39) | 0)
+#define PINMUX_GPIO39__FUNC_SPI5_A_MO (MTK_PIN_NO(39) | 1)
+#define PINMUX_GPIO39__FUNC_DMIC_DAT (MTK_PIN_NO(39) | 2)
+#define PINMUX_GPIO39__FUNC_LCM1_RST (MTK_PIN_NO(39) | 3)
+#define PINMUX_GPIO39__FUNC_MD_UTXD1 (MTK_PIN_NO(39) | 4)
+#define PINMUX_GPIO39__FUNC_UTXD0 (MTK_PIN_NO(39) | 5)
+#define PINMUX_GPIO39__FUNC_URTS1 (MTK_PIN_NO(39) | 6)
+#define PINMUX_GPIO39__FUNC_DBG_MON_A3 (MTK_PIN_NO(39) | 7)
+
+#define PINMUX_GPIO40__FUNC_GPIO40 (MTK_PIN_NO(40) | 0)
+#define PINMUX_GPIO40__FUNC_DISP_PWM (MTK_PIN_NO(40) | 1)
+#define PINMUX_GPIO40__FUNC_DBG_MON_A6 (MTK_PIN_NO(40) | 7)
+
+#define PINMUX_GPIO41__FUNC_GPIO41 (MTK_PIN_NO(41) | 0)
+#define PINMUX_GPIO41__FUNC_DSI_TE (MTK_PIN_NO(41) | 1)
+
+#define PINMUX_GPIO42__FUNC_GPIO42 (MTK_PIN_NO(42) | 0)
+#define PINMUX_GPIO42__FUNC_LCM_RST (MTK_PIN_NO(42) | 1)
+
+#define PINMUX_GPIO43__FUNC_GPIO43 (MTK_PIN_NO(43) | 0)
+#define PINMUX_GPIO43__FUNC_MD_INT1_C2K_UIM0_HOT_PLUG (MTK_PIN_NO(43) | 1)
+#define PINMUX_GPIO43__FUNC_MD_INT2_C2K_UIM1_HOT_PLUG (MTK_PIN_NO(43) | 2)
+#define PINMUX_GPIO43__FUNC_SCL_6306 (MTK_PIN_NO(43) | 3)
+#define PINMUX_GPIO43__FUNC_ADSP_URXD0 (MTK_PIN_NO(43) | 4)
+#define PINMUX_GPIO43__FUNC_PTA_RXD (MTK_PIN_NO(43) | 5)
+#define PINMUX_GPIO43__FUNC_SSPM_URXD_AO (MTK_PIN_NO(43) | 6)
+#define PINMUX_GPIO43__FUNC_DBG_MON_A4 (MTK_PIN_NO(43) | 7)
+
+#define PINMUX_GPIO44__FUNC_GPIO44 (MTK_PIN_NO(44) | 0)
+#define PINMUX_GPIO44__FUNC_MD_INT2_C2K_UIM1_HOT_PLUG (MTK_PIN_NO(44) | 1)
+#define PINMUX_GPIO44__FUNC_MD_INT1_C2K_UIM0_HOT_PLUG (MTK_PIN_NO(44) | 2)
+#define PINMUX_GPIO44__FUNC_SDA_6306 (MTK_PIN_NO(44) | 3)
+#define PINMUX_GPIO44__FUNC_ADSP_UTXD0 (MTK_PIN_NO(44) | 4)
+#define PINMUX_GPIO44__FUNC_PTA_TXD (MTK_PIN_NO(44) | 5)
+#define PINMUX_GPIO44__FUNC_SSPM_UTXD_AO (MTK_PIN_NO(44) | 6)
+#define PINMUX_GPIO44__FUNC_DBG_MON_A5 (MTK_PIN_NO(44) | 7)
+
+#define PINMUX_GPIO45__FUNC_GPIO45 (MTK_PIN_NO(45) | 0)
+#define PINMUX_GPIO45__FUNC_MD1_SIM2_SCLK (MTK_PIN_NO(45) | 1)
+#define PINMUX_GPIO45__FUNC_MD1_SIM1_SCLK (MTK_PIN_NO(45) | 2)
+#define PINMUX_GPIO45__FUNC_MCUPM_JTAG_TDI (MTK_PIN_NO(45) | 3)
+#define PINMUX_GPIO45__FUNC_APU_JTAG_TDI (MTK_PIN_NO(45) | 4)
+#define PINMUX_GPIO45__FUNC_CCU_JTAG_TDI (MTK_PIN_NO(45) | 5)
+#define PINMUX_GPIO45__FUNC_LVTS_SCK (MTK_PIN_NO(45) | 6)
+
+#define PINMUX_GPIO46__FUNC_GPIO46 (MTK_PIN_NO(46) | 0)
+#define PINMUX_GPIO46__FUNC_MD1_SIM2_SRST (MTK_PIN_NO(46) | 1)
+#define PINMUX_GPIO46__FUNC_MD1_SIM1_SRST (MTK_PIN_NO(46) | 2)
+#define PINMUX_GPIO46__FUNC_MCUPM_JTAG_TMS (MTK_PIN_NO(46) | 3)
+#define PINMUX_GPIO46__FUNC_APU_JTAG_TMS (MTK_PIN_NO(46) | 4)
+#define PINMUX_GPIO46__FUNC_CCU_JTAG_TMS (MTK_PIN_NO(46) | 5)
+#define PINMUX_GPIO46__FUNC_LVTS_SDI (MTK_PIN_NO(46) | 6)
+
+#define PINMUX_GPIO47__FUNC_GPIO47 (MTK_PIN_NO(47) | 0)
+#define PINMUX_GPIO47__FUNC_MD1_SIM2_SIO (MTK_PIN_NO(47) | 1)
+#define PINMUX_GPIO47__FUNC_MD1_SIM1_SIO (MTK_PIN_NO(47) | 2)
+#define PINMUX_GPIO47__FUNC_MCUPM_JTAG_TDO (MTK_PIN_NO(47) | 3)
+#define PINMUX_GPIO47__FUNC_APU_JTAG_TDO (MTK_PIN_NO(47) | 4)
+#define PINMUX_GPIO47__FUNC_CCU_JTAG_TDO (MTK_PIN_NO(47) | 5)
+#define PINMUX_GPIO47__FUNC_LVTS_SCF (MTK_PIN_NO(47) | 6)
+
+#define PINMUX_GPIO48__FUNC_GPIO48 (MTK_PIN_NO(48) | 0)
+#define PINMUX_GPIO48__FUNC_MD1_SIM1_SIO (MTK_PIN_NO(48) | 1)
+#define PINMUX_GPIO48__FUNC_MD1_SIM2_SIO (MTK_PIN_NO(48) | 2)
+#define PINMUX_GPIO48__FUNC_MCUPM_JTAG_TRSTN (MTK_PIN_NO(48) | 3)
+#define PINMUX_GPIO48__FUNC_APU_JTAG_TRST (MTK_PIN_NO(48) | 4)
+#define PINMUX_GPIO48__FUNC_CCU_JTAG_TRST (MTK_PIN_NO(48) | 5)
+#define PINMUX_GPIO48__FUNC_LVTS_FOUT (MTK_PIN_NO(48) | 6)
+
+#define PINMUX_GPIO49__FUNC_GPIO49 (MTK_PIN_NO(49) | 0)
+#define PINMUX_GPIO49__FUNC_MD1_SIM1_SRST (MTK_PIN_NO(49) | 1)
+#define PINMUX_GPIO49__FUNC_MD1_SIM2_SRST (MTK_PIN_NO(49) | 2)
+#define PINMUX_GPIO49__FUNC_MCUPM_JTAG_TCK (MTK_PIN_NO(49) | 3)
+#define PINMUX_GPIO49__FUNC_APU_JTAG_TCK (MTK_PIN_NO(49) | 4)
+#define PINMUX_GPIO49__FUNC_CCU_JTAG_TCK (MTK_PIN_NO(49) | 5)
+#define PINMUX_GPIO49__FUNC_LVTS_SDO (MTK_PIN_NO(49) | 6)
+
+#define PINMUX_GPIO50__FUNC_GPIO50 (MTK_PIN_NO(50) | 0)
+#define PINMUX_GPIO50__FUNC_MD1_SIM1_SCLK (MTK_PIN_NO(50) | 1)
+#define PINMUX_GPIO50__FUNC_MD1_SIM2_SCLK (MTK_PIN_NO(50) | 2)
+#define PINMUX_GPIO50__FUNC_LVTS_26M (MTK_PIN_NO(50) | 6)
+
+#define PINMUX_GPIO51__FUNC_GPIO51 (MTK_PIN_NO(51) | 0)
+#define PINMUX_GPIO51__FUNC_MSDC1_CLK (MTK_PIN_NO(51) | 1)
+#define PINMUX_GPIO51__FUNC_PCM1_CLK (MTK_PIN_NO(51) | 2)
+#define PINMUX_GPIO51__FUNC_VPU_UDI_TCK (MTK_PIN_NO(51) | 3)
+#define PINMUX_GPIO51__FUNC_UDI_TCK (MTK_PIN_NO(51) | 4)
+#define PINMUX_GPIO51__FUNC_IPU_JTAG_TCK (MTK_PIN_NO(51) | 5)
+#define PINMUX_GPIO51__FUNC_SSPM_JTAG_TCK (MTK_PIN_NO(51) | 6)
+#define PINMUX_GPIO51__FUNC_JTCK_SEL3 (MTK_PIN_NO(51) | 7)
+
+#define PINMUX_GPIO52__FUNC_GPIO52 (MTK_PIN_NO(52) | 0)
+#define PINMUX_GPIO52__FUNC_MSDC1_CMD (MTK_PIN_NO(52) | 1)
+#define PINMUX_GPIO52__FUNC_PCM1_SYNC (MTK_PIN_NO(52) | 2)
+#define PINMUX_GPIO52__FUNC_VPU_UDI_TMS (MTK_PIN_NO(52) | 3)
+#define PINMUX_GPIO52__FUNC_UDI_TMS (MTK_PIN_NO(52) | 4)
+#define PINMUX_GPIO52__FUNC_IPU_JTAG_TMS (MTK_PIN_NO(52) | 5)
+#define PINMUX_GPIO52__FUNC_SSPM_JTAG_TMS (MTK_PIN_NO(52) | 6)
+#define PINMUX_GPIO52__FUNC_JTMS_SEL3 (MTK_PIN_NO(52) | 7)
+
+#define PINMUX_GPIO53__FUNC_GPIO53 (MTK_PIN_NO(53) | 0)
+#define PINMUX_GPIO53__FUNC_MSDC1_DAT3 (MTK_PIN_NO(53) | 1)
+#define PINMUX_GPIO53__FUNC_PCM1_DI (MTK_PIN_NO(53) | 2)
+
+#define PINMUX_GPIO54__FUNC_GPIO54 (MTK_PIN_NO(54) | 0)
+#define PINMUX_GPIO54__FUNC_MSDC1_DAT0 (MTK_PIN_NO(54) | 1)
+#define PINMUX_GPIO54__FUNC_PCM1_DO0 (MTK_PIN_NO(54) | 2)
+#define PINMUX_GPIO54__FUNC_VPU_UDI_TDI (MTK_PIN_NO(54) | 3)
+#define PINMUX_GPIO54__FUNC_UDI_TDI (MTK_PIN_NO(54) | 4)
+#define PINMUX_GPIO54__FUNC_IPU_JTAG_TDI (MTK_PIN_NO(54) | 5)
+#define PINMUX_GPIO54__FUNC_SSPM_JTAG_TDI (MTK_PIN_NO(54) | 6)
+#define PINMUX_GPIO54__FUNC_JTDI_SEL3 (MTK_PIN_NO(54) | 7)
+
+#define PINMUX_GPIO55__FUNC_GPIO55 (MTK_PIN_NO(55) | 0)
+#define PINMUX_GPIO55__FUNC_MSDC1_DAT2 (MTK_PIN_NO(55) | 1)
+#define PINMUX_GPIO55__FUNC_PCM1_DO2 (MTK_PIN_NO(55) | 2)
+#define PINMUX_GPIO55__FUNC_VPU_UDI_NTRST (MTK_PIN_NO(55) | 3)
+#define PINMUX_GPIO55__FUNC_UDI_NTRST (MTK_PIN_NO(55) | 4)
+#define PINMUX_GPIO55__FUNC_IPU_JTAG_TRST (MTK_PIN_NO(55) | 5)
+#define PINMUX_GPIO55__FUNC_SSPM_JTAG_TRSTN (MTK_PIN_NO(55) | 6)
+#define PINMUX_GPIO55__FUNC_JTRSTN_SEL3 (MTK_PIN_NO(55) | 7)
+
+#define PINMUX_GPIO56__FUNC_GPIO56 (MTK_PIN_NO(56) | 0)
+#define PINMUX_GPIO56__FUNC_MSDC1_DAT1 (MTK_PIN_NO(56) | 1)
+#define PINMUX_GPIO56__FUNC_PCM1_DO1 (MTK_PIN_NO(56) | 2)
+#define PINMUX_GPIO56__FUNC_VPU_UDI_TDO (MTK_PIN_NO(56) | 3)
+#define PINMUX_GPIO56__FUNC_UDI_TDO (MTK_PIN_NO(56) | 4)
+#define PINMUX_GPIO56__FUNC_IPU_JTAG_TDO (MTK_PIN_NO(56) | 5)
+#define PINMUX_GPIO56__FUNC_SSPM_JTAG_TDO (MTK_PIN_NO(56) | 6)
+#define PINMUX_GPIO56__FUNC_JTDO_SEL3 (MTK_PIN_NO(56) | 7)
+
+#define PINMUX_GPIO57__FUNC_GPIO57 (MTK_PIN_NO(57) | 0)
+#define PINMUX_GPIO57__FUNC_MIPI2_D_SCLK (MTK_PIN_NO(57) | 1)
+#define PINMUX_GPIO57__FUNC_DBG_MON_A14 (MTK_PIN_NO(57) | 7)
+
+#define PINMUX_GPIO58__FUNC_GPIO58 (MTK_PIN_NO(58) | 0)
+#define PINMUX_GPIO58__FUNC_MIPI2_D_SDATA (MTK_PIN_NO(58) | 1)
+#define PINMUX_GPIO58__FUNC_DBG_MON_A15 (MTK_PIN_NO(58) | 7)
+
+#define PINMUX_GPIO59__FUNC_GPIO59 (MTK_PIN_NO(59) | 0)
+#define PINMUX_GPIO59__FUNC_MIPI_M_SCLK (MTK_PIN_NO(59) | 1)
+#define PINMUX_GPIO59__FUNC_DBG_MON_A17 (MTK_PIN_NO(59) | 7)
+
+#define PINMUX_GPIO60__FUNC_GPIO60 (MTK_PIN_NO(60) | 0)
+#define PINMUX_GPIO60__FUNC_MIPI_M_SDATA (MTK_PIN_NO(60) | 1)
+#define PINMUX_GPIO60__FUNC_DBG_MON_A18 (MTK_PIN_NO(60) | 7)
+
+#define PINMUX_GPIO61__FUNC_GPIO61 (MTK_PIN_NO(61) | 0)
+#define PINMUX_GPIO61__FUNC_MD_UCNT_A_TGL (MTK_PIN_NO(61) | 1)
+#define PINMUX_GPIO61__FUNC_DBG_MON_A16 (MTK_PIN_NO(61) | 7)
+
+#define PINMUX_GPIO62__FUNC_GPIO62 (MTK_PIN_NO(62) | 0)
+#define PINMUX_GPIO62__FUNC_DIGRF_IRQ (MTK_PIN_NO(62) | 1)
+
+#define PINMUX_GPIO63__FUNC_GPIO63 (MTK_PIN_NO(63) | 0)
+#define PINMUX_GPIO63__FUNC_BPI_BUS0 (MTK_PIN_NO(63) | 1)
+#define PINMUX_GPIO63__FUNC_DBG_MON_A19 (MTK_PIN_NO(63) | 7)
+
+#define PINMUX_GPIO64__FUNC_GPIO64 (MTK_PIN_NO(64) | 0)
+#define PINMUX_GPIO64__FUNC_BPI_BUS1 (MTK_PIN_NO(64) | 1)
+#define PINMUX_GPIO64__FUNC_DBG_MON_A20 (MTK_PIN_NO(64) | 7)
+
+#define PINMUX_GPIO65__FUNC_GPIO65 (MTK_PIN_NO(65) | 0)
+#define PINMUX_GPIO65__FUNC_BPI_BUS2 (MTK_PIN_NO(65) | 1)
+#define PINMUX_GPIO65__FUNC_DBG_MON_A21 (MTK_PIN_NO(65) | 7)
+
+#define PINMUX_GPIO66__FUNC_GPIO66 (MTK_PIN_NO(66) | 0)
+#define PINMUX_GPIO66__FUNC_BPI_BUS3 (MTK_PIN_NO(66) | 1)
+#define PINMUX_GPIO66__FUNC_DBG_MON_A22 (MTK_PIN_NO(66) | 7)
+
+#define PINMUX_GPIO67__FUNC_GPIO67 (MTK_PIN_NO(67) | 0)
+#define PINMUX_GPIO67__FUNC_BPI_BUS4 (MTK_PIN_NO(67) | 1)
+
+#define PINMUX_GPIO68__FUNC_GPIO68 (MTK_PIN_NO(68) | 0)
+#define PINMUX_GPIO68__FUNC_BPI_BUS5 (MTK_PIN_NO(68) | 1)
+
+#define PINMUX_GPIO69__FUNC_GPIO69 (MTK_PIN_NO(69) | 0)
+#define PINMUX_GPIO69__FUNC_BPI_BUS6 (MTK_PIN_NO(69) | 1)
+#define PINMUX_GPIO69__FUNC_CONN_BPI_BUS6 (MTK_PIN_NO(69) | 2)
+
+#define PINMUX_GPIO70__FUNC_GPIO70 (MTK_PIN_NO(70) | 0)
+#define PINMUX_GPIO70__FUNC_BPI_BUS7 (MTK_PIN_NO(70) | 1)
+#define PINMUX_GPIO70__FUNC_CONN_BPI_BUS7 (MTK_PIN_NO(70) | 2)
+
+#define PINMUX_GPIO71__FUNC_GPIO71 (MTK_PIN_NO(71) | 0)
+#define PINMUX_GPIO71__FUNC_BPI_BUS8 (MTK_PIN_NO(71) | 1)
+#define PINMUX_GPIO71__FUNC_CONN_BPI_BUS8 (MTK_PIN_NO(71) | 2)
+
+#define PINMUX_GPIO72__FUNC_GPIO72 (MTK_PIN_NO(72) | 0)
+#define PINMUX_GPIO72__FUNC_BPI_BUS9 (MTK_PIN_NO(72) | 1)
+#define PINMUX_GPIO72__FUNC_CONN_BPI_BUS9 (MTK_PIN_NO(72) | 2)
+
+#define PINMUX_GPIO73__FUNC_GPIO73 (MTK_PIN_NO(73) | 0)
+#define PINMUX_GPIO73__FUNC_BPI_BUS10 (MTK_PIN_NO(73) | 1)
+#define PINMUX_GPIO73__FUNC_CONN_BPI_BUS10 (MTK_PIN_NO(73) | 2)
+
+#define PINMUX_GPIO74__FUNC_GPIO74 (MTK_PIN_NO(74) | 0)
+#define PINMUX_GPIO74__FUNC_BPI_BUS11_OLAT0 (MTK_PIN_NO(74) | 1)
+#define PINMUX_GPIO74__FUNC_CONN_BPI_BUS11_OLAT0 (MTK_PIN_NO(74) | 2)
+
+#define PINMUX_GPIO75__FUNC_GPIO75 (MTK_PIN_NO(75) | 0)
+#define PINMUX_GPIO75__FUNC_BPI_BUS12_OLAT1 (MTK_PIN_NO(75) | 1)
+#define PINMUX_GPIO75__FUNC_CONN_BPI_BUS12_OLAT1 (MTK_PIN_NO(75) | 2)
+
+#define PINMUX_GPIO76__FUNC_GPIO76 (MTK_PIN_NO(76) | 0)
+#define PINMUX_GPIO76__FUNC_BPI_BUS13_OLAT2 (MTK_PIN_NO(76) | 1)
+#define PINMUX_GPIO76__FUNC_CONN_BPI_BUS13_OLAT2 (MTK_PIN_NO(76) | 2)
+
+#define PINMUX_GPIO77__FUNC_GPIO77 (MTK_PIN_NO(77) | 0)
+#define PINMUX_GPIO77__FUNC_BPI_BUS14_OLAT3 (MTK_PIN_NO(77) | 1)
+#define PINMUX_GPIO77__FUNC_CONN_BPI_BUS14_OLAT3 (MTK_PIN_NO(77) | 2)
+
+#define PINMUX_GPIO78__FUNC_GPIO78 (MTK_PIN_NO(78) | 0)
+#define PINMUX_GPIO78__FUNC_BPI_BUS15_OLAT4 (MTK_PIN_NO(78) | 1)
+#define PINMUX_GPIO78__FUNC_CONN_BPI_BUS15_OLAT4 (MTK_PIN_NO(78) | 2)
+#define PINMUX_GPIO78__FUNC_DBG_MON_A7 (MTK_PIN_NO(78) | 7)
+
+#define PINMUX_GPIO79__FUNC_GPIO79 (MTK_PIN_NO(79) | 0)
+#define PINMUX_GPIO79__FUNC_BPI_BUS16_OLAT5 (MTK_PIN_NO(79) | 1)
+#define PINMUX_GPIO79__FUNC_CONN_BPI_BUS16_OLAT5 (MTK_PIN_NO(79) | 2)
+#define PINMUX_GPIO79__FUNC_DBG_MON_A8 (MTK_PIN_NO(79) | 7)
+
+#define PINMUX_GPIO80__FUNC_GPIO80 (MTK_PIN_NO(80) | 0)
+#define PINMUX_GPIO80__FUNC_BPI_BUS17_ANT0 (MTK_PIN_NO(80) | 1)
+#define PINMUX_GPIO80__FUNC_CONN_BPI_BUS17_ANT0 (MTK_PIN_NO(80) | 2)
+#define PINMUX_GPIO80__FUNC_DBG_MON_A9 (MTK_PIN_NO(80) | 7)
+
+#define PINMUX_GPIO81__FUNC_GPIO81 (MTK_PIN_NO(81) | 0)
+#define PINMUX_GPIO81__FUNC_BPI_BUS18_ANT1 (MTK_PIN_NO(81) | 1)
+#define PINMUX_GPIO81__FUNC_CONN_BPI_BUS18_ANT1 (MTK_PIN_NO(81) | 2)
+#define PINMUX_GPIO81__FUNC_DBG_MON_A10 (MTK_PIN_NO(81) | 7)
+
+#define PINMUX_GPIO82__FUNC_GPIO82 (MTK_PIN_NO(82) | 0)
+#define PINMUX_GPIO82__FUNC_BPI_BUS19_ANT2 (MTK_PIN_NO(82) | 1)
+#define PINMUX_GPIO82__FUNC_CONN_BPI_BUS19_ANT2 (MTK_PIN_NO(82) | 2)
+#define PINMUX_GPIO82__FUNC_DBG_MON_A11 (MTK_PIN_NO(82) | 7)
+
+#define PINMUX_GPIO83__FUNC_GPIO83 (MTK_PIN_NO(83) | 0)
+#define PINMUX_GPIO83__FUNC_BPI_BUS20_ANT3 (MTK_PIN_NO(83) | 1)
+#define PINMUX_GPIO83__FUNC_CONN_BPI_BUS20_ANT3 (MTK_PIN_NO(83) | 2)
+#define PINMUX_GPIO83__FUNC_DBG_MON_A12 (MTK_PIN_NO(83) | 7)
+
+#define PINMUX_GPIO84__FUNC_GPIO84 (MTK_PIN_NO(84) | 0)
+#define PINMUX_GPIO84__FUNC_BPI_BUS21_ANT4 (MTK_PIN_NO(84) | 1)
+#define PINMUX_GPIO84__FUNC_CONN_BPI_BUS21_ANT4 (MTK_PIN_NO(84) | 2)
+#define PINMUX_GPIO84__FUNC_DBG_MON_A13 (MTK_PIN_NO(84) | 7)
+
+#define PINMUX_GPIO85__FUNC_GPIO85 (MTK_PIN_NO(85) | 0)
+#define PINMUX_GPIO85__FUNC_MIPI1_D_SCLK (MTK_PIN_NO(85) | 1)
+#define PINMUX_GPIO85__FUNC_CONN_MIPI1_SCLK (MTK_PIN_NO(85) | 2)
+
+#define PINMUX_GPIO86__FUNC_GPIO86 (MTK_PIN_NO(86) | 0)
+#define PINMUX_GPIO86__FUNC_MIPI1_D_SDATA (MTK_PIN_NO(86) | 1)
+#define PINMUX_GPIO86__FUNC_CONN_MIPI1_SDATA (MTK_PIN_NO(86) | 2)
+
+#define PINMUX_GPIO87__FUNC_GPIO87 (MTK_PIN_NO(87) | 0)
+#define PINMUX_GPIO87__FUNC_MIPI0_D_SCLK (MTK_PIN_NO(87) | 1)
+#define PINMUX_GPIO87__FUNC_CONN_MIPI0_SCLK (MTK_PIN_NO(87) | 2)
+
+#define PINMUX_GPIO88__FUNC_GPIO88 (MTK_PIN_NO(88) | 0)
+#define PINMUX_GPIO88__FUNC_MIPI0_D_SDATA (MTK_PIN_NO(88) | 1)
+#define PINMUX_GPIO88__FUNC_CONN_MIPI0_SDATA (MTK_PIN_NO(88) | 2)
+
+#define PINMUX_GPIO89__FUNC_GPIO89 (MTK_PIN_NO(89) | 0)
+#define PINMUX_GPIO89__FUNC_SPMI_SCL (MTK_PIN_NO(89) | 1)
+#define PINMUX_GPIO89__FUNC_SCL10 (MTK_PIN_NO(89) | 2)
+
+#define PINMUX_GPIO90__FUNC_GPIO90 (MTK_PIN_NO(90) | 0)
+#define PINMUX_GPIO90__FUNC_SPMI_SDA (MTK_PIN_NO(90) | 1)
+#define PINMUX_GPIO90__FUNC_SDA10 (MTK_PIN_NO(90) | 2)
+
+#define PINMUX_GPIO91__FUNC_GPIO91 (MTK_PIN_NO(91) | 0)
+#define PINMUX_GPIO91__FUNC_AP_GOOD (MTK_PIN_NO(91) | 1)
+
+#define PINMUX_GPIO92__FUNC_GPIO92 (MTK_PIN_NO(92) | 0)
+#define PINMUX_GPIO92__FUNC_URXD0 (MTK_PIN_NO(92) | 1)
+#define PINMUX_GPIO92__FUNC_MD_URXD0 (MTK_PIN_NO(92) | 2)
+#define PINMUX_GPIO92__FUNC_MD_URXD1 (MTK_PIN_NO(92) | 3)
+#define PINMUX_GPIO92__FUNC_SSPM_URXD_AO (MTK_PIN_NO(92) | 4)
+#define PINMUX_GPIO92__FUNC_CONN_BGF_UART0_RXD (MTK_PIN_NO(92) | 5)
+
+#define PINMUX_GPIO93__FUNC_GPIO93 (MTK_PIN_NO(93) | 0)
+#define PINMUX_GPIO93__FUNC_UTXD0 (MTK_PIN_NO(93) | 1)
+#define PINMUX_GPIO93__FUNC_MD_UTXD0 (MTK_PIN_NO(93) | 2)
+#define PINMUX_GPIO93__FUNC_MD_UTXD1 (MTK_PIN_NO(93) | 3)
+#define PINMUX_GPIO93__FUNC_SSPM_UTXD_AO (MTK_PIN_NO(93) | 4)
+#define PINMUX_GPIO93__FUNC_CONN_BGF_UART0_TXD (MTK_PIN_NO(93) | 5)
+#define PINMUX_GPIO93__FUNC_WIFI_TXD (MTK_PIN_NO(93) | 6)
+
+#define PINMUX_GPIO94__FUNC_GPIO94 (MTK_PIN_NO(94) | 0)
+#define PINMUX_GPIO94__FUNC_URXD1 (MTK_PIN_NO(94) | 1)
+#define PINMUX_GPIO94__FUNC_ADSP_URXD0 (MTK_PIN_NO(94) | 2)
+#define PINMUX_GPIO94__FUNC_MD32_0_RXD (MTK_PIN_NO(94) | 3)
+#define PINMUX_GPIO94__FUNC_SSPM_URXD_AO (MTK_PIN_NO(94) | 4)
+#define PINMUX_GPIO94__FUNC_TP_URXD1_AO (MTK_PIN_NO(94) | 5)
+#define PINMUX_GPIO94__FUNC_TP_URXD2_AO (MTK_PIN_NO(94) | 6)
+#define PINMUX_GPIO94__FUNC_MBISTREADEN_TRIGGER (MTK_PIN_NO(94) | 7)
+
+#define PINMUX_GPIO95__FUNC_GPIO95 (MTK_PIN_NO(95) | 0)
+#define PINMUX_GPIO95__FUNC_UTXD1 (MTK_PIN_NO(95) | 1)
+#define PINMUX_GPIO95__FUNC_ADSP_UTXD0 (MTK_PIN_NO(95) | 2)
+#define PINMUX_GPIO95__FUNC_MD32_0_TXD (MTK_PIN_NO(95) | 3)
+#define PINMUX_GPIO95__FUNC_SSPM_UTXD_AO (MTK_PIN_NO(95) | 4)
+#define PINMUX_GPIO95__FUNC_TP_UTXD1_AO (MTK_PIN_NO(95) | 5)
+#define PINMUX_GPIO95__FUNC_TP_UTXD2_AO (MTK_PIN_NO(95) | 6)
+#define PINMUX_GPIO95__FUNC_MBISTWRITEEN_TRIGGER (MTK_PIN_NO(95) | 7)
+
+#define PINMUX_GPIO96__FUNC_GPIO96 (MTK_PIN_NO(96) | 0)
+#define PINMUX_GPIO96__FUNC_TDM_LRCK (MTK_PIN_NO(96) | 1)
+#define PINMUX_GPIO96__FUNC_I2S7_LRCK (MTK_PIN_NO(96) | 2)
+#define PINMUX_GPIO96__FUNC_I2S9_LRCK (MTK_PIN_NO(96) | 3)
+#define PINMUX_GPIO96__FUNC_SPI4_A_CLK (MTK_PIN_NO(96) | 4)
+#define PINMUX_GPIO96__FUNC_ADSP_JTAG0_TDI (MTK_PIN_NO(96) | 5)
+#define PINMUX_GPIO96__FUNC_CONN_BGF_DSP_L1_JDI (MTK_PIN_NO(96) | 6)
+#define PINMUX_GPIO96__FUNC_IO_JTAG_TDI (MTK_PIN_NO(96) | 7)
+
+#define PINMUX_GPIO97__FUNC_GPIO97 (MTK_PIN_NO(97) | 0)
+#define PINMUX_GPIO97__FUNC_TDM_BCK (MTK_PIN_NO(97) | 1)
+#define PINMUX_GPIO97__FUNC_I2S7_BCK (MTK_PIN_NO(97) | 2)
+#define PINMUX_GPIO97__FUNC_I2S9_BCK (MTK_PIN_NO(97) | 3)
+#define PINMUX_GPIO97__FUNC_SPI4_A_CSB (MTK_PIN_NO(97) | 4)
+#define PINMUX_GPIO97__FUNC_ADSP_JTAG0_TRSTN (MTK_PIN_NO(97) | 5)
+#define PINMUX_GPIO97__FUNC_CONN_BGF_DSP_L1_JINTP (MTK_PIN_NO(97) | 6)
+#define PINMUX_GPIO97__FUNC_IO_JTAG_TRSTN (MTK_PIN_NO(97) | 7)
+
+#define PINMUX_GPIO98__FUNC_GPIO98 (MTK_PIN_NO(98) | 0)
+#define PINMUX_GPIO98__FUNC_TDM_MCK (MTK_PIN_NO(98) | 1)
+#define PINMUX_GPIO98__FUNC_I2S7_MCK (MTK_PIN_NO(98) | 2)
+#define PINMUX_GPIO98__FUNC_I2S9_MCK (MTK_PIN_NO(98) | 3)
+#define PINMUX_GPIO98__FUNC_SPI4_A_MI (MTK_PIN_NO(98) | 4)
+#define PINMUX_GPIO98__FUNC_ADSP_JTAG0_TCK (MTK_PIN_NO(98) | 5)
+#define PINMUX_GPIO98__FUNC_CONN_BGF_DSP_L1_JCK (MTK_PIN_NO(98) | 6)
+#define PINMUX_GPIO98__FUNC_IO_JTAG_TCK (MTK_PIN_NO(98) | 7)
+
+#define PINMUX_GPIO99__FUNC_GPIO99 (MTK_PIN_NO(99) | 0)
+#define PINMUX_GPIO99__FUNC_TDM_DATA0 (MTK_PIN_NO(99) | 1)
+#define PINMUX_GPIO99__FUNC_I2S6_DI (MTK_PIN_NO(99) | 2)
+#define PINMUX_GPIO99__FUNC_I2S8_DI (MTK_PIN_NO(99) | 3)
+#define PINMUX_GPIO99__FUNC_SPI4_A_MO (MTK_PIN_NO(99) | 4)
+#define PINMUX_GPIO99__FUNC_ADSP_JTAG0_TDO (MTK_PIN_NO(99) | 5)
+#define PINMUX_GPIO99__FUNC_CONN_BGF_DSP_L1_JDO (MTK_PIN_NO(99) | 6)
+#define PINMUX_GPIO99__FUNC_IO_JTAG_TDO (MTK_PIN_NO(99) | 7)
+
+#define PINMUX_GPIO100__FUNC_GPIO100 (MTK_PIN_NO(100) | 0)
+#define PINMUX_GPIO100__FUNC_TDM_DATA1 (MTK_PIN_NO(100) | 1)
+#define PINMUX_GPIO100__FUNC_I2S7_DO (MTK_PIN_NO(100) | 2)
+#define PINMUX_GPIO100__FUNC_I2S9_DO (MTK_PIN_NO(100) | 3)
+#define PINMUX_GPIO100__FUNC_DP_TX_HPD (MTK_PIN_NO(100) | 4)
+#define PINMUX_GPIO100__FUNC_ADSP_JTAG0_TMS (MTK_PIN_NO(100) | 5)
+#define PINMUX_GPIO100__FUNC_CONN_BGF_DSP_L1_JMS (MTK_PIN_NO(100) | 6)
+#define PINMUX_GPIO100__FUNC_IO_JTAG_TMS (MTK_PIN_NO(100) | 7)
+
+#define PINMUX_GPIO101__FUNC_GPIO101 (MTK_PIN_NO(101) | 0)
+#define PINMUX_GPIO101__FUNC_TDM_DATA2 (MTK_PIN_NO(101) | 1)
+#define PINMUX_GPIO101__FUNC_DMIC1_CLK (MTK_PIN_NO(101) | 2)
+#define PINMUX_GPIO101__FUNC_SRCLKENAI0 (MTK_PIN_NO(101) | 3)
+#define PINMUX_GPIO101__FUNC_SPI5_B_CLK (MTK_PIN_NO(101) | 4)
+#define PINMUX_GPIO101__FUNC_CLKM0 (MTK_PIN_NO(101) | 5)
+#define PINMUX_GPIO101__FUNC_DAP_MD32_SWD (MTK_PIN_NO(101) | 7)
+
+#define PINMUX_GPIO102__FUNC_GPIO102 (MTK_PIN_NO(102) | 0)
+#define PINMUX_GPIO102__FUNC_TDM_DATA3 (MTK_PIN_NO(102) | 1)
+#define PINMUX_GPIO102__FUNC_DMIC1_DAT (MTK_PIN_NO(102) | 2)
+#define PINMUX_GPIO102__FUNC_SRCLKENAI1 (MTK_PIN_NO(102) | 3)
+#define PINMUX_GPIO102__FUNC_SPI5_B_CSB (MTK_PIN_NO(102) | 4)
+#define PINMUX_GPIO102__FUNC_DP_TX_HPD (MTK_PIN_NO(102) | 5)
+#define PINMUX_GPIO102__FUNC_DVFSRC_EXT_REQ (MTK_PIN_NO(102) | 6)
+#define PINMUX_GPIO102__FUNC_DAP_MD32_SWCK (MTK_PIN_NO(102) | 7)
+
+#define PINMUX_GPIO103__FUNC_GPIO103 (MTK_PIN_NO(103) | 0)
+#define PINMUX_GPIO103__FUNC_SPI0_A_MI (MTK_PIN_NO(103) | 1)
+#define PINMUX_GPIO103__FUNC_SCP_SPI0_MI (MTK_PIN_NO(103) | 2)
+#define PINMUX_GPIO103__FUNC_DFD_TDO (MTK_PIN_NO(103) | 5)
+#define PINMUX_GPIO103__FUNC_SPM_JTAG_TDO (MTK_PIN_NO(103) | 6)
+#define PINMUX_GPIO103__FUNC_JTDO_SEL1 (MTK_PIN_NO(103) | 7)
+
+#define PINMUX_GPIO104__FUNC_GPIO104 (MTK_PIN_NO(104) | 0)
+#define PINMUX_GPIO104__FUNC_SPI0_A_CSB (MTK_PIN_NO(104) | 1)
+#define PINMUX_GPIO104__FUNC_SCP_SPI0_CS (MTK_PIN_NO(104) | 2)
+#define PINMUX_GPIO104__FUNC_DFD_TMS (MTK_PIN_NO(104) | 5)
+#define PINMUX_GPIO104__FUNC_SPM_JTAG_TMS (MTK_PIN_NO(104) | 6)
+#define PINMUX_GPIO104__FUNC_JTMS_SEL1 (MTK_PIN_NO(104) | 7)
+
+#define PINMUX_GPIO105__FUNC_GPIO105 (MTK_PIN_NO(105) | 0)
+#define PINMUX_GPIO105__FUNC_SPI0_A_MO (MTK_PIN_NO(105) | 1)
+#define PINMUX_GPIO105__FUNC_SCP_SPI0_MO (MTK_PIN_NO(105) | 2)
+#define PINMUX_GPIO105__FUNC_SCP_SDA0 (MTK_PIN_NO(105) | 3)
+#define PINMUX_GPIO105__FUNC_DFD_TDI (MTK_PIN_NO(105) | 5)
+#define PINMUX_GPIO105__FUNC_SPM_JTAG_TDI (MTK_PIN_NO(105) | 6)
+#define PINMUX_GPIO105__FUNC_JTDI_SEL1 (MTK_PIN_NO(105) | 7)
+
+#define PINMUX_GPIO106__FUNC_GPIO106 (MTK_PIN_NO(106) | 0)
+#define PINMUX_GPIO106__FUNC_SPI0_A_CLK (MTK_PIN_NO(106) | 1)
+#define PINMUX_GPIO106__FUNC_SCP_SPI0_CK (MTK_PIN_NO(106) | 2)
+#define PINMUX_GPIO106__FUNC_SCP_SCL0 (MTK_PIN_NO(106) | 3)
+#define PINMUX_GPIO106__FUNC_DFD_TCK_XI (MTK_PIN_NO(106) | 5)
+#define PINMUX_GPIO106__FUNC_SPM_JTAG_TCK (MTK_PIN_NO(106) | 6)
+#define PINMUX_GPIO106__FUNC_JTCK_SEL1 (MTK_PIN_NO(106) | 7)
+
+#define PINMUX_GPIO107__FUNC_GPIO107 (MTK_PIN_NO(107) | 0)
+#define PINMUX_GPIO107__FUNC_DMIC_CLK (MTK_PIN_NO(107) | 1)
+#define PINMUX_GPIO107__FUNC_PWM_0 (MTK_PIN_NO(107) | 2)
+#define PINMUX_GPIO107__FUNC_CLKM2 (MTK_PIN_NO(107) | 3)
+#define PINMUX_GPIO107__FUNC_SPI5_B_MI (MTK_PIN_NO(107) | 4)
+#define PINMUX_GPIO107__FUNC_SPM_JTAG_TRSTN (MTK_PIN_NO(107) | 6)
+#define PINMUX_GPIO107__FUNC_JTRSTN_SEL1 (MTK_PIN_NO(107) | 7)
+
+#define PINMUX_GPIO108__FUNC_GPIO108 (MTK_PIN_NO(108) | 0)
+#define PINMUX_GPIO108__FUNC_DMIC_DAT (MTK_PIN_NO(108) | 1)
+#define PINMUX_GPIO108__FUNC_PWM_1 (MTK_PIN_NO(108) | 2)
+#define PINMUX_GPIO108__FUNC_CLKM3 (MTK_PIN_NO(108) | 3)
+#define PINMUX_GPIO108__FUNC_SPI5_B_MO (MTK_PIN_NO(108) | 4)
+#define PINMUX_GPIO108__FUNC_DAP_SONIC_SWD (MTK_PIN_NO(108) | 7)
+
+#define PINMUX_GPIO109__FUNC_GPIO109 (MTK_PIN_NO(109) | 0)
+#define PINMUX_GPIO109__FUNC_I2S1_MCK (MTK_PIN_NO(109) | 1)
+#define PINMUX_GPIO109__FUNC_I2S3_MCK (MTK_PIN_NO(109) | 2)
+#define PINMUX_GPIO109__FUNC_I2S2_MCK (MTK_PIN_NO(109) | 3)
+#define PINMUX_GPIO109__FUNC_DP_TX_HPD (MTK_PIN_NO(109) | 4)
+#define PINMUX_GPIO109__FUNC_I2S2_MCK_A (MTK_PIN_NO(109) | 5)
+#define PINMUX_GPIO109__FUNC_SRCLKENAI0 (MTK_PIN_NO(109) | 6)
+#define PINMUX_GPIO109__FUNC_DAP_SONIC_SWCK (MTK_PIN_NO(109) | 7)
+
+#define PINMUX_GPIO110__FUNC_GPIO110 (MTK_PIN_NO(110) | 0)
+#define PINMUX_GPIO110__FUNC_I2S1_BCK (MTK_PIN_NO(110) | 1)
+#define PINMUX_GPIO110__FUNC_I2S3_BCK (MTK_PIN_NO(110) | 2)
+#define PINMUX_GPIO110__FUNC_I2S2_BCK (MTK_PIN_NO(110) | 3)
+#define PINMUX_GPIO110__FUNC_PCM0_CLK (MTK_PIN_NO(110) | 4)
+#define PINMUX_GPIO110__FUNC_I2S2_BCK_A (MTK_PIN_NO(110) | 5)
+#define PINMUX_GPIO110__FUNC_CONN_BGF_MCU_TDO (MTK_PIN_NO(110) | 6)
+
+#define PINMUX_GPIO111__FUNC_GPIO111 (MTK_PIN_NO(111) | 0)
+#define PINMUX_GPIO111__FUNC_I2S1_LRCK (MTK_PIN_NO(111) | 1)
+#define PINMUX_GPIO111__FUNC_I2S3_LRCK (MTK_PIN_NO(111) | 2)
+#define PINMUX_GPIO111__FUNC_I2S2_LRCK (MTK_PIN_NO(111) | 3)
+#define PINMUX_GPIO111__FUNC_PCM0_SYNC (MTK_PIN_NO(111) | 4)
+#define PINMUX_GPIO111__FUNC_I2S2_LRCK_A (MTK_PIN_NO(111) | 5)
+#define PINMUX_GPIO111__FUNC_CONN_BGF_MCU_TDI (MTK_PIN_NO(111) | 6)
+
+#define PINMUX_GPIO112__FUNC_GPIO112 (MTK_PIN_NO(112) | 0)
+#define PINMUX_GPIO112__FUNC_I2S2_DI (MTK_PIN_NO(112) | 1)
+#define PINMUX_GPIO112__FUNC_I2S0_DI (MTK_PIN_NO(112) | 2)
+#define PINMUX_GPIO112__FUNC_I2S2_DI2 (MTK_PIN_NO(112) | 3)
+#define PINMUX_GPIO112__FUNC_PCM0_DI (MTK_PIN_NO(112) | 4)
+#define PINMUX_GPIO112__FUNC_I2S2_DI_A (MTK_PIN_NO(112) | 5)
+#define PINMUX_GPIO112__FUNC_CONN_BGF_MCU_TMS (MTK_PIN_NO(112) | 6)
+
+#define PINMUX_GPIO113__FUNC_GPIO113 (MTK_PIN_NO(113) | 0)
+#define PINMUX_GPIO113__FUNC_I2S1_DO (MTK_PIN_NO(113) | 1)
+#define PINMUX_GPIO113__FUNC_I2S3_DO (MTK_PIN_NO(113) | 2)
+#define PINMUX_GPIO113__FUNC_I2S5_DO (MTK_PIN_NO(113) | 3)
+#define PINMUX_GPIO113__FUNC_PCM0_DO (MTK_PIN_NO(113) | 4)
+#define PINMUX_GPIO113__FUNC_I2S2_DI2 (MTK_PIN_NO(113) | 5)
+#define PINMUX_GPIO113__FUNC_CONN_BGF_MCU_TCK (MTK_PIN_NO(113) | 6)
+
+#define PINMUX_GPIO114__FUNC_GPIO114 (MTK_PIN_NO(114) | 0)
+#define PINMUX_GPIO114__FUNC_SPI2_MI (MTK_PIN_NO(114) | 1)
+#define PINMUX_GPIO114__FUNC_SCP_SPI2_MI (MTK_PIN_NO(114) | 2)
+#define PINMUX_GPIO114__FUNC_CONN_BGF_MCU_TRST_B (MTK_PIN_NO(114) | 6)
+
+#define PINMUX_GPIO115__FUNC_GPIO115 (MTK_PIN_NO(115) | 0)
+#define PINMUX_GPIO115__FUNC_SPI2_CSB (MTK_PIN_NO(115) | 1)
+#define PINMUX_GPIO115__FUNC_SCP_SPI2_CS (MTK_PIN_NO(115) | 2)
+#define PINMUX_GPIO115__FUNC_CONN_BGF_MCU_DBGI_N (MTK_PIN_NO(115) | 6)
+
+#define PINMUX_GPIO116__FUNC_GPIO116 (MTK_PIN_NO(116) | 0)
+#define PINMUX_GPIO116__FUNC_SPI2_MO (MTK_PIN_NO(116) | 1)
+#define PINMUX_GPIO116__FUNC_SCP_SPI2_MO (MTK_PIN_NO(116) | 2)
+#define PINMUX_GPIO116__FUNC_SCP_SDA1 (MTK_PIN_NO(116) | 3)
+#define PINMUX_GPIO116__FUNC_CONN_BGF_MCU_DBGACK_N (MTK_PIN_NO(116) | 6)
+
+#define PINMUX_GPIO117__FUNC_GPIO117 (MTK_PIN_NO(117) | 0)
+#define PINMUX_GPIO117__FUNC_SPI2_CLK (MTK_PIN_NO(117) | 1)
+#define PINMUX_GPIO117__FUNC_SCP_SPI2_CK (MTK_PIN_NO(117) | 2)
+#define PINMUX_GPIO117__FUNC_SCP_SCL1 (MTK_PIN_NO(117) | 3)
+
+#define PINMUX_GPIO118__FUNC_GPIO118 (MTK_PIN_NO(118) | 0)
+#define PINMUX_GPIO118__FUNC_SCL1 (MTK_PIN_NO(118) | 1)
+#define PINMUX_GPIO118__FUNC_SCP_SCL0 (MTK_PIN_NO(118) | 2)
+#define PINMUX_GPIO118__FUNC_SCP_SCL1 (MTK_PIN_NO(118) | 3)
+
+#define PINMUX_GPIO119__FUNC_GPIO119 (MTK_PIN_NO(119) | 0)
+#define PINMUX_GPIO119__FUNC_SDA1 (MTK_PIN_NO(119) | 1)
+#define PINMUX_GPIO119__FUNC_SCP_SDA0 (MTK_PIN_NO(119) | 2)
+#define PINMUX_GPIO119__FUNC_SCP_SDA1 (MTK_PIN_NO(119) | 3)
+
+#define PINMUX_GPIO120__FUNC_GPIO120 (MTK_PIN_NO(120) | 0)
+#define PINMUX_GPIO120__FUNC_SCL9 (MTK_PIN_NO(120) | 1)
+
+#define PINMUX_GPIO121__FUNC_GPIO121 (MTK_PIN_NO(121) | 0)
+#define PINMUX_GPIO121__FUNC_SDA9 (MTK_PIN_NO(121) | 1)
+
+#define PINMUX_GPIO122__FUNC_GPIO122 (MTK_PIN_NO(122) | 0)
+#define PINMUX_GPIO122__FUNC_SCL8 (MTK_PIN_NO(122) | 1)
+
+#define PINMUX_GPIO123__FUNC_GPIO123 (MTK_PIN_NO(123) | 0)
+#define PINMUX_GPIO123__FUNC_SDA8 (MTK_PIN_NO(123) | 1)
+
+#define PINMUX_GPIO124__FUNC_GPIO124 (MTK_PIN_NO(124) | 0)
+#define PINMUX_GPIO124__FUNC_SCL7 (MTK_PIN_NO(124) | 1)
+#define PINMUX_GPIO124__FUNC_DMIC1_CLK (MTK_PIN_NO(124) | 2)
+
+#define PINMUX_GPIO125__FUNC_GPIO125 (MTK_PIN_NO(125) | 0)
+#define PINMUX_GPIO125__FUNC_SDA7 (MTK_PIN_NO(125) | 1)
+#define PINMUX_GPIO125__FUNC_DMIC1_DAT (MTK_PIN_NO(125) | 2)
+
+#define PINMUX_GPIO126__FUNC_GPIO126 (MTK_PIN_NO(126) | 0)
+#define PINMUX_GPIO126__FUNC_CMFLASH0 (MTK_PIN_NO(126) | 1)
+#define PINMUX_GPIO126__FUNC_PWM_2 (MTK_PIN_NO(126) | 2)
+#define PINMUX_GPIO126__FUNC_TP_UCTS1_AO (MTK_PIN_NO(126) | 3)
+#define PINMUX_GPIO126__FUNC_UCTS0 (MTK_PIN_NO(126) | 4)
+#define PINMUX_GPIO126__FUNC_SCL11 (MTK_PIN_NO(126) | 5)
+#define PINMUX_GPIO126__FUNC_MD32_1_GPIO0 (MTK_PIN_NO(126) | 6)
+
+#define PINMUX_GPIO127__FUNC_GPIO127 (MTK_PIN_NO(127) | 0)
+#define PINMUX_GPIO127__FUNC_CMFLASH1 (MTK_PIN_NO(127) | 1)
+#define PINMUX_GPIO127__FUNC_PWM_3 (MTK_PIN_NO(127) | 2)
+#define PINMUX_GPIO127__FUNC_TP_URTS1_AO (MTK_PIN_NO(127) | 3)
+#define PINMUX_GPIO127__FUNC_URTS0 (MTK_PIN_NO(127) | 4)
+#define PINMUX_GPIO127__FUNC_SDA11 (MTK_PIN_NO(127) | 5)
+#define PINMUX_GPIO127__FUNC_MD32_1_GPIO1 (MTK_PIN_NO(127) | 6)
+
+#define PINMUX_GPIO128__FUNC_GPIO128 (MTK_PIN_NO(128) | 0)
+#define PINMUX_GPIO128__FUNC_CMFLASH2 (MTK_PIN_NO(128) | 1)
+#define PINMUX_GPIO128__FUNC_PWM_0 (MTK_PIN_NO(128) | 2)
+#define PINMUX_GPIO128__FUNC_TP_UCTS2_AO (MTK_PIN_NO(128) | 3)
+#define PINMUX_GPIO128__FUNC_UCTS1 (MTK_PIN_NO(128) | 4)
+#define PINMUX_GPIO128__FUNC_SCL12 (MTK_PIN_NO(128) | 5)
+#define PINMUX_GPIO128__FUNC_MD32_1_GPIO2 (MTK_PIN_NO(128) | 6)
+
+#define PINMUX_GPIO129__FUNC_GPIO129 (MTK_PIN_NO(129) | 0)
+#define PINMUX_GPIO129__FUNC_CMFLASH3 (MTK_PIN_NO(129) | 1)
+#define PINMUX_GPIO129__FUNC_PWM_1 (MTK_PIN_NO(129) | 2)
+#define PINMUX_GPIO129__FUNC_TP_URTS2_AO (MTK_PIN_NO(129) | 3)
+#define PINMUX_GPIO129__FUNC_URTS1 (MTK_PIN_NO(129) | 4)
+#define PINMUX_GPIO129__FUNC_SDA12 (MTK_PIN_NO(129) | 5)
+
+#define PINMUX_GPIO130__FUNC_GPIO130 (MTK_PIN_NO(130) | 0)
+#define PINMUX_GPIO130__FUNC_CMVREF0 (MTK_PIN_NO(130) | 1)
+#define PINMUX_GPIO130__FUNC_ANT_SEL10 (MTK_PIN_NO(130) | 2)
+#define PINMUX_GPIO130__FUNC_SCP_JTAG0_TDO (MTK_PIN_NO(130) | 3)
+#define PINMUX_GPIO130__FUNC_MD32_0_JTAG_TDO (MTK_PIN_NO(130) | 4)
+#define PINMUX_GPIO130__FUNC_SCL11 (MTK_PIN_NO(130) | 5)
+#define PINMUX_GPIO130__FUNC_CONN_WF_MCU_TDO (MTK_PIN_NO(130) | 6)
+#define PINMUX_GPIO130__FUNC_DBG_MON_A23 (MTK_PIN_NO(130) | 7)
+
+#define PINMUX_GPIO131__FUNC_GPIO131 (MTK_PIN_NO(131) | 0)
+#define PINMUX_GPIO131__FUNC_CMVREF1 (MTK_PIN_NO(131) | 1)
+#define PINMUX_GPIO131__FUNC_ANT_SEL11 (MTK_PIN_NO(131) | 2)
+#define PINMUX_GPIO131__FUNC_SCP_JTAG0_TDI (MTK_PIN_NO(131) | 3)
+#define PINMUX_GPIO131__FUNC_MD32_0_JTAG_TDI (MTK_PIN_NO(131) | 4)
+#define PINMUX_GPIO131__FUNC_SDA11 (MTK_PIN_NO(131) | 5)
+#define PINMUX_GPIO131__FUNC_CONN_WF_MCU_TDI (MTK_PIN_NO(131) | 6)
+#define PINMUX_GPIO131__FUNC_DBG_MON_A26 (MTK_PIN_NO(131) | 7)
+
+#define PINMUX_GPIO132__FUNC_GPIO132 (MTK_PIN_NO(132) | 0)
+#define PINMUX_GPIO132__FUNC_CMVREF2 (MTK_PIN_NO(132) | 1)
+#define PINMUX_GPIO132__FUNC_ANT_SEL12 (MTK_PIN_NO(132) | 2)
+#define PINMUX_GPIO132__FUNC_SCP_JTAG0_TMS (MTK_PIN_NO(132) | 3)
+#define PINMUX_GPIO132__FUNC_MD32_0_JTAG_TMS (MTK_PIN_NO(132) | 4)
+#define PINMUX_GPIO132__FUNC_CONN_WF_MCU_TMS (MTK_PIN_NO(132) | 6)
+#define PINMUX_GPIO132__FUNC_DBG_MON_A28 (MTK_PIN_NO(132) | 7)
+
+#define PINMUX_GPIO133__FUNC_GPIO133 (MTK_PIN_NO(133) | 0)
+#define PINMUX_GPIO133__FUNC_CMVREF3 (MTK_PIN_NO(133) | 1)
+#define PINMUX_GPIO133__FUNC_GPS_L1_ELNA_EN (MTK_PIN_NO(133) | 2)
+#define PINMUX_GPIO133__FUNC_SCP_JTAG0_TCK (MTK_PIN_NO(133) | 3)
+#define PINMUX_GPIO133__FUNC_MD32_0_JTAG_TCK (MTK_PIN_NO(133) | 4)
+#define PINMUX_GPIO133__FUNC_CONN_WF_MCU_TCK (MTK_PIN_NO(133) | 6)
+#define PINMUX_GPIO133__FUNC_DBG_MON_A24 (MTK_PIN_NO(133) | 7)
+
+#define PINMUX_GPIO134__FUNC_GPIO134 (MTK_PIN_NO(134) | 0)
+#define PINMUX_GPIO134__FUNC_CMVREF4 (MTK_PIN_NO(134) | 1)
+#define PINMUX_GPIO134__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(134) | 2)
+#define PINMUX_GPIO134__FUNC_SCP_JTAG0_TRSTN (MTK_PIN_NO(134) | 3)
+#define PINMUX_GPIO134__FUNC_MD32_0_JTAG_TRST (MTK_PIN_NO(134) | 4)
+#define PINMUX_GPIO134__FUNC_CONN_WF_MCU_TRST_B (MTK_PIN_NO(134) | 6)
+#define PINMUX_GPIO134__FUNC_DBG_MON_A27 (MTK_PIN_NO(134) | 7)
+
+#define PINMUX_GPIO135__FUNC_GPIO135 (MTK_PIN_NO(135) | 0)
+#define PINMUX_GPIO135__FUNC_PWM_0 (MTK_PIN_NO(135) | 1)
+#define PINMUX_GPIO135__FUNC_SRCLKENAI1 (MTK_PIN_NO(135) | 2)
+#define PINMUX_GPIO135__FUNC_MD_URXD0 (MTK_PIN_NO(135) | 3)
+#define PINMUX_GPIO135__FUNC_MD32_0_RXD (MTK_PIN_NO(135) | 4)
+#define PINMUX_GPIO135__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(135) | 5)
+#define PINMUX_GPIO135__FUNC_CONN_WF_MCU_DBGI_N (MTK_PIN_NO(135) | 6)
+#define PINMUX_GPIO135__FUNC_DBG_MON_A29 (MTK_PIN_NO(135) | 7)
+
+#define PINMUX_GPIO136__FUNC_GPIO136 (MTK_PIN_NO(136) | 0)
+#define PINMUX_GPIO136__FUNC_CMMCLK3 (MTK_PIN_NO(136) | 1)
+#define PINMUX_GPIO136__FUNC_CLKM1 (MTK_PIN_NO(136) | 2)
+#define PINMUX_GPIO136__FUNC_MD_UTXD0 (MTK_PIN_NO(136) | 3)
+#define PINMUX_GPIO136__FUNC_MD32_0_TXD (MTK_PIN_NO(136) | 4)
+#define PINMUX_GPIO136__FUNC_CONN_BT_TXD (MTK_PIN_NO(136) | 5)
+#define PINMUX_GPIO136__FUNC_CONN_WF_MCU_DBGACK_N (MTK_PIN_NO(136) | 6)
+#define PINMUX_GPIO136__FUNC_DBG_MON_A25 (MTK_PIN_NO(136) | 7)
+
+#define PINMUX_GPIO137__FUNC_GPIO137 (MTK_PIN_NO(137) | 0)
+#define PINMUX_GPIO137__FUNC_CMMCLK4 (MTK_PIN_NO(137) | 1)
+#define PINMUX_GPIO137__FUNC_CLKM2 (MTK_PIN_NO(137) | 2)
+#define PINMUX_GPIO137__FUNC_MD_URXD1 (MTK_PIN_NO(137) | 3)
+#define PINMUX_GPIO137__FUNC_MD32_1_RXD (MTK_PIN_NO(137) | 4)
+#define PINMUX_GPIO137__FUNC_ILDO_DOUT0 (MTK_PIN_NO(137) | 5)
+#define PINMUX_GPIO137__FUNC_CONN_BGF_UART0_RXD (MTK_PIN_NO(137) | 6)
+
+#define PINMUX_GPIO138__FUNC_GPIO138 (MTK_PIN_NO(138) | 0)
+#define PINMUX_GPIO138__FUNC_CMMCLK5 (MTK_PIN_NO(138) | 1)
+#define PINMUX_GPIO138__FUNC_CLKM3 (MTK_PIN_NO(138) | 2)
+#define PINMUX_GPIO138__FUNC_MD_UTXD1 (MTK_PIN_NO(138) | 3)
+#define PINMUX_GPIO138__FUNC_MD32_1_TXD (MTK_PIN_NO(138) | 4)
+#define PINMUX_GPIO138__FUNC_ILDO_DOUT1 (MTK_PIN_NO(138) | 5)
+#define PINMUX_GPIO138__FUNC_CONN_BGF_UART0_TXD (MTK_PIN_NO(138) | 6)
+
+#define PINMUX_GPIO139__FUNC_GPIO139 (MTK_PIN_NO(139) | 0)
+#define PINMUX_GPIO139__FUNC_SCL4 (MTK_PIN_NO(139) | 1)
+
+#define PINMUX_GPIO140__FUNC_GPIO140 (MTK_PIN_NO(140) | 0)
+#define PINMUX_GPIO140__FUNC_SDA4 (MTK_PIN_NO(140) | 1)
+
+#define PINMUX_GPIO141__FUNC_GPIO141 (MTK_PIN_NO(141) | 0)
+#define PINMUX_GPIO141__FUNC_SCL2 (MTK_PIN_NO(141) | 1)
+
+#define PINMUX_GPIO142__FUNC_GPIO142 (MTK_PIN_NO(142) | 0)
+#define PINMUX_GPIO142__FUNC_SDA2 (MTK_PIN_NO(142) | 1)
+
+#define PINMUX_GPIO143__FUNC_GPIO143 (MTK_PIN_NO(143) | 0)
+#define PINMUX_GPIO143__FUNC_CMVREF0 (MTK_PIN_NO(143) | 1)
+#define PINMUX_GPIO143__FUNC_SPI3_CLK (MTK_PIN_NO(143) | 2)
+#define PINMUX_GPIO143__FUNC_ADSP_JTAG1_TDO (MTK_PIN_NO(143) | 3)
+#define PINMUX_GPIO143__FUNC_SCP_JTAG1_TDO (MTK_PIN_NO(143) | 4)
+#define PINMUX_GPIO143__FUNC_MD32_1_JTAG_TDO (MTK_PIN_NO(143) | 5)
+#define PINMUX_GPIO143__FUNC_CONN_BGF_DSP_L5_JDO (MTK_PIN_NO(143) | 6)
+
+#define PINMUX_GPIO144__FUNC_GPIO144 (MTK_PIN_NO(144) | 0)
+#define PINMUX_GPIO144__FUNC_CMVREF1 (MTK_PIN_NO(144) | 1)
+#define PINMUX_GPIO144__FUNC_SPI3_CSB (MTK_PIN_NO(144) | 2)
+#define PINMUX_GPIO144__FUNC_ADSP_JTAG1_TDI (MTK_PIN_NO(144) | 3)
+#define PINMUX_GPIO144__FUNC_SCP_JTAG1_TDI (MTK_PIN_NO(144) | 4)
+#define PINMUX_GPIO144__FUNC_MD32_1_JTAG_TDI (MTK_PIN_NO(144) | 5)
+#define PINMUX_GPIO144__FUNC_CONN_BGF_DSP_L5_JDI (MTK_PIN_NO(144) | 6)
+
+#define PINMUX_GPIO145__FUNC_GPIO145 (MTK_PIN_NO(145) | 0)
+#define PINMUX_GPIO145__FUNC_CMVREF2 (MTK_PIN_NO(145) | 1)
+#define PINMUX_GPIO145__FUNC_SPI3_MI (MTK_PIN_NO(145) | 2)
+#define PINMUX_GPIO145__FUNC_ADSP_JTAG1_TMS (MTK_PIN_NO(145) | 3)
+#define PINMUX_GPIO145__FUNC_SCP_JTAG1_TMS (MTK_PIN_NO(145) | 4)
+#define PINMUX_GPIO145__FUNC_MD32_1_JTAG_TMS (MTK_PIN_NO(145) | 5)
+#define PINMUX_GPIO145__FUNC_CONN_BGF_DSP_L5_JMS (MTK_PIN_NO(145) | 6)
+
+#define PINMUX_GPIO146__FUNC_GPIO146 (MTK_PIN_NO(146) | 0)
+#define PINMUX_GPIO146__FUNC_CMVREF3 (MTK_PIN_NO(146) | 1)
+#define PINMUX_GPIO146__FUNC_SPI3_MO (MTK_PIN_NO(146) | 2)
+#define PINMUX_GPIO146__FUNC_ADSP_JTAG1_TCK (MTK_PIN_NO(146) | 3)
+#define PINMUX_GPIO146__FUNC_SCP_JTAG1_TCK (MTK_PIN_NO(146) | 4)
+#define PINMUX_GPIO146__FUNC_MD32_1_JTAG_TCK (MTK_PIN_NO(146) | 5)
+#define PINMUX_GPIO146__FUNC_CONN_BGF_DSP_L5_JCK (MTK_PIN_NO(146) | 6)
+
+#define PINMUX_GPIO147__FUNC_GPIO147 (MTK_PIN_NO(147) | 0)
+#define PINMUX_GPIO147__FUNC_CMVREF4 (MTK_PIN_NO(147) | 1)
+#define PINMUX_GPIO147__FUNC_EXT_FRAME_SYNC (MTK_PIN_NO(147) | 2)
+#define PINMUX_GPIO147__FUNC_ADSP_JTAG1_TRSTN (MTK_PIN_NO(147) | 3)
+#define PINMUX_GPIO147__FUNC_SCP_JTAG1_TRSTN (MTK_PIN_NO(147) | 4)
+#define PINMUX_GPIO147__FUNC_MD32_1_JTAG_TRST (MTK_PIN_NO(147) | 5)
+#define PINMUX_GPIO147__FUNC_CONN_BGF_DSP_L5_JINTP (MTK_PIN_NO(147) | 6)
+
+#define PINMUX_GPIO148__FUNC_GPIO148 (MTK_PIN_NO(148) | 0)
+#define PINMUX_GPIO148__FUNC_PWM_1 (MTK_PIN_NO(148) | 1)
+#define PINMUX_GPIO148__FUNC_AGPS_SYNC (MTK_PIN_NO(148) | 2)
+#define PINMUX_GPIO148__FUNC_CMMCLK5 (MTK_PIN_NO(148) | 3)
+#define PINMUX_GPIO148__FUNC_CONN_WF_MCU_AICE_TMSC (MTK_PIN_NO(148) | 6)
+
+#define PINMUX_GPIO149__FUNC_GPIO149 (MTK_PIN_NO(149) | 0)
+#define PINMUX_GPIO149__FUNC_CMMCLK0 (MTK_PIN_NO(149) | 1)
+#define PINMUX_GPIO149__FUNC_CLKM0 (MTK_PIN_NO(149) | 2)
+#define PINMUX_GPIO149__FUNC_MD32_0_GPIO0 (MTK_PIN_NO(149) | 3)
+#define PINMUX_GPIO149__FUNC_CONN_WF_MCU_AICE_TCKC (MTK_PIN_NO(149) | 6)
+
+#define PINMUX_GPIO150__FUNC_GPIO150 (MTK_PIN_NO(150) | 0)
+#define PINMUX_GPIO150__FUNC_CMMCLK1 (MTK_PIN_NO(150) | 1)
+#define PINMUX_GPIO150__FUNC_CLKM1 (MTK_PIN_NO(150) | 2)
+#define PINMUX_GPIO150__FUNC_MD32_0_GPIO1 (MTK_PIN_NO(150) | 3)
+#define PINMUX_GPIO150__FUNC_CONN_BGF_MCU_AICE_TMSC (MTK_PIN_NO(150) | 6)
+
+#define PINMUX_GPIO151__FUNC_GPIO151 (MTK_PIN_NO(151) | 0)
+#define PINMUX_GPIO151__FUNC_CMMCLK2 (MTK_PIN_NO(151) | 1)
+#define PINMUX_GPIO151__FUNC_CLKM2 (MTK_PIN_NO(151) | 2)
+#define PINMUX_GPIO151__FUNC_MD32_0_GPIO2 (MTK_PIN_NO(151) | 3)
+#define PINMUX_GPIO151__FUNC_CONN_BGF_MCU_AICE_TCKC (MTK_PIN_NO(151) | 6)
+
+#define PINMUX_GPIO152__FUNC_GPIO152 (MTK_PIN_NO(152) | 0)
+#define PINMUX_GPIO152__FUNC_KPROW1 (MTK_PIN_NO(152) | 1)
+#define PINMUX_GPIO152__FUNC_PWM_2 (MTK_PIN_NO(152) | 2)
+#define PINMUX_GPIO152__FUNC_IDDIG (MTK_PIN_NO(152) | 3)
+#define PINMUX_GPIO152__FUNC_DP_TX_HPD (MTK_PIN_NO(152) | 4)
+#define PINMUX_GPIO152__FUNC_DSI1_TE (MTK_PIN_NO(152) | 5)
+#define PINMUX_GPIO152__FUNC_MBISTREADEN_TRIGGER (MTK_PIN_NO(152) | 6)
+#define PINMUX_GPIO152__FUNC_DBG_MON_B2 (MTK_PIN_NO(152) | 7)
+
+#define PINMUX_GPIO153__FUNC_GPIO153 (MTK_PIN_NO(153) | 0)
+#define PINMUX_GPIO153__FUNC_KPROW0 (MTK_PIN_NO(153) | 1)
+#define PINMUX_GPIO153__FUNC_DBG_MON_B1 (MTK_PIN_NO(153) | 7)
+
+#define PINMUX_GPIO154__FUNC_GPIO154 (MTK_PIN_NO(154) | 0)
+#define PINMUX_GPIO154__FUNC_KPCOL0 (MTK_PIN_NO(154) | 1)
+#define PINMUX_GPIO154__FUNC_DBG_MON_A32 (MTK_PIN_NO(154) | 7)
+
+#define PINMUX_GPIO155__FUNC_GPIO155 (MTK_PIN_NO(155) | 0)
+#define PINMUX_GPIO155__FUNC_KPCOL1 (MTK_PIN_NO(155) | 1)
+#define PINMUX_GPIO155__FUNC_PWM_3 (MTK_PIN_NO(155) | 2)
+#define PINMUX_GPIO155__FUNC_USB_DRVVBUS (MTK_PIN_NO(155) | 3)
+#define PINMUX_GPIO155__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(155) | 4)
+#define PINMUX_GPIO155__FUNC_LCM1_RST (MTK_PIN_NO(155) | 5)
+#define PINMUX_GPIO155__FUNC_MBISTWRITEEN_TRIGGER (MTK_PIN_NO(155) | 6)
+#define PINMUX_GPIO155__FUNC_DBG_MON_B0 (MTK_PIN_NO(155) | 7)
+
+#define PINMUX_GPIO156__FUNC_GPIO156 (MTK_PIN_NO(156) | 0)
+#define PINMUX_GPIO156__FUNC_SPI1_A_CLK (MTK_PIN_NO(156) | 1)
+#define PINMUX_GPIO156__FUNC_SCP_SPI1_A_CK (MTK_PIN_NO(156) | 2)
+#define PINMUX_GPIO156__FUNC_MRG_CLK (MTK_PIN_NO(156) | 3)
+#define PINMUX_GPIO156__FUNC_AGPS_SYNC (MTK_PIN_NO(156) | 4)
+#define PINMUX_GPIO156__FUNC_SCL12 (MTK_PIN_NO(156) | 5)
+#define PINMUX_GPIO156__FUNC_DBG_MON_B3 (MTK_PIN_NO(156) | 7)
+
+#define PINMUX_GPIO157__FUNC_GPIO157 (MTK_PIN_NO(157) | 0)
+#define PINMUX_GPIO157__FUNC_SPI1_A_CSB (MTK_PIN_NO(157) | 1)
+#define PINMUX_GPIO157__FUNC_SCP_SPI1_A_CS (MTK_PIN_NO(157) | 2)
+#define PINMUX_GPIO157__FUNC_MRG_SYNC (MTK_PIN_NO(157) | 3)
+#define PINMUX_GPIO157__FUNC_EXT_FRAME_SYNC (MTK_PIN_NO(157) | 4)
+#define PINMUX_GPIO157__FUNC_SDA12 (MTK_PIN_NO(157) | 5)
+#define PINMUX_GPIO157__FUNC_DBG_MON_B4 (MTK_PIN_NO(157) | 7)
+
+#define PINMUX_GPIO158__FUNC_GPIO158 (MTK_PIN_NO(158) | 0)
+#define PINMUX_GPIO158__FUNC_SPI1_A_MI (MTK_PIN_NO(158) | 1)
+#define PINMUX_GPIO158__FUNC_SCP_SPI1_A_MI (MTK_PIN_NO(158) | 2)
+#define PINMUX_GPIO158__FUNC_MRG_DI (MTK_PIN_NO(158) | 3)
+#define PINMUX_GPIO158__FUNC_PTA_RXD (MTK_PIN_NO(158) | 4)
+#define PINMUX_GPIO158__FUNC_SCL13 (MTK_PIN_NO(158) | 5)
+#define PINMUX_GPIO158__FUNC_DBG_MON_B5 (MTK_PIN_NO(158) | 7)
+
+#define PINMUX_GPIO159__FUNC_GPIO159 (MTK_PIN_NO(159) | 0)
+#define PINMUX_GPIO159__FUNC_SPI1_A_MO (MTK_PIN_NO(159) | 1)
+#define PINMUX_GPIO159__FUNC_SCP_SPI1_A_MO (MTK_PIN_NO(159) | 2)
+#define PINMUX_GPIO159__FUNC_MRG_DO (MTK_PIN_NO(159) | 3)
+#define PINMUX_GPIO159__FUNC_PTA_TXD (MTK_PIN_NO(159) | 4)
+#define PINMUX_GPIO159__FUNC_SDA13 (MTK_PIN_NO(159) | 5)
+#define PINMUX_GPIO159__FUNC_DBG_MON_B6 (MTK_PIN_NO(159) | 7)
+
+#define PINMUX_GPIO160__FUNC_GPIO160 (MTK_PIN_NO(160) | 0)
+#define PINMUX_GPIO160__FUNC_SCL3 (MTK_PIN_NO(160) | 1)
+#define PINMUX_GPIO160__FUNC_SCP_SCL0 (MTK_PIN_NO(160) | 2)
+#define PINMUX_GPIO160__FUNC_SCP_SCL1 (MTK_PIN_NO(160) | 3)
+
+#define PINMUX_GPIO161__FUNC_GPIO161 (MTK_PIN_NO(161) | 0)
+#define PINMUX_GPIO161__FUNC_SDA3 (MTK_PIN_NO(161) | 1)
+#define PINMUX_GPIO161__FUNC_SCP_SDA0 (MTK_PIN_NO(161) | 2)
+#define PINMUX_GPIO161__FUNC_SCP_SDA1 (MTK_PIN_NO(161) | 3)
+
+#define PINMUX_GPIO162__FUNC_GPIO162 (MTK_PIN_NO(162) | 0)
+#define PINMUX_GPIO162__FUNC_ANT_SEL0 (MTK_PIN_NO(162) | 1)
+#define PINMUX_GPIO162__FUNC_GPS_L1_ELNA_EN (MTK_PIN_NO(162) | 2)
+#define PINMUX_GPIO162__FUNC_DBG_MON_B7 (MTK_PIN_NO(162) | 7)
+
+#define PINMUX_GPIO163__FUNC_GPIO163 (MTK_PIN_NO(163) | 0)
+#define PINMUX_GPIO163__FUNC_ANT_SEL1 (MTK_PIN_NO(163) | 1)
+#define PINMUX_GPIO163__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(163) | 2)
+#define PINMUX_GPIO163__FUNC_DBG_MON_B8 (MTK_PIN_NO(163) | 7)
+
+#define PINMUX_GPIO164__FUNC_GPIO164 (MTK_PIN_NO(164) | 0)
+#define PINMUX_GPIO164__FUNC_ANT_SEL2 (MTK_PIN_NO(164) | 1)
+#define PINMUX_GPIO164__FUNC_SCP_SPI1_B_CK (MTK_PIN_NO(164) | 2)
+#define PINMUX_GPIO164__FUNC_TP_URXD1_AO (MTK_PIN_NO(164) | 3)
+#define PINMUX_GPIO164__FUNC_UCTS0 (MTK_PIN_NO(164) | 5)
+#define PINMUX_GPIO164__FUNC_DBG_MON_B9 (MTK_PIN_NO(164) | 7)
+
+#define PINMUX_GPIO165__FUNC_GPIO165 (MTK_PIN_NO(165) | 0)
+#define PINMUX_GPIO165__FUNC_ANT_SEL3 (MTK_PIN_NO(165) | 1)
+#define PINMUX_GPIO165__FUNC_SCP_SPI1_B_CS (MTK_PIN_NO(165) | 2)
+#define PINMUX_GPIO165__FUNC_TP_UTXD1_AO (MTK_PIN_NO(165) | 3)
+#define PINMUX_GPIO165__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(165) | 4)
+#define PINMUX_GPIO165__FUNC_URTS0 (MTK_PIN_NO(165) | 5)
+#define PINMUX_GPIO165__FUNC_DBG_MON_B10 (MTK_PIN_NO(165) | 7)
+
+#define PINMUX_GPIO166__FUNC_GPIO166 (MTK_PIN_NO(166) | 0)
+#define PINMUX_GPIO166__FUNC_ANT_SEL4 (MTK_PIN_NO(166) | 1)
+#define PINMUX_GPIO166__FUNC_SCP_SPI1_B_MI (MTK_PIN_NO(166) | 2)
+#define PINMUX_GPIO166__FUNC_TP_URXD2_AO (MTK_PIN_NO(166) | 3)
+#define PINMUX_GPIO166__FUNC_SRCLKENAI1 (MTK_PIN_NO(166) | 4)
+#define PINMUX_GPIO166__FUNC_UCTS1 (MTK_PIN_NO(166) | 5)
+#define PINMUX_GPIO166__FUNC_DBG_MON_B11 (MTK_PIN_NO(166) | 7)
+
+#define PINMUX_GPIO167__FUNC_GPIO167 (MTK_PIN_NO(167) | 0)
+#define PINMUX_GPIO167__FUNC_ANT_SEL5 (MTK_PIN_NO(167) | 1)
+#define PINMUX_GPIO167__FUNC_SCP_SPI1_B_MO (MTK_PIN_NO(167) | 2)
+#define PINMUX_GPIO167__FUNC_TP_UTXD2_AO (MTK_PIN_NO(167) | 3)
+#define PINMUX_GPIO167__FUNC_SRCLKENAI0 (MTK_PIN_NO(167) | 4)
+#define PINMUX_GPIO167__FUNC_URTS1 (MTK_PIN_NO(167) | 5)
+#define PINMUX_GPIO167__FUNC_DBG_MON_B12 (MTK_PIN_NO(167) | 7)
+
+#define PINMUX_GPIO168__FUNC_GPIO168 (MTK_PIN_NO(168) | 0)
+#define PINMUX_GPIO168__FUNC_ANT_SEL6 (MTK_PIN_NO(168) | 1)
+#define PINMUX_GPIO168__FUNC_SPI0_B_CLK (MTK_PIN_NO(168) | 2)
+#define PINMUX_GPIO168__FUNC_TP_UCTS1_AO (MTK_PIN_NO(168) | 3)
+#define PINMUX_GPIO168__FUNC_KPCOL2 (MTK_PIN_NO(168) | 4)
+#define PINMUX_GPIO168__FUNC_MD_UCTS0 (MTK_PIN_NO(168) | 5)
+#define PINMUX_GPIO168__FUNC_SCL12 (MTK_PIN_NO(168) | 6)
+#define PINMUX_GPIO168__FUNC_DBG_MON_B13 (MTK_PIN_NO(168) | 7)
+
+#define PINMUX_GPIO169__FUNC_GPIO169 (MTK_PIN_NO(169) | 0)
+#define PINMUX_GPIO169__FUNC_ANT_SEL7 (MTK_PIN_NO(169) | 1)
+#define PINMUX_GPIO169__FUNC_SPI0_B_CSB (MTK_PIN_NO(169) | 2)
+#define PINMUX_GPIO169__FUNC_TP_URTS1_AO (MTK_PIN_NO(169) | 3)
+#define PINMUX_GPIO169__FUNC_KPROW2 (MTK_PIN_NO(169) | 4)
+#define PINMUX_GPIO169__FUNC_MD_URTS0 (MTK_PIN_NO(169) | 5)
+#define PINMUX_GPIO169__FUNC_SDA12 (MTK_PIN_NO(169) | 6)
+#define PINMUX_GPIO169__FUNC_DBG_MON_B14 (MTK_PIN_NO(169) | 7)
+
+#define PINMUX_GPIO170__FUNC_GPIO170 (MTK_PIN_NO(170) | 0)
+#define PINMUX_GPIO170__FUNC_ANT_SEL8 (MTK_PIN_NO(170) | 1)
+#define PINMUX_GPIO170__FUNC_SPI0_B_MI (MTK_PIN_NO(170) | 2)
+#define PINMUX_GPIO170__FUNC_TP_UCTS2_AO (MTK_PIN_NO(170) | 3)
+#define PINMUX_GPIO170__FUNC_SRCLKENAI1 (MTK_PIN_NO(170) | 4)
+#define PINMUX_GPIO170__FUNC_MD_UCTS1 (MTK_PIN_NO(170) | 5)
+#define PINMUX_GPIO170__FUNC_SCL13 (MTK_PIN_NO(170) | 6)
+
+#define PINMUX_GPIO171__FUNC_GPIO171 (MTK_PIN_NO(171) | 0)
+#define PINMUX_GPIO171__FUNC_ANT_SEL9 (MTK_PIN_NO(171) | 1)
+#define PINMUX_GPIO171__FUNC_SPI0_B_MO (MTK_PIN_NO(171) | 2)
+#define PINMUX_GPIO171__FUNC_TP_URTS2_AO (MTK_PIN_NO(171) | 3)
+#define PINMUX_GPIO171__FUNC_SRCLKENAI0 (MTK_PIN_NO(171) | 4)
+#define PINMUX_GPIO171__FUNC_MD_URTS1 (MTK_PIN_NO(171) | 5)
+#define PINMUX_GPIO171__FUNC_SDA13 (MTK_PIN_NO(171) | 6)
+
+#define PINMUX_GPIO172__FUNC_GPIO172 (MTK_PIN_NO(172) | 0)
+#define PINMUX_GPIO172__FUNC_CONN_TOP_CLK (MTK_PIN_NO(172) | 1)
+#define PINMUX_GPIO172__FUNC_AUXIF_CLK0 (MTK_PIN_NO(172) | 2)
+#define PINMUX_GPIO172__FUNC_DBG_MON_B18 (MTK_PIN_NO(172) | 7)
+
+#define PINMUX_GPIO173__FUNC_GPIO173 (MTK_PIN_NO(173) | 0)
+#define PINMUX_GPIO173__FUNC_CONN_TOP_DATA (MTK_PIN_NO(173) | 1)
+#define PINMUX_GPIO173__FUNC_AUXIF_ST0 (MTK_PIN_NO(173) | 2)
+#define PINMUX_GPIO173__FUNC_DBG_MON_B19 (MTK_PIN_NO(173) | 7)
+
+#define PINMUX_GPIO174__FUNC_GPIO174 (MTK_PIN_NO(174) | 0)
+#define PINMUX_GPIO174__FUNC_CONN_HRST_B (MTK_PIN_NO(174) | 1)
+#define PINMUX_GPIO174__FUNC_DBG_MON_B17 (MTK_PIN_NO(174) | 7)
+
+#define PINMUX_GPIO175__FUNC_GPIO175 (MTK_PIN_NO(175) | 0)
+#define PINMUX_GPIO175__FUNC_CONN_WB_PTA (MTK_PIN_NO(175) | 1)
+#define PINMUX_GPIO175__FUNC_DBG_MON_B20 (MTK_PIN_NO(175) | 7)
+
+#define PINMUX_GPIO176__FUNC_GPIO176 (MTK_PIN_NO(176) | 0)
+#define PINMUX_GPIO176__FUNC_CONN_BT_CLK (MTK_PIN_NO(176) | 1)
+#define PINMUX_GPIO176__FUNC_AUXIF_CLK1 (MTK_PIN_NO(176) | 2)
+#define PINMUX_GPIO176__FUNC_DBG_MON_B15 (MTK_PIN_NO(176) | 7)
+
+#define PINMUX_GPIO177__FUNC_GPIO177 (MTK_PIN_NO(177) | 0)
+#define PINMUX_GPIO177__FUNC_CONN_BT_DATA (MTK_PIN_NO(177) | 1)
+#define PINMUX_GPIO177__FUNC_AUXIF_ST1 (MTK_PIN_NO(177) | 2)
+#define PINMUX_GPIO177__FUNC_DBG_MON_B16 (MTK_PIN_NO(177) | 7)
+
+#define PINMUX_GPIO178__FUNC_GPIO178 (MTK_PIN_NO(178) | 0)
+#define PINMUX_GPIO178__FUNC_CONN_WF_CTRL0 (MTK_PIN_NO(178) | 1)
+#define PINMUX_GPIO178__FUNC_DBG_MON_B21 (MTK_PIN_NO(178) | 7)
+
+#define PINMUX_GPIO179__FUNC_GPIO179 (MTK_PIN_NO(179) | 0)
+#define PINMUX_GPIO179__FUNC_CONN_WF_CTRL1 (MTK_PIN_NO(179) | 1)
+#define PINMUX_GPIO179__FUNC_UFS_MPHY_SCL (MTK_PIN_NO(179) | 2)
+#define PINMUX_GPIO179__FUNC_DBG_MON_B22 (MTK_PIN_NO(179) | 7)
+
+#define PINMUX_GPIO180__FUNC_GPIO180 (MTK_PIN_NO(180) | 0)
+#define PINMUX_GPIO180__FUNC_CONN_WF_CTRL2 (MTK_PIN_NO(180) | 1)
+#define PINMUX_GPIO180__FUNC_UFS_MPHY_SDA (MTK_PIN_NO(180) | 2)
+#define PINMUX_GPIO180__FUNC_DBG_MON_B23 (MTK_PIN_NO(180) | 7)
+
+#define PINMUX_GPIO181__FUNC_GPIO181 (MTK_PIN_NO(181) | 0)
+#define PINMUX_GPIO181__FUNC_CONN_WF_CTRL3 (MTK_PIN_NO(181) | 1)
+#define PINMUX_GPIO181__FUNC_UFS_UNIPRO_SDA (MTK_PIN_NO(181) | 2)
+
+#define PINMUX_GPIO182__FUNC_GPIO182 (MTK_PIN_NO(182) | 0)
+#define PINMUX_GPIO182__FUNC_CONN_WF_CTRL4 (MTK_PIN_NO(182) | 1)
+#define PINMUX_GPIO182__FUNC_UFS_UNIPRO_SCL (MTK_PIN_NO(182) | 2)
+
+#define PINMUX_GPIO183__FUNC_GPIO183 (MTK_PIN_NO(183) | 0)
+#define PINMUX_GPIO183__FUNC_MSDC0_CMD (MTK_PIN_NO(183) | 1)
+
+#define PINMUX_GPIO184__FUNC_GPIO184 (MTK_PIN_NO(184) | 0)
+#define PINMUX_GPIO184__FUNC_MSDC0_DAT0 (MTK_PIN_NO(184) | 1)
+
+#define PINMUX_GPIO185__FUNC_GPIO185 (MTK_PIN_NO(185) | 0)
+#define PINMUX_GPIO185__FUNC_MSDC0_DAT2 (MTK_PIN_NO(185) | 1)
+
+#define PINMUX_GPIO186__FUNC_GPIO186 (MTK_PIN_NO(186) | 0)
+#define PINMUX_GPIO186__FUNC_MSDC0_DAT4 (MTK_PIN_NO(186) | 1)
+
+#define PINMUX_GPIO187__FUNC_GPIO187 (MTK_PIN_NO(187) | 0)
+#define PINMUX_GPIO187__FUNC_MSDC0_DAT6 (MTK_PIN_NO(187) | 1)
+
+#define PINMUX_GPIO188__FUNC_GPIO188 (MTK_PIN_NO(188) | 0)
+#define PINMUX_GPIO188__FUNC_MSDC0_DAT1 (MTK_PIN_NO(188) | 1)
+
+#define PINMUX_GPIO189__FUNC_GPIO189 (MTK_PIN_NO(189) | 0)
+#define PINMUX_GPIO189__FUNC_MSDC0_DAT5 (MTK_PIN_NO(189) | 1)
+
+#define PINMUX_GPIO190__FUNC_GPIO190 (MTK_PIN_NO(190) | 0)
+#define PINMUX_GPIO190__FUNC_MSDC0_DAT7 (MTK_PIN_NO(190) | 1)
+
+#define PINMUX_GPIO191__FUNC_GPIO191 (MTK_PIN_NO(191) | 0)
+#define PINMUX_GPIO191__FUNC_MSDC0_DSL (MTK_PIN_NO(191) | 1)
+#define PINMUX_GPIO191__FUNC_GPS_L1_ELNA_EN (MTK_PIN_NO(191) | 2)
+#define PINMUX_GPIO191__FUNC_IDDIG (MTK_PIN_NO(191) | 3)
+#define PINMUX_GPIO191__FUNC_DMIC_CLK (MTK_PIN_NO(191) | 4)
+#define PINMUX_GPIO191__FUNC_DSI1_TE (MTK_PIN_NO(191) | 5)
+
+#define PINMUX_GPIO192__FUNC_GPIO192 (MTK_PIN_NO(192) | 0)
+#define PINMUX_GPIO192__FUNC_MSDC0_CLK (MTK_PIN_NO(192) | 1)
+#define PINMUX_GPIO192__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(192) | 2)
+#define PINMUX_GPIO192__FUNC_USB_DRVVBUS (MTK_PIN_NO(192) | 3)
+#define PINMUX_GPIO192__FUNC_DMIC_DAT (MTK_PIN_NO(192) | 4)
+#define PINMUX_GPIO192__FUNC_LCM1_RST (MTK_PIN_NO(192) | 5)
+
+#define PINMUX_GPIO193__FUNC_GPIO193 (MTK_PIN_NO(193) | 0)
+#define PINMUX_GPIO193__FUNC_MSDC0_DAT3 (MTK_PIN_NO(193) | 1)
+
+#define PINMUX_GPIO194__FUNC_GPIO194 (MTK_PIN_NO(194) | 0)
+#define PINMUX_GPIO194__FUNC_MSDC0_RSTB (MTK_PIN_NO(194) | 1)
+
+#define PINMUX_GPIO195__FUNC_GPIO195 (MTK_PIN_NO(195) | 0)
+#define PINMUX_GPIO195__FUNC_SCP_VREQ_VAO (MTK_PIN_NO(195) | 1)
+#define PINMUX_GPIO195__FUNC_DVFSRC_EXT_REQ (MTK_PIN_NO(195) | 2)
+
+#define PINMUX_GPIO196__FUNC_GPIO196 (MTK_PIN_NO(196) | 0)
+#define PINMUX_GPIO196__FUNC_AUD_DAT_MOSI2 (MTK_PIN_NO(196) | 1)
+#define PINMUX_GPIO196__FUNC_DBG_MON_B27 (MTK_PIN_NO(196) | 7)
+
+#define PINMUX_GPIO197__FUNC_GPIO197 (MTK_PIN_NO(197) | 0)
+#define PINMUX_GPIO197__FUNC_AUD_NLE_MOSI1 (MTK_PIN_NO(197) | 1)
+#define PINMUX_GPIO197__FUNC_AUD_CLK_MISO (MTK_PIN_NO(197) | 2)
+#define PINMUX_GPIO197__FUNC_I2S2_MCK (MTK_PIN_NO(197) | 3)
+#define PINMUX_GPIO197__FUNC_I2S6_MCK (MTK_PIN_NO(197) | 4)
+#define PINMUX_GPIO197__FUNC_I2S8_MCK (MTK_PIN_NO(197) | 5)
+#define PINMUX_GPIO197__FUNC_UFS_UNIPRO_SDA (MTK_PIN_NO(197) | 6)
+#define PINMUX_GPIO197__FUNC_DBG_MON_B28 (MTK_PIN_NO(197) | 7)
+
+#define PINMUX_GPIO198__FUNC_GPIO198 (MTK_PIN_NO(198) | 0)
+#define PINMUX_GPIO198__FUNC_AUD_NLE_MOSI0 (MTK_PIN_NO(198) | 1)
+#define PINMUX_GPIO198__FUNC_AUD_SYNC_MISO (MTK_PIN_NO(198) | 2)
+#define PINMUX_GPIO198__FUNC_I2S2_BCK (MTK_PIN_NO(198) | 3)
+#define PINMUX_GPIO198__FUNC_I2S6_BCK (MTK_PIN_NO(198) | 4)
+#define PINMUX_GPIO198__FUNC_I2S8_BCK (MTK_PIN_NO(198) | 5)
+#define PINMUX_GPIO198__FUNC_DBG_MON_B29 (MTK_PIN_NO(198) | 7)
+
+#define PINMUX_GPIO199__FUNC_GPIO199 (MTK_PIN_NO(199) | 0)
+#define PINMUX_GPIO199__FUNC_AUD_DAT_MISO2 (MTK_PIN_NO(199) | 1)
+#define PINMUX_GPIO199__FUNC_I2S2_DI2 (MTK_PIN_NO(199) | 3)
+#define PINMUX_GPIO199__FUNC_DBG_MON_B32 (MTK_PIN_NO(199) | 7)
+
+#define PINMUX_GPIO200__FUNC_GPIO200 (MTK_PIN_NO(200) | 0)
+#define PINMUX_GPIO200__FUNC_SCL6 (MTK_PIN_NO(200) | 1)
+#define PINMUX_GPIO200__FUNC_SCP_SCL0 (MTK_PIN_NO(200) | 2)
+#define PINMUX_GPIO200__FUNC_SCP_SCL1 (MTK_PIN_NO(200) | 3)
+#define PINMUX_GPIO200__FUNC_SCL_6306 (MTK_PIN_NO(200) | 4)
+
+#define PINMUX_GPIO201__FUNC_GPIO201 (MTK_PIN_NO(201) | 0)
+#define PINMUX_GPIO201__FUNC_SDA6 (MTK_PIN_NO(201) | 1)
+#define PINMUX_GPIO201__FUNC_SCP_SDA0 (MTK_PIN_NO(201) | 2)
+#define PINMUX_GPIO201__FUNC_SCP_SDA1 (MTK_PIN_NO(201) | 3)
+#define PINMUX_GPIO201__FUNC_SDA_6306 (MTK_PIN_NO(201) | 4)
+
+#define PINMUX_GPIO202__FUNC_GPIO202 (MTK_PIN_NO(202) | 0)
+#define PINMUX_GPIO202__FUNC_SCL5 (MTK_PIN_NO(202) | 1)
+
+#define PINMUX_GPIO203__FUNC_GPIO203 (MTK_PIN_NO(203) | 0)
+#define PINMUX_GPIO203__FUNC_SDA5 (MTK_PIN_NO(203) | 1)
+
+#define PINMUX_GPIO204__FUNC_GPIO204 (MTK_PIN_NO(204) | 0)
+#define PINMUX_GPIO204__FUNC_SCL0 (MTK_PIN_NO(204) | 1)
+#define PINMUX_GPIO204__FUNC_SPI4_C_CLK (MTK_PIN_NO(204) | 2)
+#define PINMUX_GPIO204__FUNC_SPI7_B_CLK (MTK_PIN_NO(204) | 3)
+
+#define PINMUX_GPIO205__FUNC_GPIO205 (MTK_PIN_NO(205) | 0)
+#define PINMUX_GPIO205__FUNC_SDA0 (MTK_PIN_NO(205) | 1)
+#define PINMUX_GPIO205__FUNC_SPI4_C_CSB (MTK_PIN_NO(205) | 2)
+#define PINMUX_GPIO205__FUNC_SPI7_B_CSB (MTK_PIN_NO(205) | 3)
+
+#define PINMUX_GPIO206__FUNC_GPIO206 (MTK_PIN_NO(206) | 0)
+#define PINMUX_GPIO206__FUNC_SRCLKENA0 (MTK_PIN_NO(206) | 1)
+
+#define PINMUX_GPIO207__FUNC_GPIO207 (MTK_PIN_NO(207) | 0)
+#define PINMUX_GPIO207__FUNC_SRCLKENA1 (MTK_PIN_NO(207) | 1)
+
+#define PINMUX_GPIO208__FUNC_GPIO208 (MTK_PIN_NO(208) | 0)
+#define PINMUX_GPIO208__FUNC_WATCHDOG (MTK_PIN_NO(208) | 1)
+
+#define PINMUX_GPIO209__FUNC_GPIO209 (MTK_PIN_NO(209) | 0)
+#define PINMUX_GPIO209__FUNC_PWRAP_SPI0_MI (MTK_PIN_NO(209) | 1)
+#define PINMUX_GPIO209__FUNC_PWRAP_SPI0_MO (MTK_PIN_NO(209) | 2)
+
+#define PINMUX_GPIO210__FUNC_GPIO210 (MTK_PIN_NO(210) | 0)
+#define PINMUX_GPIO210__FUNC_PWRAP_SPI0_CSN (MTK_PIN_NO(210) | 1)
+
+#define PINMUX_GPIO211__FUNC_GPIO211 (MTK_PIN_NO(211) | 0)
+#define PINMUX_GPIO211__FUNC_PWRAP_SPI0_MO (MTK_PIN_NO(211) | 1)
+#define PINMUX_GPIO211__FUNC_PWRAP_SPI0_MI (MTK_PIN_NO(211) | 2)
+
+#define PINMUX_GPIO212__FUNC_GPIO212 (MTK_PIN_NO(212) | 0)
+#define PINMUX_GPIO212__FUNC_PWRAP_SPI0_CK (MTK_PIN_NO(212) | 1)
+
+#define PINMUX_GPIO213__FUNC_GPIO213 (MTK_PIN_NO(213) | 0)
+#define PINMUX_GPIO213__FUNC_RTC32K_CK (MTK_PIN_NO(213) | 1)
+
+#define PINMUX_GPIO214__FUNC_GPIO214 (MTK_PIN_NO(214) | 0)
+#define PINMUX_GPIO214__FUNC_AUD_CLK_MOSI (MTK_PIN_NO(214) | 1)
+#define PINMUX_GPIO214__FUNC_I2S1_MCK (MTK_PIN_NO(214) | 3)
+#define PINMUX_GPIO214__FUNC_I2S7_MCK (MTK_PIN_NO(214) | 4)
+#define PINMUX_GPIO214__FUNC_I2S9_MCK (MTK_PIN_NO(214) | 5)
+#define PINMUX_GPIO214__FUNC_UFS_UNIPRO_SCL (MTK_PIN_NO(214) | 6)
+
+#define PINMUX_GPIO215__FUNC_GPIO215 (MTK_PIN_NO(215) | 0)
+#define PINMUX_GPIO215__FUNC_AUD_SYNC_MOSI (MTK_PIN_NO(215) | 1)
+#define PINMUX_GPIO215__FUNC_I2S1_BCK (MTK_PIN_NO(215) | 3)
+#define PINMUX_GPIO215__FUNC_I2S7_BCK (MTK_PIN_NO(215) | 4)
+#define PINMUX_GPIO215__FUNC_I2S9_BCK (MTK_PIN_NO(215) | 5)
+#define PINMUX_GPIO215__FUNC_DBG_MON_B24 (MTK_PIN_NO(215) | 7)
+
+#define PINMUX_GPIO216__FUNC_GPIO216 (MTK_PIN_NO(216) | 0)
+#define PINMUX_GPIO216__FUNC_AUD_DAT_MOSI0 (MTK_PIN_NO(216) | 1)
+#define PINMUX_GPIO216__FUNC_I2S1_LRCK (MTK_PIN_NO(216) | 3)
+#define PINMUX_GPIO216__FUNC_I2S7_LRCK (MTK_PIN_NO(216) | 4)
+#define PINMUX_GPIO216__FUNC_I2S9_LRCK (MTK_PIN_NO(216) | 5)
+#define PINMUX_GPIO216__FUNC_DBG_MON_B25 (MTK_PIN_NO(216) | 7)
+
+#define PINMUX_GPIO217__FUNC_GPIO217 (MTK_PIN_NO(217) | 0)
+#define PINMUX_GPIO217__FUNC_AUD_DAT_MOSI1 (MTK_PIN_NO(217) | 1)
+#define PINMUX_GPIO217__FUNC_I2S1_DO (MTK_PIN_NO(217) | 3)
+#define PINMUX_GPIO217__FUNC_I2S7_DO (MTK_PIN_NO(217) | 4)
+#define PINMUX_GPIO217__FUNC_I2S9_DO (MTK_PIN_NO(217) | 5)
+#define PINMUX_GPIO217__FUNC_UFS_MPHY_SDA (MTK_PIN_NO(217) | 6)
+#define PINMUX_GPIO217__FUNC_DBG_MON_B26 (MTK_PIN_NO(217) | 7)
+
+#define PINMUX_GPIO218__FUNC_GPIO218 (MTK_PIN_NO(218) | 0)
+#define PINMUX_GPIO218__FUNC_AUD_DAT_MISO0 (MTK_PIN_NO(218) | 1)
+#define PINMUX_GPIO218__FUNC_VOW_DAT_MISO (MTK_PIN_NO(218) | 2)
+#define PINMUX_GPIO218__FUNC_I2S2_LRCK (MTK_PIN_NO(218) | 3)
+#define PINMUX_GPIO218__FUNC_I2S6_LRCK (MTK_PIN_NO(218) | 4)
+#define PINMUX_GPIO218__FUNC_I2S8_LRCK (MTK_PIN_NO(218) | 5)
+#define PINMUX_GPIO218__FUNC_DBG_MON_B30 (MTK_PIN_NO(218) | 7)
+
+#define PINMUX_GPIO219__FUNC_GPIO219 (MTK_PIN_NO(219) | 0)
+#define PINMUX_GPIO219__FUNC_AUD_DAT_MISO1 (MTK_PIN_NO(219) | 1)
+#define PINMUX_GPIO219__FUNC_VOW_CLK_MISO (MTK_PIN_NO(219) | 2)
+#define PINMUX_GPIO219__FUNC_I2S2_DI (MTK_PIN_NO(219) | 3)
+#define PINMUX_GPIO219__FUNC_I2S6_DI (MTK_PIN_NO(219) | 4)
+#define PINMUX_GPIO219__FUNC_I2S8_DI (MTK_PIN_NO(219) | 5)
+#define PINMUX_GPIO219__FUNC_UFS_MPHY_SCL (MTK_PIN_NO(219) | 6)
+#define PINMUX_GPIO219__FUNC_DBG_MON_B31 (MTK_PIN_NO(219) | 7)
+
+#endif /* __MT6893-PINFUNC_H */
index d12eac9b3eebfa564b07d937ddcac6a2fa112bb5..9f100b18a6765655db03316531c9b186796a46d8 100644 (file)
        /* Attention: GPIO 90 is used to switch between PCIe@1,0 and
         * SATA functions. i.e. output-high: PCIe, output-low: SATA
         */
-       asm_sel {
+       asm-sel-hog {
                gpio-hog;
                gpios = <90 GPIO_ACTIVE_HIGH>;
                output-high;
diff --git a/src/arm64/mediatek/mt7988a-bananapi-bpi-r4-2g5.dts b/src/arm64/mediatek/mt7988a-bananapi-bpi-r4-2g5.dts
new file mode 100644 (file)
index 0000000..53de9c1
--- /dev/null
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+
+/dts-v1/;
+
+#include "mt7988a-bananapi-bpi-r4.dtsi"
+
+/ {
+       compatible = "bananapi,bpi-r4-2g5", "bananapi,bpi-r4", "mediatek,mt7988a";
+       model = "Banana Pi BPI-R4 (1x SFP+, 1x 2.5GbE)";
+       chassis-type = "embedded";
+};
index 6623112c24c76f3765a84421d79b1c30da6a578c..36bd1ef2efab93b8fe57c8018380ac71309c8cc7 100644 (file)
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/regulator/richtek,rt5190a-regulator.h>
-
-#include "mt7988a.dtsi"
+#include "mt7988a-bananapi-bpi-r4.dtsi"
 
 / {
        compatible = "bananapi,bpi-r4", "mediatek,mt7988a";
-       model = "Banana Pi BPI-R4";
+       model = "Banana Pi BPI-R4 (2x SFP+)";
        chassis-type = "embedded";
-
-       chosen {
-               stdout-path = "serial0:115200n8";
-       };
-
-       reg_1p8v: regulator-1p8v {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-1.8V";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       reg_3p3v: regulator-3p3v {
-               compatible = "regulator-fixed";
-               regulator-name = "fixed-3.3V";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               regulator-boot-on;
-               regulator-always-on;
-       };
 };
 
-&cpu0 {
-       proc-supply = <&rt5190_buck3>;
-};
-
-&cpu1 {
-       proc-supply = <&rt5190_buck3>;
-};
-
-&cpu2 {
-       proc-supply = <&rt5190_buck3>;
-};
-
-&cpu3 {
-       proc-supply = <&rt5190_buck3>;
-};
-
-&cpu_thermal {
-       trips {
-               cpu_trip_hot: hot {
-                       temperature = <120000>;
-                       hysteresis = <2000>;
-                       type = "hot";
-               };
-
-               cpu_trip_active_high: active-high {
-                       temperature = <115000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-
-               cpu_trip_active_med: active-med {
-                       temperature = <85000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-
-               cpu_trip_active_low: active-low {
-                       temperature = <40000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-       };
-};
-
-&i2c0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c0_pins>;
-       status = "okay";
-
-       rt5190a_64: rt5190a@64 {
-               compatible = "richtek,rt5190a";
-               reg = <0x64>;
-               vin2-supply = <&rt5190_buck1>;
-               vin3-supply = <&rt5190_buck1>;
-               vin4-supply = <&rt5190_buck1>;
-
-               regulators {
-                       rt5190_buck1: buck1 {
-                               regulator-name = "rt5190a-buck1";
-                               regulator-min-microvolt = <5090000>;
-                               regulator-max-microvolt = <5090000>;
-                               regulator-allowed-modes =
-                               <RT5190A_OPMODE_AUTO>, <RT5190A_OPMODE_FPWM>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-                       buck2 {
-                               regulator-name = "vcore";
-                               regulator-min-microvolt = <600000>;
-                               regulator-max-microvolt = <1400000>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-                       rt5190_buck3: buck3 {
-                               regulator-name = "vproc";
-                               regulator-min-microvolt = <600000>;
-                               regulator-max-microvolt = <1400000>;
-                               regulator-boot-on;
-                       };
-                       buck4 {
-                               regulator-name = "rt5190a-buck4";
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-allowed-modes =
-                               <RT5190A_OPMODE_AUTO>, <RT5190A_OPMODE_FPWM>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-                       ldo {
-                               regulator-name = "rt5190a-ldo";
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-boot-on;
-                               regulator-always-on;
-                       };
-               };
-       };
-};
-
-&i2c2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c2_1_pins>;
-       status = "okay";
-
-       pca9545: i2c-mux@70 {
-               compatible = "nxp,pca9545";
-               reg = <0x70>;
-               reset-gpios = <&pio 5 GPIO_ACTIVE_LOW>;
+&pca9545 {
+       i2c_sfp2: i2c@2 {
                #address-cells = <1>;
                #size-cells = <0>;
-
-               i2c@0 {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       reg = <0>;
-
-                       pcf8563: rtc@51 {
-                               compatible = "nxp,pcf8563";
-                               reg = <0x51>;
-                               #clock-cells = <0>;
-                       };
-
-                       eeprom@57 {
-                               compatible = "atmel,24c02";
-                               reg = <0x57>;
-                               size = <256>;
-                       };
-
-               };
-
-               i2c_sfp1: i2c@1 {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       reg = <1>;
-               };
-
-               i2c_sfp2: i2c@2 {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       reg = <2>;
-               };
-       };
-};
-
-/* mPCIe SIM2 */
-&pcie0 {
-       status = "okay";
-};
-
-/* mPCIe SIM3 */
-&pcie1 {
-       status = "okay";
-};
-
-/* M.2 key-B SIM1 */
-&pcie2 {
-       status = "okay";
-};
-
-/* M.2 key-M SSD */
-&pcie3 {
-       status = "okay";
-};
-
-&pio {
-       mdio0_pins: mdio0-pins {
-               mux {
-                       function = "eth";
-                       groups = "mdc_mdio0";
-               };
-
-               conf {
-                       pins = "SMI_0_MDC", "SMI_0_MDIO";
-                       drive-strength = <8>;
-               };
-       };
-
-       i2c0_pins: i2c0-g0-pins {
-               mux {
-                       function = "i2c";
-                       groups = "i2c0_1";
-               };
-       };
-
-       i2c1_pins: i2c1-g0-pins {
-               mux {
-                       function = "i2c";
-                       groups = "i2c1_0";
-               };
-       };
-
-       i2c1_sfp_pins: i2c1-sfp-g0-pins {
-               mux {
-                       function = "i2c";
-                       groups = "i2c1_sfp";
-               };
-       };
-
-       i2c2_0_pins: i2c2-g0-pins {
-               mux {
-                       function = "i2c";
-                       groups = "i2c2_0";
-               };
+               reg = <2>;
        };
-
-       i2c2_1_pins: i2c2-g1-pins {
-               mux {
-                       function = "i2c";
-                       groups = "i2c2_1";
-               };
-       };
-
-       gbe0_led0_pins: gbe0-led0-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe0_led0";
-               };
-       };
-
-       gbe1_led0_pins: gbe1-led0-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe1_led0";
-               };
-       };
-
-       gbe2_led0_pins: gbe2-led0-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe2_led0";
-               };
-       };
-
-       gbe3_led0_pins: gbe3-led0-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe3_led0";
-               };
-       };
-
-       gbe0_led1_pins: gbe0-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe0_led1";
-               };
-       };
-
-       gbe1_led1_pins: gbe1-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe1_led1";
-               };
-       };
-
-       gbe2_led1_pins: gbe2-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe2_led1";
-               };
-       };
-
-       gbe3_led1_pins: gbe3-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "gbe3_led1";
-               };
-       };
-
-       i2p5gbe_led0_pins: 2p5gbe-led0-pins {
-               mux {
-                       function = "led";
-                       groups = "2p5gbe_led0";
-               };
-       };
-
-       i2p5gbe_led1_pins: 2p5gbe-led1-pins {
-               mux {
-                       function = "led";
-                       groups = "2p5gbe_led1";
-               };
-       };
-
-       mmc0_pins_emmc_45: mmc0-emmc-45-pins {
-               mux {
-                       function = "flash";
-                       groups = "emmc_45";
-               };
-       };
-
-       mmc0_pins_emmc_51: mmc0-emmc-51-pins {
-               mux {
-                       function = "flash";
-                       groups = "emmc_51";
-               };
-       };
-
-       mmc0_pins_sdcard: mmc0-sdcard-pins {
-               mux {
-                       function = "flash";
-                       groups = "sdcard";
-               };
-       };
-
-       uart0_pins: uart0-pins {
-               mux {
-                       function = "uart";
-                       groups =  "uart0";
-               };
-       };
-
-       snfi_pins: snfi-pins {
-               mux {
-                       function = "flash";
-                       groups = "snfi";
-               };
-       };
-
-       spi0_pins: spi0-pins {
-               mux {
-                       function = "spi";
-                       groups = "spi0";
-               };
-       };
-
-       spi0_flash_pins: spi0-flash-pins {
-               mux {
-                       function = "spi";
-                       groups = "spi0", "spi0_wp_hold";
-               };
-       };
-
-       spi1_pins: spi1-pins {
-               mux {
-                       function = "spi";
-                       groups = "spi1";
-               };
-       };
-
-       spi2_pins: spi2-pins {
-               mux {
-                       function = "spi";
-                       groups = "spi2";
-               };
-       };
-
-       spi2_flash_pins: spi2-flash-pins {
-               mux {
-                       function = "spi";
-                       groups = "spi2", "spi2_wp_hold";
-               };
-       };
-};
-
-&pwm {
-       status = "okay";
-};
-
-&serial0 {
-       status = "okay";
-};
-
-&ssusb1 {
-       status = "okay";
-};
-
-&tphy {
-       status = "okay";
-};
-
-&watchdog {
-       status = "okay";
 };
diff --git a/src/arm64/mediatek/mt7988a-bananapi-bpi-r4.dtsi b/src/arm64/mediatek/mt7988a-bananapi-bpi-r4.dtsi
new file mode 100644 (file)
index 0000000..81ba045
--- /dev/null
@@ -0,0 +1,450 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/regulator/richtek,rt5190a-regulator.h>
+
+#include "mt7988a.dtsi"
+
+/ {
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       fan: pwm-fan {
+               compatible = "pwm-fan";
+               /* cooling level (0, 1, 2, 3) : (0% duty, 30% duty, 50% duty, 100% duty) */
+               cooling-levels = <0 80 128 255>;
+               #cooling-cells = <2>;
+               pwms = <&pwm 0 50000>;
+               status = "okay";
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+};
+
+&cpu0 {
+       proc-supply = <&rt5190_buck3>;
+};
+
+&cpu1 {
+       proc-supply = <&rt5190_buck3>;
+};
+
+&cpu2 {
+       proc-supply = <&rt5190_buck3>;
+};
+
+&cpu3 {
+       proc-supply = <&rt5190_buck3>;
+};
+
+&cpu_thermal {
+       trips {
+               cpu_trip_hot: hot {
+                       temperature = <120000>;
+                       hysteresis = <2000>;
+                       type = "hot";
+               };
+
+               cpu_trip_active_high: active-high {
+                       temperature = <115000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+
+               cpu_trip_active_med: active-med {
+                       temperature = <85000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+
+               cpu_trip_active_low: active-low {
+                       temperature = <40000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+       };
+
+       cooling-maps {
+               map-cpu-active-high {
+                       /* active: set fan to cooling level 2 */
+                       cooling-device = <&fan 3 3>;
+                       trip = <&cpu_trip_active_high>;
+               };
+
+               map-cpu-active-med {
+                       /* active: set fan to cooling level 1 */
+                       cooling-device = <&fan 2 2>;
+                       trip = <&cpu_trip_active_med>;
+               };
+
+               map-cpu-active-low {
+                       /* active: set fan to cooling level 0 */
+                       cooling-device = <&fan 1 1>;
+                       trip = <&cpu_trip_active_low>;
+               };
+       };
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+       status = "okay";
+
+       rt5190a_64: rt5190a@64 {
+               compatible = "richtek,rt5190a";
+               reg = <0x64>;
+               vin2-supply = <&rt5190_buck1>;
+               vin3-supply = <&rt5190_buck1>;
+               vin4-supply = <&rt5190_buck1>;
+
+               regulators {
+                       rt5190_buck1: buck1 {
+                               regulator-name = "rt5190a-buck1";
+                               regulator-min-microvolt = <5090000>;
+                               regulator-max-microvolt = <5090000>;
+                               regulator-allowed-modes =
+                               <RT5190A_OPMODE_AUTO>, <RT5190A_OPMODE_FPWM>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+                       buck2 {
+                               regulator-name = "vcore";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <1400000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+                       rt5190_buck3: buck3 {
+                               regulator-name = "vproc";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <1400000>;
+                               regulator-boot-on;
+                       };
+                       buck4 {
+                               regulator-name = "rt5190a-buck4";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-allowed-modes =
+                               <RT5190A_OPMODE_AUTO>, <RT5190A_OPMODE_FPWM>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+                       ldo {
+                               regulator-name = "rt5190a-ldo";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_1_pins>;
+       status = "okay";
+
+       pca9545: i2c-mux@70 {
+               compatible = "nxp,pca9545";
+               reg = <0x70>;
+               reset-gpios = <&pio 5 GPIO_ACTIVE_LOW>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       pcf8563: rtc@51 {
+                               compatible = "nxp,pcf8563";
+                               reg = <0x51>;
+                               #clock-cells = <0>;
+                       };
+
+                       eeprom@57 {
+                               compatible = "atmel,24c02";
+                               reg = <0x57>;
+                               size = <256>;
+                       };
+
+               };
+
+               i2c_sfp1: i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+               };
+       };
+};
+
+/* mPCIe SIM2 */
+&pcie0 {
+       status = "okay";
+};
+
+/* mPCIe SIM3 */
+&pcie1 {
+       status = "okay";
+};
+
+/* M.2 key-B SIM1 */
+&pcie2 {
+       status = "okay";
+};
+
+/* M.2 key-M SSD */
+&pcie3 {
+       status = "okay";
+};
+
+&pio {
+       mdio0_pins: mdio0-pins {
+               mux {
+                       function = "eth";
+                       groups = "mdc_mdio0";
+               };
+
+               conf {
+                       pins = "SMI_0_MDC", "SMI_0_MDIO";
+                       drive-strength = <8>;
+               };
+       };
+
+       i2c0_pins: i2c0-g0-pins {
+               mux {
+                       function = "i2c";
+                       groups = "i2c0_1";
+               };
+       };
+
+       i2c1_pins: i2c1-g0-pins {
+               mux {
+                       function = "i2c";
+                       groups = "i2c1_0";
+               };
+       };
+
+       i2c1_sfp_pins: i2c1-sfp-g0-pins {
+               mux {
+                       function = "i2c";
+                       groups = "i2c1_sfp";
+               };
+       };
+
+       i2c2_0_pins: i2c2-g0-pins {
+               mux {
+                       function = "i2c";
+                       groups = "i2c2_0";
+               };
+       };
+
+       i2c2_1_pins: i2c2-g1-pins {
+               mux {
+                       function = "i2c";
+                       groups = "i2c2_1";
+               };
+       };
+
+       gbe0_led0_pins: gbe0-led0-pins {
+               mux {
+                       function = "led";
+                       groups = "gbe0_led0";
+               };
+       };
+
+       gbe1_led0_pins: gbe1-led0-pins {
+               mux {
+                       function = "led";
+                       groups = "gbe1_led0";
+               };
+       };
+
+       gbe2_led0_pins: gbe2-led0-pins {
+               mux {
+                       function = "led";
+                       groups = "gbe2_led0";
+               };
+       };
+
+       gbe3_led0_pins: gbe3-led0-pins {
+               mux {
+                       function = "led";
+                       groups = "gbe3_led0";
+               };
+       };
+
+       gbe0_led1_pins: gbe0-led1-pins {
+               mux {
+                       function = "led";
+                       groups = "gbe0_led1";
+               };
+       };
+
+       gbe1_led1_pins: gbe1-led1-pins {
+               mux {
+                       function = "led";
+                       groups = "gbe1_led1";
+               };
+       };
+
+       gbe2_led1_pins: gbe2-led1-pins {
+               mux {
+                       function = "led";
+                       groups = "gbe2_led1";
+               };
+       };
+
+       gbe3_led1_pins: gbe3-led1-pins {
+               mux {
+                       function = "led";
+                       groups = "gbe3_led1";
+               };
+       };
+
+       i2p5gbe_led0_pins: 2p5gbe-led0-pins {
+               mux {
+                       function = "led";
+                       groups = "2p5gbe_led0";
+               };
+       };
+
+       i2p5gbe_led1_pins: 2p5gbe-led1-pins {
+               mux {
+                       function = "led";
+                       groups = "2p5gbe_led1";
+               };
+       };
+
+       mmc0_pins_emmc_45: mmc0-emmc-45-pins {
+               mux {
+                       function = "flash";
+                       groups = "emmc_45";
+               };
+       };
+
+       mmc0_pins_emmc_51: mmc0-emmc-51-pins {
+               mux {
+                       function = "flash";
+                       groups = "emmc_51";
+               };
+       };
+
+       mmc0_pins_sdcard: mmc0-sdcard-pins {
+               mux {
+                       function = "flash";
+                       groups = "sdcard";
+               };
+       };
+
+       snfi_pins: snfi-pins {
+               mux {
+                       function = "flash";
+                       groups = "snfi";
+               };
+       };
+
+       spi0_pins: spi0-pins {
+               mux {
+                       function = "spi";
+                       groups = "spi0";
+               };
+       };
+
+       spi0_flash_pins: spi0-flash-pins {
+               mux {
+                       function = "spi";
+                       groups = "spi0", "spi0_wp_hold";
+               };
+       };
+
+       spi2_pins: spi2-pins {
+               mux {
+                       function = "spi";
+                       groups = "spi2";
+               };
+       };
+
+       spi2_flash_pins: spi2-flash-pins {
+               mux {
+                       function = "spi";
+                       groups = "spi2", "spi2_wp_hold";
+               };
+       };
+};
+
+&pwm {
+       status = "okay";
+};
+
+&serial0 {
+       status = "okay";
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi0_flash_pins>;
+       status = "okay";
+
+       spi_nand: flash@0 {
+               compatible = "spi-nand";
+               reg = <0>;
+               spi-max-frequency = <52000000>;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+       };
+};
+
+&spi1 {
+       status = "okay";
+};
+
+&spi_nand {
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "bl2";
+                       reg = <0x0 0x200000>;
+                       read-only;
+               };
+       };
+};
+
+&ssusb1 {
+       status = "okay";
+};
+
+&tphy {
+       status = "okay";
+};
+
+&watchdog {
+       status = "okay";
+};
+
+&xsphy {
+       status = "okay";
+};
index 88b56a24efcab0194da9f7de197f8e2274d71c44..c46b31f8d6531fe2260ca7ca5b81c17090d08610 100644 (file)
                                                 "pcie_wake_n3_0";
                                };
                        };
+
+                       spi1_pins: spi1-pins {
+                               mux {
+                                       function = "spi";
+                                       groups = "spi1";
+                               };
+                       };
+
+                       uart0_pins: uart0-pins {
+                               mux {
+                                       function = "uart";
+                                       groups =  "uart0";
+                               };
+                       };
                };
 
                pwm: pwm@10048000 {
                        clocks = <&topckgen CLK_TOP_UART_SEL>,
                                 <&infracfg CLK_INFRA_52M_UART0_CK>;
                        clock-names = "baud", "bus";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&uart0_pins>;
                        status = "disabled";
                };
 
                        status = "disabled";
                };
 
+               spi0: spi@11007000 {
+                       compatible = "mediatek,mt7988-spi-quad", "mediatek,spi-ipm";
+                       reg = <0 0x11007000 0 0x100>;
+                       interrupts = <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&topckgen CLK_TOP_MPLL_D2>,
+                                <&topckgen CLK_TOP_SPI_SEL>,
+                                <&infracfg CLK_INFRA_104M_SPI0>,
+                                <&infracfg CLK_INFRA_66M_SPI0_HCK>;
+                       clock-names = "parent-clk", "sel-clk", "spi-clk",
+                                     "hclk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi1: spi@11008000 {
+                       compatible = "mediatek,mt7988-spi-single", "mediatek,spi-ipm";
+                       reg = <0 0x11008000 0 0x100>;
+                       interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&topckgen CLK_TOP_MPLL_D2>,
+                                <&topckgen CLK_TOP_SPIM_MST_SEL>,
+                                <&infracfg CLK_INFRA_104M_SPI1>,
+                                <&infracfg CLK_INFRA_66M_SPI1_HCK>;
+                       clock-names = "parent-clk", "sel-clk", "spi-clk",
+                                     "hclk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi1_pins>;
+                       status = "disabled";
+               };
+
+               spi2: spi@11009000 {
+                       compatible = "mediatek,mt7988-spi-quad", "mediatek,spi-ipm";
+                       reg = <0 0x11009000 0 0x100>;
+                       interrupts = <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&topckgen CLK_TOP_MPLL_D2>,
+                                <&topckgen CLK_TOP_SPI_SEL>,
+                                <&infracfg CLK_INFRA_104M_SPI2_BCK>,
+                                <&infracfg CLK_INFRA_66M_SPI2_HCK>;
+                       clock-names = "parent-clk", "sel-clk", "spi-clk",
+                                     "hclk";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
                lvts: lvts@1100a000 {
                        compatible = "mediatek,mt7988-lvts-ap";
                        #thermal-sensor-cells = <1>;
                                 <&infracfg CLK_INFRA_133M_USB_HCK>,
                                 <&infracfg CLK_INFRA_USB_XHCI>;
                        clock-names = "sys_ck", "ref_ck", "mcu_ck", "dma_ck", "xhci_ck";
+                       phys = <&xphyu2port0 PHY_TYPE_USB2>,
+                              <&xphyu3port0 PHY_TYPE_USB3>;
                        status = "disabled";
                };
 
                        pinctrl-0 = <&pcie2_pins>;
                        status = "disabled";
 
+                       phys = <&xphyu3port0 PHY_TYPE_PCIE>;
+                       phy-names = "pcie-phy";
+
                        #interrupt-cells = <1>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        interrupt-map = <0 0 0 1 &pcie_intc2 0>,
                        };
                };
 
+
+               topmisc: system-controller@11d10084 {
+                       compatible = "mediatek,mt7988-topmisc",
+                                    "syscon";
+                       reg = <0 0x11d10084 0 0xff80>;
+               };
+
+               xsphy: xs-phy@11e10000 {
+                       compatible = "mediatek,mt7988-xsphy",
+                                    "mediatek,xsphy";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+                       status = "disabled";
+
+                       xphyu2port0: usb-phy@11e10000 {
+                               reg = <0 0x11e10000 0 0x400>;
+                               clocks = <&infracfg CLK_INFRA_USB_UTMI>;
+                               clock-names = "ref";
+                               #phy-cells = <1>;
+                       };
+
+                       xphyu3port0: usb-phy@11e13000 {
+                               reg = <0 0x11e13400 0 0x500>;
+                               clocks = <&infracfg CLK_INFRA_USB_PIPE>;
+                               clock-names = "ref";
+                               #phy-cells = <1>;
+                               mediatek,syscon-type = <&topmisc 0x194 0>;
+                       };
+               };
+
                clock-controller@11f40000 {
                        compatible = "mediatek,mt7988-xfi-pll";
                        reg = <0 0x11f40000 0 0x1000>;
                        lvts_calibration: calib@918 {
                                reg = <0x918 0x28>;
                        };
+
+                       phy_calibration_p0: calib@940 {
+                               reg = <0x940 0x10>;
+                       };
+
+                       phy_calibration_p1: calib@954 {
+                               reg = <0x954 0x10>;
+                       };
+
+                       phy_calibration_p2: calib@968 {
+                               reg = <0x968 0x10>;
+                       };
+
+                       phy_calibration_p3: calib@97c {
+                               reg = <0x97c 0x10>;
+                       };
                };
 
                clock-controller@15000000 {
index e1495f1900a7b4dbad16c4b624077de653a8c22e..ecc6c4d6f1cdff3f297d96cf67bf53917fa01d31 100644 (file)
 
        btsco: bt-sco {
                compatible = "linux,bt-sco";
+               #sound-dai-cells = <0>;
        };
 
        wifi_pwrseq: wifi-pwrseq {
                        };
                };
        };
+};
 
-       ports {
-               port {
-                       dsi_out: endpoint {
-                               remote-endpoint = <&panel_in>;
-                       };
-               };
-       };
+&dsi_out {
+       remote-endpoint = <&panel_in>;
 };
 
 &gic {
index 0aa34e5bbaaa87e1f2d701cf8e51a0950245a99f..3c1fe80e64b9c5e32703f1e8663942a24543cf23 100644 (file)
                        phys = <&mipi_tx0>;
                        phy-names = "dphy";
                        status = "disabled";
+
+                       port {
+                               dsi_out: endpoint { };
+                       };
                };
 
                dpi0: dpi@14015000 {
diff --git a/src/arm64/mediatek/mt8186-corsola-ponyta-sku0.dts b/src/arm64/mediatek/mt8186-corsola-ponyta-sku0.dts
new file mode 100644 (file)
index 0000000..986498a
--- /dev/null
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2023 Google LLC
+ */
+
+/dts-v1/;
+#include "mt8186-corsola-ponyta.dtsi"
+
+/ {
+       model = "Google Ponyta sku0 board";
+       compatible = "google,ponyta-sku0", "google,ponyta", "mediatek,mt8186";
+};
+
+&i2c2 {
+       trackpad@15 {
+               status = "disabled";
+       };
+};
diff --git a/src/arm64/mediatek/mt8186-corsola-ponyta-sku1.dts b/src/arm64/mediatek/mt8186-corsola-ponyta-sku1.dts
new file mode 100644 (file)
index 0000000..ff5eea0
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2023 Google LLC
+ */
+
+/dts-v1/;
+#include "mt8186-corsola-ponyta.dtsi"
+
+/ {
+       model = "Google Ponyta sku1 board";
+       compatible = "google,ponyta-sku1", "google,ponyta", "mediatek,mt8186";
+};
+
+&i2c2 {
+       trackpad@2c {
+               status = "disabled";
+       };
+};
+
+&usb_c1 {
+       status = "disabled";
+};
diff --git a/src/arm64/mediatek/mt8186-corsola-ponyta.dtsi b/src/arm64/mediatek/mt8186-corsola-ponyta.dtsi
new file mode 100644 (file)
index 0000000..0abf690
--- /dev/null
@@ -0,0 +1,49 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2023 Google LLC
+ */
+
+/dts-v1/;
+#include "mt8186-corsola-steelix.dtsi"
+
+&keyboard_controller {
+       function-row-physmap = <
+               MATRIX_KEY(0x00, 0x02, 0)       /* T1 */
+               MATRIX_KEY(0x03, 0x02, 0)       /* T2 */
+               MATRIX_KEY(0x02, 0x02, 0)       /* T3 */
+               MATRIX_KEY(0x01, 0x02, 0)       /* T4 */
+               MATRIX_KEY(0x03, 0x04, 0)       /* T5 */
+               MATRIX_KEY(0x02, 0x04, 0)       /* T6 */
+               MATRIX_KEY(0x01, 0x04, 0)       /* T7 */
+               MATRIX_KEY(0x00, 0x04, 0)       /* T8 */
+               MATRIX_KEY(0x00, 0x01, 0)       /* T9 */
+               MATRIX_KEY(0x02, 0x09, 0)       /* T10 */
+               MATRIX_KEY(0x01, 0x09, 0)       /* T11 */
+               MATRIX_KEY(0x01, 0x05, 0)       /* T12 */
+       >;
+
+       linux,keymap = <
+               CROS_STD_MAIN_KEYMAP
+               MATRIX_KEY(0x00, 0x02, KEY_BACK)
+               MATRIX_KEY(0x03, 0x02, KEY_REFRESH)
+               MATRIX_KEY(0x02, 0x02, KEY_ZOOM)
+               MATRIX_KEY(0x01, 0x02, KEY_SCALE)
+               MATRIX_KEY(0x03, 0x04, KEY_SYSRQ)
+               MATRIX_KEY(0x02, 0x04, KEY_BRIGHTNESSDOWN)
+               MATRIX_KEY(0x01, 0x04, KEY_BRIGHTNESSUP)
+               MATRIX_KEY(0x00, 0x04, KEY_PLAYPAUSE)
+               MATRIX_KEY(0x00, 0x01, KEY_MICMUTE)
+               MATRIX_KEY(0x02, 0x09, KEY_MUTE)
+               MATRIX_KEY(0x01, 0x09, KEY_VOLUMEDOWN)
+               MATRIX_KEY(0x01, 0x05, KEY_VOLUMEUP)
+       >;
+};
+
+&mt6366codec {
+       mediatek,dmic-mode = <1>; /* one-wire */
+};
+
+&sound {
+       model = "mt8186_rt1019_rt5682s";
+};
+
index 5ea8bdc00e811b1c8047922b83c4c539f96f7d26..a8e79c2791ba10e163904ba27e07385b673fc378 100644 (file)
                          "TP",
                          "TP";
 
-       dpi_default_pins: dpi-default-pins {
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO103__FUNC_GPIO103>,
-                                <PINMUX_GPIO104__FUNC_GPIO104>,
-                                <PINMUX_GPIO105__FUNC_GPIO105>,
-                                <PINMUX_GPIO106__FUNC_GPIO106>,
-                                <PINMUX_GPIO107__FUNC_GPIO107>,
-                                <PINMUX_GPIO108__FUNC_GPIO108>,
-                                <PINMUX_GPIO109__FUNC_GPIO109>,
-                                <PINMUX_GPIO110__FUNC_GPIO110>,
-                                <PINMUX_GPIO111__FUNC_GPIO111>,
-                                <PINMUX_GPIO112__FUNC_GPIO112>,
-                                <PINMUX_GPIO113__FUNC_GPIO113>,
-                                <PINMUX_GPIO114__FUNC_GPIO114>,
-                                <PINMUX_GPIO101__FUNC_GPIO101>,
-                                <PINMUX_GPIO100__FUNC_GPIO100>,
-                                <PINMUX_GPIO102__FUNC_GPIO102>,
-                                <PINMUX_GPIO99__FUNC_GPIO99>;
-                       drive-strength = <10>;
-                       output-low;
-               };
-       };
-
-       dpi_func_pins: dpi-func-pins {
-               pins-cmd-dat {
-                       pinmux = <PINMUX_GPIO103__FUNC_DPI_DATA0>,
-                                <PINMUX_GPIO104__FUNC_DPI_DATA1>,
-                                <PINMUX_GPIO105__FUNC_DPI_DATA2>,
-                                <PINMUX_GPIO106__FUNC_DPI_DATA3>,
-                                <PINMUX_GPIO107__FUNC_DPI_DATA4>,
-                                <PINMUX_GPIO108__FUNC_DPI_DATA5>,
-                                <PINMUX_GPIO109__FUNC_DPI_DATA6>,
-                                <PINMUX_GPIO110__FUNC_DPI_DATA7>,
-                                <PINMUX_GPIO111__FUNC_DPI_DATA8>,
-                                <PINMUX_GPIO112__FUNC_DPI_DATA9>,
-                                <PINMUX_GPIO113__FUNC_DPI_DATA10>,
-                                <PINMUX_GPIO114__FUNC_DPI_DATA11>,
-                                <PINMUX_GPIO101__FUNC_DPI_HSYNC>,
-                                <PINMUX_GPIO100__FUNC_DPI_VSYNC>,
-                                <PINMUX_GPIO102__FUNC_DPI_DE>,
-                                <PINMUX_GPIO99__FUNC_DPI_PCLK>;
-                       drive-strength = <10>;
-               };
-       };
-
        en_pp6000_mipi_disp_150ma_fixed_pins: en_pp6000-mipi-disp-150ma-fixed-pins {
                pins-en {
                        pinmux = <PINMUX_GPIO154__FUNC_GPIO154>;
index cebb134331fbd98cad8fec6d2a9f2e504e370022..fc78a79d96e97b014fe06c7e91e7c23f0a8b52f3 100644 (file)
        cap-sdio-irq;
        no-mmc;
        no-sd;
-       non-removable;
        vmmc-supply = <&pp3300_s3>;
        vqmmc-supply = <&mt6366_vio18_reg>;
        mmc-pwrseq = <&wifi_pwrseq>;
index f89835ac36f36f86e2054ae0c332172be97b049a..f4c207d65b877e1eefaa26540446c3c06369ca21 100644 (file)
        interrupts-extended = <&pio 222 IRQ_TYPE_LEVEL_HIGH>;
 };
 
-&scp {
+&scp_cluster {
+       status = "okay";
+};
+
+&scp_c0 {
        memory-region = <&scp_mem_reserved>;
        status = "okay";
 };
index 69a8423d3858903325ac807de3ef87c63d2a9e1f..202478407727e07732d0abafc7d4d1d6a8fa0aa1 100644 (file)
                        clocks = <&infracfg_ao CLK_INFRA_AO_GCE2>;
                };
 
-               scp: scp@10500000 {
-                       compatible = "mediatek,mt8188-scp";
-                       reg = <0 0x10500000 0 0x100000>,
-                             <0 0x10720000 0 0xe0000>;
-                       reg-names = "sram", "cfg";
-                       interrupts = <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH 0>;
+               scp_cluster: scp@10720000 {
+                       compatible = "mediatek,mt8188-scp-dual";
+                       reg = <0 0x10720000 0 0xe0000>;
+                       reg-names = "cfg";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0 0 0x10500000 0x100000>;
+                       status = "disabled";
+
+                       scp_c0: scp@0 {
+                               compatible = "mediatek,scp-core";
+                               reg = <0x0 0xd0000>;
+                               reg-names = "sram";
+                               interrupts = <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH 0>;
+                               status = "disabled";
+                       };
+
+                       scp_c1: scp@d0000 {
+                               compatible = "mediatek,scp-core";
+                               reg = <0xd0000 0x2f000>;
+                               reg-names = "sram";
+                               interrupts = <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH 0>;
+                               status = "disabled";
+                       };
                };
 
                afe: audio-controller@10b10000 {
                        #clock-cells = <1>;
                };
 
+               dma-controller@14001000 {
+                       compatible = "mediatek,mt8188-mdp3-rdma";
+                       reg = <0 0x14001000 0 0x1000>;
+                       #dma-cells = <1>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_RDMA>;
+                       mboxes = <&gce0 13 CMDQ_THR_PRIO_1>,
+                                <&gce0 14 CMDQ_THR_PRIO_1>,
+                                <&gce0 16 CMDQ_THR_PRIO_1>,
+                                <&gce0 21 CMDQ_THR_PRIO_1>,
+                                <&gce0 22 CMDQ_THR_PRIO_1>;
+                       iommus = <&vpp_iommu M4U_PORT_L4_MDP_RDMA>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS0>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0x1000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP0_MDP_RDMA_SOF>,
+                                             <CMDQ_EVENT_VPP0_MDP_RDMA_FRAME_DONE>;
+                       mediatek,scp = <&scp_c0>;
+               };
+
+               display@14002000 {
+                       compatible = "mediatek,mt8188-mdp3-fg", "mediatek,mt8195-mdp3-fg";
+                       reg = <0 0x14002000 0 0x1000>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_FG>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0x2000 0x1000>;
+               };
+
+               display@14004000 {
+                       compatible = "mediatek,mt8188-mdp3-hdr", "mediatek,mt8195-mdp3-hdr";
+                       reg = <0 0x14004000 0 0x1000>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_HDR>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0x4000 0x1000>;
+               };
+
+               display@14005000 {
+                       compatible = "mediatek,mt8188-mdp3-aal", "mediatek,mt8195-mdp3-aal";
+                       reg = <0 0x14005000 0 0x1000>;
+                       interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_AAL>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS0>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0x5000 0x1000>;
+               };
+
+               display@14006000 {
+                       compatible = "mediatek,mt8188-mdp3-rsz", "mediatek,mt8183-mdp3-rsz";
+                       reg = <0 0x14006000 0 0x1000>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_RSZ>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0x6000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP0_MDP_RSZ_IN_RSZ_SOF>,
+                                             <CMDQ_EVENT_VPP0_MDP_RSZ_FRAME_DONE>;
+               };
+
+               display@14007000 {
+                       compatible = "mediatek,mt8188-mdp3-tdshp", "mediatek,mt8195-mdp3-tdshp";
+                       reg = <0 0x14007000 0 0x1000>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_TDSHP>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0x7000 0x1000>;
+               };
+
+               display@14008000 {
+                       compatible = "mediatek,mt8188-mdp3-color", "mediatek,mt8195-mdp3-color";
+                       reg = <0 0x14008000 0 0x1000>;
+                       interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_COLOR>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS0>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0x8000 0x1000>;
+               };
+
+               display@14009000 {
+                       compatible = "mediatek,mt8188-mdp3-ovl", "mediatek,mt8195-mdp3-ovl";
+                       reg = <0 0x14009000 0 0x1000>;
+                       interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_OVL>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS0>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0x9000 0x1000>;
+                       iommus = <&vpp_iommu M4U_PORT_L4_MDP_OVL>;
+               };
+
+               display@1400a000 {
+                       compatible = "mediatek,mt8188-mdp3-padding", "mediatek,mt8195-mdp3-padding";
+                       reg = <0 0x1400a000 0 0x1000>;
+                       clocks = <&vppsys0 CLK_VPP0_PADDING>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS0>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0xa000 0x1000>;
+               };
+
+               display@1400b000 {
+                       compatible = "mediatek,mt8188-mdp3-tcc", "mediatek,mt8195-mdp3-tcc";
+                       reg = <0 0x1400b000 0 0x1000>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_TCC>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0xb000 0x1000>;
+               };
+
+               display@1400c000 {
+                       compatible = "mediatek,mt8188-mdp3-wrot", "mediatek,mt8183-mdp3-wrot";
+                       reg = <0 0x1400c000 0 0x1000>;
+                       #dma-cells = <1>;
+                       clocks = <&vppsys0 CLK_VPP0_MDP_WROT>;
+                       iommus = <&vpp_iommu M4U_PORT_L4_MDP_WROT>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS0>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0xc000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP0_MDP_WROT_SOF>,
+                                             <CMDQ_EVENT_VPP0_MDP_WROT_VIDO_WDONE>;
+               };
+
+               mutex@1400f000 {
+                       compatible = "mediatek,mt8188-vpp-mutex";
+                       reg = <0 0x1400f000 0 0x1000>;
+                       interrupts = <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys0 CLK_VPP0_MUTEX>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS0>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_1400XXXX 0xf000 0x1000>;
+               };
+
                vpp_smi_common: smi@14012000 {
                        compatible = "mediatek,mt8188-smi-common-vpp";
                        reg = <0 0x14012000 0 0x1000>;
                        mediatek,larbs = <&larb1 &larb3 &larb4 &larb6 &larb7 &larb23>;
                };
 
+               dma-controller@14f09000 {
+                       compatible = "mediatek,mt8188-mdp3-rdma";
+                       reg = <0 0x14f09000 0 0x1000>;
+                       #dma-cells = <1>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_MDP_RDMA>;
+                       iommus = <&vdo_iommu M4U_PORT_L5_SVPP2_MDP_RDMA>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f0XXXX 0x9000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP1_SVPP2_MDP_RDMA_SOF>,
+                                             <CMDQ_EVENT_VPP1_SVPP2_MDP_RDMA_FRAME_DONE>;
+               };
+
+               dma-controller@14f0a000 {
+                       compatible = "mediatek,mt8188-mdp3-rdma";
+                       reg = <0 0x14f0a000 0 0x1000>;
+                       #dma-cells = <1>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_MDP_RDMA>;
+                       iommus = <&vpp_iommu M4U_PORT_L6_SVPP3_MDP_RDMA>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f0XXXX 0xa000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP1_SVPP3_MDP_RDMA_SOF>,
+                                             <CMDQ_EVENT_VPP1_SVPP3_MDP_RDMA_FRAME_DONE>;
+               };
+
+               display@14f0c000 {
+                       compatible = "mediatek,mt8188-mdp3-fg", "mediatek,mt8195-mdp3-fg";
+                       reg = <0 0x14f0c000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_MDP_FG>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f0XXXX 0xc000 0x1000>;
+               };
+
+               display@14f0d000 {
+                       compatible = "mediatek,mt8188-mdp3-fg", "mediatek,mt8195-mdp3-fg";
+                       reg = <0 0x14f0d000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_MDP_FG>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f0XXXX 0xd000 0x1000>;
+               };
+
+               display@14f0f000 {
+                       compatible = "mediatek,mt8188-mdp3-hdr", "mediatek,mt8195-mdp3-hdr";
+                       reg = <0 0x14f0f000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_MDP_HDR>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f0XXXX 0xf000 0x1000>;
+               };
+
+               display@14f10000 {
+                       compatible = "mediatek,mt8188-mdp3-hdr", "mediatek,mt8195-mdp3-hdr";
+                       reg = <0 0x14f10000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_MDP_HDR>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0 0x1000>;
+               };
+
+               display@14f12000 {
+                       compatible = "mediatek,mt8188-mdp3-aal", "mediatek,mt8195-mdp3-aal";
+                       reg = <0 0x14f12000 0 0x1000>;
+                       interrupts = <GIC_SPI 618 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_MDP_AAL>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0x2000 0x1000>;
+               };
+
+               display@14f13000 {
+                       compatible = "mediatek,mt8188-mdp3-aal", "mediatek,mt8195-mdp3-aal";
+                       reg = <0 0x14f13000 0 0x1000>;
+                       interrupts = <GIC_SPI 619 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_MDP_AAL>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0x3000 0x1000>;
+               };
+
+               display@14f15000 {
+                       compatible = "mediatek,mt8188-mdp3-rsz", "mediatek,mt8183-mdp3-rsz";
+                       reg = <0 0x14f15000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_MDP_RSZ>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0x5000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP1_SVPP2_MDP_RSZ_SOF>,
+                                             <CMDQ_EVENT_VPP1_SVPP2_MDP_RSZ_FRAME_DONE>;
+               };
+
+               display@14f16000 {
+                       compatible = "mediatek,mt8188-mdp3-rsz", "mediatek,mt8183-mdp3-rsz";
+                       reg = <0 0x14f16000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_MDP_RSZ>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0x6000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP1_SVPP3_MDP_RSZ_SOF>,
+                                             <CMDQ_EVENT_VPP1_SVPP3_MDP_RSZ_FRAME_DONE>;
+               };
+
+               display@14f18000 {
+                       compatible = "mediatek,mt8188-mdp3-tdshp", "mediatek,mt8195-mdp3-tdshp";
+                       reg = <0 0x14f18000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_MDP_TDSHP>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0x8000 0x1000>;
+               };
+
+               display@14f19000 {
+                       compatible = "mediatek,mt8188-mdp3-tdshp", "mediatek,mt8195-mdp3-tdshp";
+                       reg = <0 0x14f19000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_MDP_TDSHP>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0x9000 0x1000>;
+               };
+
+               display@14f1a000 {
+                       compatible = "mediatek,mt8188-mdp3-merge", "mediatek,mt8195-mdp3-merge";
+                       reg = <0 0x14f1a000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_VPP_MERGE>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0xa000 0x1000>;
+               };
+
+               display@14f1b000 {
+                       compatible = "mediatek,mt8188-mdp3-merge", "mediatek,mt8195-mdp3-merge";
+                       reg = <0 0x14f1b000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_VPP_MERGE>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0xb000 0x1000>;
+               };
+
+               display@14f1d000 {
+                       compatible = "mediatek,mt8188-mdp3-color", "mediatek,mt8195-mdp3-color";
+                       reg = <0 0x14f1d000 0 0x1000>;
+                       interrupts = <GIC_SPI 629 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_MDP_COLOR>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0xd000 0x1000>;
+               };
+
+               display@14f1e000 {
+                       compatible = "mediatek,mt8188-mdp3-color", "mediatek,mt8195-mdp3-color";
+                       reg = <0 0x14f1e000 0 0x1000>;
+                       interrupts = <GIC_SPI 630 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_MDP_COLOR>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f1XXXX 0xe000 0x1000>;
+               };
+
+               display@14f21000 {
+                       compatible = "mediatek,mt8188-mdp3-padding",
+                                    "mediatek,mt8195-mdp3-padding";
+                       reg = <0 0x14f21000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_VPP_PAD>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f2XXXX 0x1000 0x1000>;
+               };
+
+               display@14f22000 {
+                       compatible = "mediatek,mt8188-mdp3-padding",
+                                    "mediatek,mt8195-mdp3-padding";
+                       reg = <0 0x14f22000 0 0x1000>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_VPP_PAD>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f2XXXX 0x2000 0x1000>;
+               };
+
+               display@14f24000 {
+                       compatible = "mediatek,mt8188-mdp3-wrot", "mediatek,mt8183-mdp3-wrot";
+                       reg = <0 0x14f24000 0 0x1000>;
+                       #dma-cells = <1>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP2_MDP_WROT>;
+                       iommus = <&vdo_iommu M4U_PORT_L5_SVPP2_MDP_WROT>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f2XXXX 0x4000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP1_SVPP2_MDP_WROT_SOF>,
+                                             <CMDQ_EVENT_VPP1_SVPP2_MDP_WROT_FRAME_DONE>;
+               };
+
+               display@14f25000 {
+                       compatible = "mediatek,mt8188-mdp3-wrot", "mediatek,mt8183-mdp3-wrot";
+                       reg = <0 0x14f25000 0 0x1000>;
+                       #dma-cells = <1>;
+                       clocks = <&vppsys1 CLK_VPP1_SVPP3_MDP_WROT>;
+                       iommus = <&vpp_iommu M4U_PORT_L6_SVPP3_MDP_WROT>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f2XXXX 0x5000 0x1000>;
+                       mediatek,gce-events = <CMDQ_EVENT_VPP1_SVPP3_MDP_WROT_SOF>,
+                                             <CMDQ_EVENT_VPP1_SVPP3_MDP_WROT_FRAME_DONE>;
+               };
+
                wpesys: clock-controller@14e00000 {
                        compatible = "mediatek,mt8188-wpesys";
                        reg = <0 0x14e00000 0 0x1000>;
                        #clock-cells = <1>;
                };
 
+               mutex@14f01000 {
+                       compatible = "mediatek,mt8188-vpp-mutex";
+                       reg = <0 0x14f01000 0 0x1000>;
+                       interrupts = <GIC_SPI 635 IRQ_TYPE_LEVEL_HIGH 0>;
+                       clocks = <&vppsys1 CLK_VPP1_DISP_MUTEX>;
+                       power-domains = <&spm MT8188_POWER_DOMAIN_VPPSYS1>;
+                       mediatek,gce-client-reg = <&gce1 SUBSYS_14f0XXXX 0x1000 0x1000>;
+               };
+
                larb5: smi@14f02000 {
                        compatible = "mediatek,mt8188-smi-larb";
                        reg = <0 0x14f02000 0 0x1000>;
                        compatible = "mediatek,mt8188-imgsys1-dip-top";
                        reg = <0 0x15110000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                imgsys1_dip_nr: clock-controller@15130000 {
                        compatible = "mediatek,mt8188-imgsys1-dip-nr";
                        reg = <0 0x15130000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                imgsys_wpe1: clock-controller@15220000 {
                        compatible = "mediatek,mt8188-imgsys-wpe1";
                        reg = <0 0x15220000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                ipesys: clock-controller@15330000 {
                        compatible = "mediatek,mt8188-ipesys";
                        reg = <0 0x15330000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                imgsys_wpe2: clock-controller@15520000 {
                        compatible = "mediatek,mt8188-imgsys-wpe2";
                        reg = <0 0x15520000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                imgsys_wpe3: clock-controller@15620000 {
                        compatible = "mediatek,mt8188-imgsys-wpe3";
                        reg = <0 0x15620000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                camsys: clock-controller@16000000 {
                        compatible = "mediatek,mt8188-camsys-rawa";
                        reg = <0 0x1604f000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                camsys_yuva: clock-controller@1606f000 {
                        compatible = "mediatek,mt8188-camsys-yuva";
                        reg = <0 0x1606f000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                camsys_rawb: clock-controller@1608f000 {
                        compatible = "mediatek,mt8188-camsys-rawb";
                        reg = <0 0x1608f000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                camsys_yuvb: clock-controller@160af000 {
                        compatible = "mediatek,mt8188-camsys-yuvb";
                        reg = <0 0x160af000 0 0x1000>;
                        #clock-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                ccusys: clock-controller@17200000 {
                        iommus = <&vpp_iommu M4U_PORT_L23_HW_VDEC_UFO_ENC_EXT>;
                        #address-cells = <2>;
                        #size-cells = <2>;
-                       mediatek,scp = <&scp>;
+                       mediatek,scp = <&scp_c0>;
 
                        video-codec@10000 {
                                compatible = "mediatek,mtk-vcodec-lat";
                                 <&vdo_iommu M4U_PORT_L19_VENC_SUB_W_LUMA>,
                                 <&vdo_iommu M4U_PORT_L19_VENC_SUB_R_LUMA>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VENC>;
-                       mediatek,scp = <&scp>;
+                       mediatek,scp = <&scp_c0>;
                };
 
                jpeg_encoder: jpeg-encoder@1a030000 {
                        reg = <0 0x1c002000 0 0x1000>;
                        clocks = <&vdosys0 CLK_VDO0_DISP_RDMA0>;
                        interrupts = <GIC_SPI 638 IRQ_TYPE_LEVEL_HIGH 0>;
-                       iommus = <&vdo_iommu M4U_PORT_L1_DISP_RDMA0>;
+                       iommus = <&vpp_iommu M4U_PORT_L1_DISP_RDMA0>;
                        power-domains = <&spm MT8188_POWER_DOMAIN_VDOSYS0>;
                        mediatek,gce-client-reg = <&gce0 SUBSYS_1c00XXXX 0x2000 0x1000>;
 
index 4f2dc0a7556610907314184dea2a535e09d76ef0..dd065b1bf94a3d6893a82d4d998c138bf6b76526 100644 (file)
                                        #size-cells = <0>;
                                        #power-domain-cells = <1>;
 
-                                       power-domain@MT8195_POWER_DOMAIN_VDEC1 {
-                                               reg = <MT8195_POWER_DOMAIN_VDEC1>;
-                                               clocks = <&vdecsys CLK_VDEC_LARB1>;
-                                               clock-names = "vdec1-0";
-                                               mediatek,infracfg = <&infracfg_ao>;
-                                               #power-domain-cells = <0>;
-                                       };
-
-                                       power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 {
-                                               reg = <MT8195_POWER_DOMAIN_VENC_CORE1>;
-                                               clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>;
-                                               clock-names = "venc1-larb";
-                                               mediatek,infracfg = <&infracfg_ao>;
-                                               #power-domain-cells = <0>;
-                                       };
-
                                        power-domain@MT8195_POWER_DOMAIN_VDOSYS0 {
                                                reg = <MT8195_POWER_DOMAIN_VDOSYS0>;
                                                clocks = <&topckgen CLK_TOP_CFG_VDO0>,
                                                        clocks = <&vdecsys_soc CLK_VDEC_SOC_LARB1>;
                                                        clock-names = "vdec0-0";
                                                        mediatek,infracfg = <&infracfg_ao>;
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
                                                        #power-domain-cells = <0>;
-                                               };
 
-                                               power-domain@MT8195_POWER_DOMAIN_VDEC2 {
-                                                       reg = <MT8195_POWER_DOMAIN_VDEC2>;
-                                                       clocks = <&vdecsys_core1 CLK_VDEC_CORE1_LARB1>;
-                                                       clock-names = "vdec2-0";
-                                                       mediatek,infracfg = <&infracfg_ao>;
-                                                       #power-domain-cells = <0>;
+                                                       power-domain@MT8195_POWER_DOMAIN_VDEC1 {
+                                                               reg = <MT8195_POWER_DOMAIN_VDEC1>;
+                                                               clocks = <&vdecsys CLK_VDEC_LARB1>;
+                                                               clock-names = "vdec1-0";
+                                                               mediatek,infracfg = <&infracfg_ao>;
+                                                               #power-domain-cells = <0>;
+                                                       };
+
+                                                       power-domain@MT8195_POWER_DOMAIN_VDEC2 {
+                                                               reg = <MT8195_POWER_DOMAIN_VDEC2>;
+                                                               clocks = <&vdecsys_core1 CLK_VDEC_CORE1_LARB1>;
+                                                               clock-names = "vdec2-0";
+                                                               mediatek,infracfg = <&infracfg_ao>;
+                                                               #power-domain-cells = <0>;
+                                                       };
                                                };
 
                                                power-domain@MT8195_POWER_DOMAIN_VENC {
                                                        clocks = <&vencsys CLK_VENC_LARB>;
                                                        clock-names = "venc0-larb";
                                                        mediatek,infracfg = <&infracfg_ao>;
+                                                       #address-cells = <1>;
+                                                       #size-cells = <0>;
                                                        #power-domain-cells = <0>;
+
+                                                       power-domain@MT8195_POWER_DOMAIN_VENC_CORE1 {
+                                                               reg = <MT8195_POWER_DOMAIN_VENC_CORE1>;
+                                                               clocks = <&vencsys_core1 CLK_VENC_CORE1_LARB>;
+                                                               clock-names = "venc1-larb";
+                                                               mediatek,infracfg = <&infracfg_ao>;
+                                                               #power-domain-cells = <0>;
+                                                       };
                                                };
 
                                                power-domain@MT8195_POWER_DOMAIN_VDOSYS1 {
                        compatible = "mediatek,mt8195-dp-intf";
                        reg = <0 0x1c015000 0 0x1000>;
                        interrupts = <GIC_SPI 657 IRQ_TYPE_LEVEL_HIGH 0>;
+                       power-domains = <&spm MT8195_POWER_DOMAIN_VDOSYS0>;
                        clocks = <&vdosys0 CLK_VDO0_DP_INTF0_DP_INTF>,
                                 <&vdosys0  CLK_VDO0_DP_INTF0>,
                                 <&apmixedsys CLK_APMIXED_TVDPLL1>;
diff --git a/src/arm64/mediatek/mt8196-pinfunc.h b/src/arm64/mediatek/mt8196-pinfunc.h
new file mode 100644 (file)
index 0000000..99535a6
--- /dev/null
@@ -0,0 +1,1574 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * Copyright (C) 2025 MediaTek Inc.
+ * Author: Guodong Liu <guodong.liu@mediatek.com>
+ *         Lei Xue <lei.xue@mediatek.com>
+ *         Cathy Xu <ot_cathy.xu@mediatek.com>
+ */
+
+#ifndef __MT8196_PINFUNC_H
+#define __MT8196_PINFUNC_H
+
+#include <dt-bindings/pinctrl/mt65xx.h>
+
+#define PINMUX_GPIO0__FUNC_GPIO0 (MTK_PIN_NO(0) | 0)
+#define PINMUX_GPIO0__FUNC_DMIC1_CLK (MTK_PIN_NO(0) | 1)
+#define PINMUX_GPIO0__FUNC_SPI3_A_MO (MTK_PIN_NO(0) | 3)
+#define PINMUX_GPIO0__FUNC_FMI2S_B_LRCK (MTK_PIN_NO(0) | 4)
+#define PINMUX_GPIO0__FUNC_SCP_DMIC1_CLK (MTK_PIN_NO(0) | 5)
+#define PINMUX_GPIO0__FUNC_TP_GPIO14_AO (MTK_PIN_NO(0) | 6)
+
+#define PINMUX_GPIO1__FUNC_GPIO1 (MTK_PIN_NO(1) | 0)
+#define PINMUX_GPIO1__FUNC_DMIC1_DAT (MTK_PIN_NO(1) | 1)
+#define PINMUX_GPIO1__FUNC_SRCLKENAI1 (MTK_PIN_NO(1) | 2)
+#define PINMUX_GPIO1__FUNC_SPI3_A_MI (MTK_PIN_NO(1) | 3)
+#define PINMUX_GPIO1__FUNC_FMI2S_B_DI (MTK_PIN_NO(1) | 4)
+#define PINMUX_GPIO1__FUNC_SCP_DMIC1_DAT (MTK_PIN_NO(1) | 5)
+#define PINMUX_GPIO1__FUNC_TP_GPIO15_AO (MTK_PIN_NO(1) | 6)
+
+#define PINMUX_GPIO2__FUNC_GPIO2 (MTK_PIN_NO(2) | 0)
+#define PINMUX_GPIO2__FUNC_PWM_VLP (MTK_PIN_NO(2) | 1)
+#define PINMUX_GPIO2__FUNC_DSI_HSYNC (MTK_PIN_NO(2) | 2)
+#define PINMUX_GPIO2__FUNC_RG_TSFDC_LDO_EN (MTK_PIN_NO(2) | 5)
+#define PINMUX_GPIO2__FUNC_TP_GPIO8_AO (MTK_PIN_NO(2) | 6)
+
+#define PINMUX_GPIO3__FUNC_GPIO3 (MTK_PIN_NO(3) | 0)
+#define PINMUX_GPIO3__FUNC_MD_INT0 (MTK_PIN_NO(3) | 1)
+#define PINMUX_GPIO3__FUNC_DSI1_HSYNC (MTK_PIN_NO(3) | 2)
+#define PINMUX_GPIO3__FUNC_DA_TSFDC_LDO_MODE (MTK_PIN_NO(3) | 5)
+#define PINMUX_GPIO3__FUNC_TP_GPIO9_AO (MTK_PIN_NO(3) | 6)
+
+#define PINMUX_GPIO4__FUNC_GPIO4 (MTK_PIN_NO(4) | 0)
+#define PINMUX_GPIO4__FUNC_DISP_PWM1 (MTK_PIN_NO(4) | 1)
+#define PINMUX_GPIO4__FUNC_MD32_0_GPIO0 (MTK_PIN_NO(4) | 2)
+
+#define PINMUX_GPIO5__FUNC_GPIO5 (MTK_PIN_NO(5) | 0)
+#define PINMUX_GPIO5__FUNC_LCM1_RST (MTK_PIN_NO(5) | 1)
+#define PINMUX_GPIO5__FUNC_SPI7_A_CLK (MTK_PIN_NO(5) | 2)
+
+#define PINMUX_GPIO6__FUNC_GPIO6 (MTK_PIN_NO(6) | 0)
+#define PINMUX_GPIO6__FUNC_DSI1_TE (MTK_PIN_NO(6) | 1)
+#define PINMUX_GPIO6__FUNC_SPI7_A_CSB (MTK_PIN_NO(6) | 2)
+
+#define PINMUX_GPIO7__FUNC_GPIO7 (MTK_PIN_NO(7) | 0)
+#define PINMUX_GPIO7__FUNC_SPI7_A_MO (MTK_PIN_NO(7) | 2)
+#define PINMUX_GPIO7__FUNC_GPS_PPS0 (MTK_PIN_NO(7) | 3)
+
+#define PINMUX_GPIO8__FUNC_GPIO8 (MTK_PIN_NO(8) | 0)
+#define PINMUX_GPIO8__FUNC_SPI7_A_MI (MTK_PIN_NO(8) | 2)
+#define PINMUX_GPIO8__FUNC_EDP_TX_HPD (MTK_PIN_NO(8) | 3)
+
+#define PINMUX_GPIO9__FUNC_GPIO9 (MTK_PIN_NO(9) | 0)
+#define PINMUX_GPIO9__FUNC_I2SIN1_LRCK (MTK_PIN_NO(9) | 3)
+#define PINMUX_GPIO9__FUNC_RG_TSFDC_LDO_REFSEL0 (MTK_PIN_NO(9) | 7)
+
+#define PINMUX_GPIO10__FUNC_GPIO10 (MTK_PIN_NO(10) | 0)
+#define PINMUX_GPIO10__FUNC_I2SOUT1_DO (MTK_PIN_NO(10) | 3)
+#define PINMUX_GPIO10__FUNC_RG_TSFDC_LDO_REFSEL1 (MTK_PIN_NO(10) | 7)
+
+#define PINMUX_GPIO11__FUNC_GPIO11 (MTK_PIN_NO(11) | 0)
+#define PINMUX_GPIO11__FUNC_FMI2S_B_BCK (MTK_PIN_NO(11) | 4)
+#define PINMUX_GPIO11__FUNC_DBG_MON_A30 (MTK_PIN_NO(11) | 7)
+
+#define PINMUX_GPIO12__FUNC_GPIO12 (MTK_PIN_NO(12) | 0)
+#define PINMUX_GPIO12__FUNC_I2SIN1_DI_B (MTK_PIN_NO(12) | 3)
+
+#define PINMUX_GPIO13__FUNC_GPIO13 (MTK_PIN_NO(13) | 0)
+#define PINMUX_GPIO13__FUNC_EDP_TX_HPD (MTK_PIN_NO(13) | 1)
+#define PINMUX_GPIO13__FUNC_GPS_PPS1 (MTK_PIN_NO(13) | 2)
+
+#define PINMUX_GPIO14__FUNC_GPIO14 (MTK_PIN_NO(14) | 0)
+#define PINMUX_GPIO14__FUNC_SRCLKENA2 (MTK_PIN_NO(14) | 1)
+#define PINMUX_GPIO14__FUNC_DSI2_TE (MTK_PIN_NO(14) | 2)
+#define PINMUX_GPIO14__FUNC_SPMI_P_TRIG_FLAG (MTK_PIN_NO(14) | 3)
+#define PINMUX_GPIO14__FUNC_MD_INT3 (MTK_PIN_NO(14) | 5)
+#define PINMUX_GPIO14__FUNC_TP_GPIO8_AO (MTK_PIN_NO(14) | 6)
+
+#define PINMUX_GPIO15__FUNC_GPIO15 (MTK_PIN_NO(15) | 0)
+#define PINMUX_GPIO15__FUNC_SRCLKENAI0 (MTK_PIN_NO(15) | 1)
+#define PINMUX_GPIO15__FUNC_SPMI_M_TRIG_FLAG (MTK_PIN_NO(15) | 2)
+#define PINMUX_GPIO15__FUNC_UCTS0 (MTK_PIN_NO(15) | 3)
+#define PINMUX_GPIO15__FUNC_MD_INT4 (MTK_PIN_NO(15) | 4)
+#define PINMUX_GPIO15__FUNC_I2SOUT2_DO (MTK_PIN_NO(15) | 5)
+#define PINMUX_GPIO15__FUNC_TP_GPIO9_AO (MTK_PIN_NO(15) | 6)
+
+#define PINMUX_GPIO16__FUNC_GPIO16 (MTK_PIN_NO(16) | 0)
+#define PINMUX_GPIO16__FUNC_SRCLKENAI1 (MTK_PIN_NO(16) | 1)
+#define PINMUX_GPIO16__FUNC_DP_TX_HPD (MTK_PIN_NO(16) | 2)
+#define PINMUX_GPIO16__FUNC_URTS0 (MTK_PIN_NO(16) | 3)
+#define PINMUX_GPIO16__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(16) | 4)
+#define PINMUX_GPIO16__FUNC_KPROW2 (MTK_PIN_NO(16) | 5)
+#define PINMUX_GPIO16__FUNC_TP_GPIO10_AO (MTK_PIN_NO(16) | 6)
+
+#define PINMUX_GPIO17__FUNC_GPIO17 (MTK_PIN_NO(17) | 0)
+#define PINMUX_GPIO17__FUNC_MD_INT0 (MTK_PIN_NO(17) | 1)
+#define PINMUX_GPIO17__FUNC_DP_OC_EN (MTK_PIN_NO(17) | 2)
+#define PINMUX_GPIO17__FUNC_UCTS1 (MTK_PIN_NO(17) | 3)
+#define PINMUX_GPIO17__FUNC_MD_NTN_URXD1 (MTK_PIN_NO(17) | 4)
+#define PINMUX_GPIO17__FUNC_KPCOL2 (MTK_PIN_NO(17) | 5)
+#define PINMUX_GPIO17__FUNC_TP_GPIO11_AO (MTK_PIN_NO(17) | 6)
+
+#define PINMUX_GPIO18__FUNC_GPIO18 (MTK_PIN_NO(18) | 0)
+#define PINMUX_GPIO18__FUNC_DMIC1_CLK (MTK_PIN_NO(18) | 1)
+#define PINMUX_GPIO18__FUNC_DP_RAUX_SBU1 (MTK_PIN_NO(18) | 2)
+#define PINMUX_GPIO18__FUNC_URTS1 (MTK_PIN_NO(18) | 3)
+#define PINMUX_GPIO18__FUNC_MD_NTN_UTXD1 (MTK_PIN_NO(18) | 4)
+#define PINMUX_GPIO18__FUNC_I2SIN2_DI (MTK_PIN_NO(18) | 5)
+#define PINMUX_GPIO18__FUNC_TP_UTXD_GNSS_VLP (MTK_PIN_NO(18) | 6)
+
+#define PINMUX_GPIO19__FUNC_GPIO19 (MTK_PIN_NO(19) | 0)
+#define PINMUX_GPIO19__FUNC_DMIC1_DAT (MTK_PIN_NO(19) | 1)
+#define PINMUX_GPIO19__FUNC_DP_RAUX_SBU2 (MTK_PIN_NO(19) | 2)
+#define PINMUX_GPIO19__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(19) | 3)
+#define PINMUX_GPIO19__FUNC_CLKM3_A (MTK_PIN_NO(19) | 4)
+#define PINMUX_GPIO19__FUNC_I2SIN2_BCK (MTK_PIN_NO(19) | 5)
+#define PINMUX_GPIO19__FUNC_TP_URXD_GNSS_VLP (MTK_PIN_NO(19) | 6)
+
+#define PINMUX_GPIO20__FUNC_GPIO20 (MTK_PIN_NO(20) | 0)
+#define PINMUX_GPIO20__FUNC_IDDIG (MTK_PIN_NO(20) | 1)
+#define PINMUX_GPIO20__FUNC_LCM2_RST (MTK_PIN_NO(20) | 2)
+#define PINMUX_GPIO20__FUNC_GPS_PPS1 (MTK_PIN_NO(20) | 3)
+#define PINMUX_GPIO20__FUNC_CLKM2_A (MTK_PIN_NO(20) | 4)
+
+#define PINMUX_GPIO21__FUNC_GPIO21 (MTK_PIN_NO(21) | 0)
+#define PINMUX_GPIO21__FUNC_BPI_BUS11 (MTK_PIN_NO(21) | 1)
+#define PINMUX_GPIO21__FUNC_PCIE_PERSTN_1P (MTK_PIN_NO(21) | 2)
+#define PINMUX_GPIO21__FUNC_DSI1_TE (MTK_PIN_NO(21) | 3)
+#define PINMUX_GPIO21__FUNC_DMIC_CLK (MTK_PIN_NO(21) | 4)
+#define PINMUX_GPIO21__FUNC_SCP_DMIC_CLK (MTK_PIN_NO(21) | 5)
+
+#define PINMUX_GPIO22__FUNC_GPIO22 (MTK_PIN_NO(22) | 0)
+#define PINMUX_GPIO22__FUNC_BPI_BUS12 (MTK_PIN_NO(22) | 1)
+#define PINMUX_GPIO22__FUNC_PCIE_CLKREQN_1P (MTK_PIN_NO(22) | 2)
+#define PINMUX_GPIO22__FUNC_DSI2_TE (MTK_PIN_NO(22) | 3)
+#define PINMUX_GPIO22__FUNC_DMIC_DAT (MTK_PIN_NO(22) | 4)
+#define PINMUX_GPIO22__FUNC_SCP_DMIC_DAT (MTK_PIN_NO(22) | 5)
+
+#define PINMUX_GPIO23__FUNC_GPIO23 (MTK_PIN_NO(23) | 0)
+#define PINMUX_GPIO23__FUNC_BPI_BUS13 (MTK_PIN_NO(23) | 1)
+#define PINMUX_GPIO23__FUNC_PCIE_WAKEN_1P (MTK_PIN_NO(23) | 2)
+#define PINMUX_GPIO23__FUNC_DSI3_TE (MTK_PIN_NO(23) | 3)
+#define PINMUX_GPIO23__FUNC_DMIC1_CLK (MTK_PIN_NO(23) | 4)
+#define PINMUX_GPIO23__FUNC_SCP_DMIC1_CLK (MTK_PIN_NO(23) | 5)
+
+#define PINMUX_GPIO24__FUNC_GPIO24 (MTK_PIN_NO(24) | 0)
+#define PINMUX_GPIO24__FUNC_BPI_BUS14 (MTK_PIN_NO(24) | 1)
+#define PINMUX_GPIO24__FUNC_LCM1_RST (MTK_PIN_NO(24) | 2)
+#define PINMUX_GPIO24__FUNC_AGPS_SYNC (MTK_PIN_NO(24) | 3)
+#define PINMUX_GPIO24__FUNC_DMIC1_DAT (MTK_PIN_NO(24) | 4)
+#define PINMUX_GPIO24__FUNC_SCP_DMIC1_DAT (MTK_PIN_NO(24) | 5)
+#define PINMUX_GPIO24__FUNC_DISP_PWM1 (MTK_PIN_NO(24) | 6)
+
+#define PINMUX_GPIO25__FUNC_GPIO25 (MTK_PIN_NO(25) | 0)
+#define PINMUX_GPIO25__FUNC_BPI_BUS15 (MTK_PIN_NO(25) | 1)
+#define PINMUX_GPIO25__FUNC_LCM2_RST (MTK_PIN_NO(25) | 2)
+#define PINMUX_GPIO25__FUNC_SRCLKENAI1 (MTK_PIN_NO(25) | 3)
+#define PINMUX_GPIO25__FUNC_DMIC2_CLK (MTK_PIN_NO(25) | 4)
+#define PINMUX_GPIO25__FUNC_DISP_PWM2 (MTK_PIN_NO(25) | 6)
+
+#define PINMUX_GPIO26__FUNC_GPIO26 (MTK_PIN_NO(26) | 0)
+#define PINMUX_GPIO26__FUNC_BPI_BUS16 (MTK_PIN_NO(26) | 1)
+#define PINMUX_GPIO26__FUNC_LCM3_RST (MTK_PIN_NO(26) | 2)
+#define PINMUX_GPIO26__FUNC_DMIC2_DAT (MTK_PIN_NO(26) | 4)
+#define PINMUX_GPIO26__FUNC_DISP_PWM3 (MTK_PIN_NO(26) | 6)
+
+#define PINMUX_GPIO27__FUNC_GPIO27 (MTK_PIN_NO(27) | 0)
+#define PINMUX_GPIO27__FUNC_BPI_BUS17 (MTK_PIN_NO(27) | 1)
+#define PINMUX_GPIO27__FUNC_UTXD4 (MTK_PIN_NO(27) | 2)
+#define PINMUX_GPIO27__FUNC_DISP_PWM4 (MTK_PIN_NO(27) | 6)
+#define PINMUX_GPIO27__FUNC_DBG_MON_A20 (MTK_PIN_NO(27) | 7)
+
+#define PINMUX_GPIO28__FUNC_GPIO28 (MTK_PIN_NO(28) | 0)
+#define PINMUX_GPIO28__FUNC_BPI_BUS18 (MTK_PIN_NO(28) | 1)
+#define PINMUX_GPIO28__FUNC_URXD4 (MTK_PIN_NO(28) | 2)
+#define PINMUX_GPIO28__FUNC_SPI2_A_MI (MTK_PIN_NO(28) | 3)
+#define PINMUX_GPIO28__FUNC_CLKM0_A (MTK_PIN_NO(28) | 4)
+#define PINMUX_GPIO28__FUNC_DBG_MON_A21 (MTK_PIN_NO(28) | 7)
+
+#define PINMUX_GPIO29__FUNC_GPIO29 (MTK_PIN_NO(29) | 0)
+#define PINMUX_GPIO29__FUNC_BPI_BUS19 (MTK_PIN_NO(29) | 1)
+#define PINMUX_GPIO29__FUNC_MD_NTN_UTXD1 (MTK_PIN_NO(29) | 2)
+#define PINMUX_GPIO29__FUNC_SPI2_A_MO (MTK_PIN_NO(29) | 3)
+#define PINMUX_GPIO29__FUNC_CLKM1_A (MTK_PIN_NO(29) | 4)
+#define PINMUX_GPIO29__FUNC_UCTS4 (MTK_PIN_NO(29) | 6)
+#define PINMUX_GPIO29__FUNC_DBG_MON_A17 (MTK_PIN_NO(29) | 7)
+
+#define PINMUX_GPIO30__FUNC_GPIO30 (MTK_PIN_NO(30) | 0)
+#define PINMUX_GPIO30__FUNC_BPI_BUS20 (MTK_PIN_NO(30) | 1)
+#define PINMUX_GPIO30__FUNC_MD_NTN_URXD1 (MTK_PIN_NO(30) | 2)
+#define PINMUX_GPIO30__FUNC_SPI2_A_CLK (MTK_PIN_NO(30) | 3)
+#define PINMUX_GPIO30__FUNC_CLKM2_A (MTK_PIN_NO(30) | 4)
+#define PINMUX_GPIO30__FUNC_DSI3_HSYNC (MTK_PIN_NO(30) | 5)
+#define PINMUX_GPIO30__FUNC_URTS4 (MTK_PIN_NO(30) | 6)
+#define PINMUX_GPIO30__FUNC_DBG_MON_A18 (MTK_PIN_NO(30) | 7)
+
+#define PINMUX_GPIO31__FUNC_GPIO31 (MTK_PIN_NO(31) | 0)
+#define PINMUX_GPIO31__FUNC_BPI_BUS21 (MTK_PIN_NO(31) | 1)
+#define PINMUX_GPIO31__FUNC_SPI2_A_CSB (MTK_PIN_NO(31) | 3)
+#define PINMUX_GPIO31__FUNC_CLKM3_A (MTK_PIN_NO(31) | 4)
+#define PINMUX_GPIO31__FUNC_EDP_TX_HPD (MTK_PIN_NO(31) | 6)
+#define PINMUX_GPIO31__FUNC_DBG_MON_A19 (MTK_PIN_NO(31) | 7)
+
+#define PINMUX_GPIO32__FUNC_GPIO32 (MTK_PIN_NO(32) | 0)
+#define PINMUX_GPIO32__FUNC_LCM4_RST (MTK_PIN_NO(32) | 1)
+#define PINMUX_GPIO32__FUNC_DP_TX_HPD (MTK_PIN_NO(32) | 2)
+#define PINMUX_GPIO32__FUNC_SSPM_JTAG_TCK_VLP (MTK_PIN_NO(32) | 3)
+#define PINMUX_GPIO32__FUNC_ADSP_JTAG0_TCK (MTK_PIN_NO(32) | 4)
+#define PINMUX_GPIO32__FUNC_SCP_JTAG0_TCK_VLP (MTK_PIN_NO(32) | 5)
+#define PINMUX_GPIO32__FUNC_SPU0_TCK (MTK_PIN_NO(32) | 6)
+#define PINMUX_GPIO32__FUNC_IO_JTAG_TCK (MTK_PIN_NO(32) | 7)
+
+#define PINMUX_GPIO33__FUNC_GPIO33 (MTK_PIN_NO(33) | 0)
+#define PINMUX_GPIO33__FUNC_DSI4_TE (MTK_PIN_NO(33) | 1)
+#define PINMUX_GPIO33__FUNC_DP_OC_EN (MTK_PIN_NO(33) | 2)
+#define PINMUX_GPIO33__FUNC_SSPM_JTAG_TRSTN_VLP (MTK_PIN_NO(33) | 3)
+#define PINMUX_GPIO33__FUNC_ADSP_JTAG0_TRSTN (MTK_PIN_NO(33) | 4)
+#define PINMUX_GPIO33__FUNC_SCP_JTAG0_TRSTN_VLP (MTK_PIN_NO(33) | 5)
+#define PINMUX_GPIO33__FUNC_SPU0_NTRST (MTK_PIN_NO(33) | 6)
+#define PINMUX_GPIO33__FUNC_IO_JTAG_TRSTN (MTK_PIN_NO(33) | 7)
+
+#define PINMUX_GPIO34__FUNC_GPIO34 (MTK_PIN_NO(34) | 0)
+#define PINMUX_GPIO34__FUNC_UCTS5 (MTK_PIN_NO(34) | 1)
+#define PINMUX_GPIO34__FUNC_DP_RAUX_SBU1 (MTK_PIN_NO(34) | 2)
+#define PINMUX_GPIO34__FUNC_SSPM_JTAG_TDI_VLP (MTK_PIN_NO(34) | 3)
+#define PINMUX_GPIO34__FUNC_ADSP_JTAG0_TDI (MTK_PIN_NO(34) | 4)
+#define PINMUX_GPIO34__FUNC_SCP_JTAG0_TDI_VLP (MTK_PIN_NO(34) | 5)
+#define PINMUX_GPIO34__FUNC_SPU0_TDI (MTK_PIN_NO(34) | 6)
+#define PINMUX_GPIO34__FUNC_IO_JTAG_TDI (MTK_PIN_NO(34) | 7)
+
+#define PINMUX_GPIO35__FUNC_GPIO35 (MTK_PIN_NO(35) | 0)
+#define PINMUX_GPIO35__FUNC_URTS5 (MTK_PIN_NO(35) | 1)
+#define PINMUX_GPIO35__FUNC_DP_RAUX_SBU2 (MTK_PIN_NO(35) | 2)
+#define PINMUX_GPIO35__FUNC_SSPM_JTAG_TDO_VLP (MTK_PIN_NO(35) | 3)
+#define PINMUX_GPIO35__FUNC_ADSP_JTAG0_TDO (MTK_PIN_NO(35) | 4)
+#define PINMUX_GPIO35__FUNC_SCP_JTAG0_TDO_VLP (MTK_PIN_NO(35) | 5)
+#define PINMUX_GPIO35__FUNC_SPU0_TDO (MTK_PIN_NO(35) | 6)
+#define PINMUX_GPIO35__FUNC_IO_JTAG_TDO (MTK_PIN_NO(35) | 7)
+
+#define PINMUX_GPIO36__FUNC_GPIO36 (MTK_PIN_NO(36) | 0)
+#define PINMUX_GPIO36__FUNC_UTXD5 (MTK_PIN_NO(36) | 1)
+#define PINMUX_GPIO36__FUNC_SSPM_JTAG_TMS_VLP (MTK_PIN_NO(36) | 3)
+#define PINMUX_GPIO36__FUNC_ADSP_JTAG0_TMS (MTK_PIN_NO(36) | 4)
+#define PINMUX_GPIO36__FUNC_SCP_JTAG0_TMS_VLP (MTK_PIN_NO(36) | 5)
+#define PINMUX_GPIO36__FUNC_SPU0_TMS (MTK_PIN_NO(36) | 6)
+#define PINMUX_GPIO36__FUNC_IO_JTAG_TMS (MTK_PIN_NO(36) | 7)
+
+#define PINMUX_GPIO37__FUNC_GPIO37 (MTK_PIN_NO(37) | 0)
+#define PINMUX_GPIO37__FUNC_URXD5 (MTK_PIN_NO(37) | 1)
+#define PINMUX_GPIO37__FUNC_MD_INT3 (MTK_PIN_NO(37) | 3)
+#define PINMUX_GPIO37__FUNC_CLKM0_B (MTK_PIN_NO(37) | 4)
+#define PINMUX_GPIO37__FUNC_TP_GPIO5_AO (MTK_PIN_NO(37) | 5)
+#define PINMUX_GPIO37__FUNC_SPU0_UTX (MTK_PIN_NO(37) | 6)
+#define PINMUX_GPIO37__FUNC_DAP_MD32_SWCK (MTK_PIN_NO(37) | 7)
+
+#define PINMUX_GPIO38__FUNC_GPIO38 (MTK_PIN_NO(38) | 0)
+#define PINMUX_GPIO38__FUNC_SPMI_P_TRIG_FLAG (MTK_PIN_NO(38) | 2)
+#define PINMUX_GPIO38__FUNC_MD_INT4 (MTK_PIN_NO(38) | 3)
+#define PINMUX_GPIO38__FUNC_CLKM1_B (MTK_PIN_NO(38) | 4)
+#define PINMUX_GPIO38__FUNC_TP_GPIO6_AO (MTK_PIN_NO(38) | 5)
+#define PINMUX_GPIO38__FUNC_SPU0_URX (MTK_PIN_NO(38) | 6)
+#define PINMUX_GPIO38__FUNC_DAP_MD32_SWD (MTK_PIN_NO(38) | 7)
+
+#define PINMUX_GPIO39__FUNC_GPIO39 (MTK_PIN_NO(39) | 0)
+#define PINMUX_GPIO39__FUNC_I2S_MCK0 (MTK_PIN_NO(39) | 1)
+#define PINMUX_GPIO39__FUNC_GPS_PPS0 (MTK_PIN_NO(39) | 3)
+#define PINMUX_GPIO39__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(39) | 4)
+#define PINMUX_GPIO39__FUNC_DBG_MON_B12 (MTK_PIN_NO(39) | 7)
+
+#define PINMUX_GPIO40__FUNC_GPIO40 (MTK_PIN_NO(40) | 0)
+#define PINMUX_GPIO40__FUNC_I2SIN6_0_BCK (MTK_PIN_NO(40) | 1)
+#define PINMUX_GPIO40__FUNC_SPI4_B_CLK (MTK_PIN_NO(40) | 3)
+#define PINMUX_GPIO40__FUNC_UCTS2 (MTK_PIN_NO(40) | 4)
+#define PINMUX_GPIO40__FUNC_CCU1_UTXD (MTK_PIN_NO(40) | 5)
+#define PINMUX_GPIO40__FUNC_DBG_MON_B13 (MTK_PIN_NO(40) | 7)
+
+#define PINMUX_GPIO41__FUNC_GPIO41 (MTK_PIN_NO(41) | 0)
+#define PINMUX_GPIO41__FUNC_I2SIN6_0_LRCK (MTK_PIN_NO(41) | 1)
+#define PINMUX_GPIO41__FUNC_SPI4_B_CSB (MTK_PIN_NO(41) | 3)
+#define PINMUX_GPIO41__FUNC_URTS2 (MTK_PIN_NO(41) | 4)
+#define PINMUX_GPIO41__FUNC_CCU1_URXD (MTK_PIN_NO(41) | 5)
+#define PINMUX_GPIO41__FUNC_DBG_MON_B14 (MTK_PIN_NO(41) | 7)
+
+#define PINMUX_GPIO42__FUNC_GPIO42 (MTK_PIN_NO(42) | 0)
+#define PINMUX_GPIO42__FUNC_I2SIN6_0_DI (MTK_PIN_NO(42) | 1)
+#define PINMUX_GPIO42__FUNC_SPI4_B_MI (MTK_PIN_NO(42) | 3)
+#define PINMUX_GPIO42__FUNC_URXD2 (MTK_PIN_NO(42) | 4)
+#define PINMUX_GPIO42__FUNC_CCU1_URTS (MTK_PIN_NO(42) | 5)
+#define PINMUX_GPIO42__FUNC_MD32_0_RXD (MTK_PIN_NO(42) | 6)
+#define PINMUX_GPIO42__FUNC_DBG_MON_B15 (MTK_PIN_NO(42) | 7)
+
+#define PINMUX_GPIO43__FUNC_GPIO43 (MTK_PIN_NO(43) | 0)
+#define PINMUX_GPIO43__FUNC_I2SOUT6_0_DO (MTK_PIN_NO(43) | 1)
+#define PINMUX_GPIO43__FUNC_SPI4_B_MO (MTK_PIN_NO(43) | 3)
+#define PINMUX_GPIO43__FUNC_UTXD2 (MTK_PIN_NO(43) | 4)
+#define PINMUX_GPIO43__FUNC_CCU1_UCTS (MTK_PIN_NO(43) | 5)
+#define PINMUX_GPIO43__FUNC_MD32_0_TXD (MTK_PIN_NO(43) | 6)
+#define PINMUX_GPIO43__FUNC_DBG_MON_B16 (MTK_PIN_NO(43) | 7)
+
+#define PINMUX_GPIO44__FUNC_GPIO44 (MTK_PIN_NO(44) | 0)
+#define PINMUX_GPIO44__FUNC_MD_INT1_C2K_UIM0_HOT_PLUG (MTK_PIN_NO(44) | 1)
+#define PINMUX_GPIO44__FUNC_SPI3_A_CLK (MTK_PIN_NO(44) | 3)
+#define PINMUX_GPIO44__FUNC_TP_GPIO10_AO (MTK_PIN_NO(44) | 6)
+
+#define PINMUX_GPIO45__FUNC_GPIO45 (MTK_PIN_NO(45) | 0)
+#define PINMUX_GPIO45__FUNC_MD_INT2_C2K_UIM1_HOT_PLUG (MTK_PIN_NO(45) | 1)
+#define PINMUX_GPIO45__FUNC_DSI2_HSYNC (MTK_PIN_NO(45) | 2)
+#define PINMUX_GPIO45__FUNC_SPI3_A_CSB (MTK_PIN_NO(45) | 3)
+#define PINMUX_GPIO45__FUNC_PWM_VLP (MTK_PIN_NO(45) | 4)
+#define PINMUX_GPIO45__FUNC_TP_GPIO11_AO (MTK_PIN_NO(45) | 6)
+
+#define PINMUX_GPIO46__FUNC_GPIO46 (MTK_PIN_NO(46) | 0)
+#define PINMUX_GPIO46__FUNC_SCP_SCL4 (MTK_PIN_NO(46) | 1)
+#define PINMUX_GPIO46__FUNC_PWM_VLP (MTK_PIN_NO(46) | 2)
+#define PINMUX_GPIO46__FUNC_SCP_ILDO_DTEST1_VLP (MTK_PIN_NO(46) | 4)
+#define PINMUX_GPIO46__FUNC_UFS_MPHY_SCL (MTK_PIN_NO(46) | 5)
+#define PINMUX_GPIO46__FUNC_TP_GPIO0_AO (MTK_PIN_NO(46) | 6)
+
+#define PINMUX_GPIO47__FUNC_GPIO47 (MTK_PIN_NO(47) | 0)
+#define PINMUX_GPIO47__FUNC_SCP_SDA4 (MTK_PIN_NO(47) | 1)
+#define PINMUX_GPIO47__FUNC_SCP_ILDO_DTEST2_VLP (MTK_PIN_NO(47) | 4)
+#define PINMUX_GPIO47__FUNC_UFS_MPHY_SDA (MTK_PIN_NO(47) | 5)
+#define PINMUX_GPIO47__FUNC_TP_GPIO1_AO (MTK_PIN_NO(47) | 6)
+
+#define PINMUX_GPIO48__FUNC_GPIO48 (MTK_PIN_NO(48) | 0)
+#define PINMUX_GPIO48__FUNC_SCP_SCL5 (MTK_PIN_NO(48) | 1)
+#define PINMUX_GPIO48__FUNC_PWM_VLP (MTK_PIN_NO(48) | 2)
+#define PINMUX_GPIO48__FUNC_CCU0_UTXD (MTK_PIN_NO(48) | 3)
+#define PINMUX_GPIO48__FUNC_SCP_ILDO_DTEST3_VLP (MTK_PIN_NO(48) | 4)
+#define PINMUX_GPIO48__FUNC_TP_GPIO2_AO (MTK_PIN_NO(48) | 6)
+
+#define PINMUX_GPIO49__FUNC_GPIO49 (MTK_PIN_NO(49) | 0)
+#define PINMUX_GPIO49__FUNC_SCP_SDA5 (MTK_PIN_NO(49) | 1)
+#define PINMUX_GPIO49__FUNC_CCU0_URXD (MTK_PIN_NO(49) | 3)
+#define PINMUX_GPIO49__FUNC_SCP_ILDO_DTEST4_VLP (MTK_PIN_NO(49) | 4)
+#define PINMUX_GPIO49__FUNC_TP_GPIO3_AO (MTK_PIN_NO(49) | 6)
+
+#define PINMUX_GPIO50__FUNC_GPIO50 (MTK_PIN_NO(50) | 0)
+#define PINMUX_GPIO50__FUNC_SCP_SCL6 (MTK_PIN_NO(50) | 1)
+#define PINMUX_GPIO50__FUNC_PWM_VLP (MTK_PIN_NO(50) | 2)
+#define PINMUX_GPIO50__FUNC_CCU0_URTS (MTK_PIN_NO(50) | 3)
+#define PINMUX_GPIO50__FUNC_DSI_HSYNC (MTK_PIN_NO(50) | 4)
+#define PINMUX_GPIO50__FUNC_TP_GPIO4_AO (MTK_PIN_NO(50) | 6)
+
+#define PINMUX_GPIO51__FUNC_GPIO51 (MTK_PIN_NO(51) | 0)
+#define PINMUX_GPIO51__FUNC_SCP_SDA6 (MTK_PIN_NO(51) | 1)
+#define PINMUX_GPIO51__FUNC_CCU0_UCTS (MTK_PIN_NO(51) | 3)
+#define PINMUX_GPIO51__FUNC_DSI1_HSYNC (MTK_PIN_NO(51) | 4)
+#define PINMUX_GPIO51__FUNC_TP_GPIO5_AO (MTK_PIN_NO(51) | 6)
+
+#define PINMUX_GPIO52__FUNC_GPIO52 (MTK_PIN_NO(52) | 0)
+#define PINMUX_GPIO52__FUNC_SCP_SCL1 (MTK_PIN_NO(52) | 1)
+#define PINMUX_GPIO52__FUNC_TDM_DATA2 (MTK_PIN_NO(52) | 3)
+
+#define PINMUX_GPIO53__FUNC_GPIO53 (MTK_PIN_NO(53) | 0)
+#define PINMUX_GPIO53__FUNC_SCP_SDA1 (MTK_PIN_NO(53) | 1)
+#define PINMUX_GPIO53__FUNC_TDM_DATA3 (MTK_PIN_NO(53) | 3)
+
+#define PINMUX_GPIO54__FUNC_GPIO54 (MTK_PIN_NO(54) | 0)
+#define PINMUX_GPIO54__FUNC_AUD_CLK_MOSI (MTK_PIN_NO(54) | 1)
+#define PINMUX_GPIO54__FUNC_TDM_MCK (MTK_PIN_NO(54) | 3)
+
+#define PINMUX_GPIO55__FUNC_GPIO55 (MTK_PIN_NO(55) | 0)
+#define PINMUX_GPIO55__FUNC_AUD_CLK_MISO (MTK_PIN_NO(55) | 1)
+#define PINMUX_GPIO55__FUNC_I2SOUT2_BCK (MTK_PIN_NO(55) | 2)
+#define PINMUX_GPIO55__FUNC_TDM_BCK (MTK_PIN_NO(55) | 3)
+
+#define PINMUX_GPIO56__FUNC_GPIO56 (MTK_PIN_NO(56) | 0)
+#define PINMUX_GPIO56__FUNC_AUD_DAT_MOSI0 (MTK_PIN_NO(56) | 1)
+#define PINMUX_GPIO56__FUNC_I2SOUT2_LRCK (MTK_PIN_NO(56) | 2)
+#define PINMUX_GPIO56__FUNC_TDM_LRCK (MTK_PIN_NO(56) | 3)
+
+#define PINMUX_GPIO57__FUNC_GPIO57 (MTK_PIN_NO(57) | 0)
+#define PINMUX_GPIO57__FUNC_AUD_DAT_MOSI1 (MTK_PIN_NO(57) | 1)
+#define PINMUX_GPIO57__FUNC_I2SOUT2_DO (MTK_PIN_NO(57) | 2)
+#define PINMUX_GPIO57__FUNC_TDM_DATA0 (MTK_PIN_NO(57) | 3)
+
+#define PINMUX_GPIO58__FUNC_GPIO58 (MTK_PIN_NO(58) | 0)
+#define PINMUX_GPIO58__FUNC_AUD_DAT_MISO0 (MTK_PIN_NO(58) | 1)
+#define PINMUX_GPIO58__FUNC_TDM_DATA1 (MTK_PIN_NO(58) | 3)
+
+#define PINMUX_GPIO59__FUNC_GPIO59 (MTK_PIN_NO(59) | 0)
+#define PINMUX_GPIO59__FUNC_AUD_DAT_MISO1 (MTK_PIN_NO(59) | 1)
+#define PINMUX_GPIO59__FUNC_I2SIN1_BCK (MTK_PIN_NO(59) | 3)
+
+#define PINMUX_GPIO60__FUNC_GPIO60 (MTK_PIN_NO(60) | 0)
+#define PINMUX_GPIO60__FUNC_KPCOL0 (MTK_PIN_NO(60) | 1)
+#define PINMUX_GPIO60__FUNC_TP_GPIO13_AO (MTK_PIN_NO(60) | 6)
+
+#define PINMUX_GPIO61__FUNC_GPIO61 (MTK_PIN_NO(61) | 0)
+#define PINMUX_GPIO61__FUNC_MCU_M_PMIC_POC_I (MTK_PIN_NO(61) | 1)
+
+#define PINMUX_GPIO62__FUNC_GPIO62 (MTK_PIN_NO(62) | 0)
+#define PINMUX_GPIO62__FUNC_MCU_B_PMIC_POC_I (MTK_PIN_NO(62) | 1)
+
+#define PINMUX_GPIO63__FUNC_GPIO63 (MTK_PIN_NO(63) | 0)
+#define PINMUX_GPIO63__FUNC_MFG_PMIC_POC_I (MTK_PIN_NO(63) | 1)
+
+#define PINMUX_GPIO64__FUNC_GPIO64 (MTK_PIN_NO(64) | 0)
+#define PINMUX_GPIO64__FUNC_PRE_UVLO (MTK_PIN_NO(64) | 1)
+
+#define PINMUX_GPIO65__FUNC_GPIO65 (MTK_PIN_NO(65) | 0)
+#define PINMUX_GPIO65__FUNC_DPM2PMIC (MTK_PIN_NO(65) | 1)
+#define PINMUX_GPIO65__FUNC_SRCLKENA1 (MTK_PIN_NO(65) | 2)
+
+#define PINMUX_GPIO66__FUNC_GPIO66 (MTK_PIN_NO(66) | 0)
+#define PINMUX_GPIO66__FUNC_WATCHDOG (MTK_PIN_NO(66) | 1)
+
+#define PINMUX_GPIO67__FUNC_GPIO67 (MTK_PIN_NO(67) | 0)
+#define PINMUX_GPIO67__FUNC_SRCLKENA0 (MTK_PIN_NO(67) | 1)
+
+#define PINMUX_GPIO68__FUNC_GPIO68 (MTK_PIN_NO(68) | 0)
+#define PINMUX_GPIO68__FUNC_SCP_VREQ_VAO (MTK_PIN_NO(68) | 1)
+
+#define PINMUX_GPIO69__FUNC_GPIO69 (MTK_PIN_NO(69) | 0)
+#define PINMUX_GPIO69__FUNC_RTC32K_CK (MTK_PIN_NO(69) | 1)
+
+#define PINMUX_GPIO70__FUNC_GPIO70 (MTK_PIN_NO(70) | 0)
+#define PINMUX_GPIO70__FUNC_CMFLASH0 (MTK_PIN_NO(70) | 1)
+
+#define PINMUX_GPIO71__FUNC_GPIO71 (MTK_PIN_NO(71) | 0)
+
+#define PINMUX_GPIO72__FUNC_GPIO72 (MTK_PIN_NO(72) | 0)
+
+#define PINMUX_GPIO73__FUNC_GPIO73 (MTK_PIN_NO(73) | 0)
+
+#define PINMUX_GPIO74__FUNC_GPIO74 (MTK_PIN_NO(74) | 0)
+#define PINMUX_GPIO74__FUNC_DCXO_FPM_LPM (MTK_PIN_NO(74) | 1)
+
+#define PINMUX_GPIO75__FUNC_GPIO75 (MTK_PIN_NO(75) | 0)
+#define PINMUX_GPIO75__FUNC_SPMI_M_SCL (MTK_PIN_NO(75) | 1)
+
+#define PINMUX_GPIO76__FUNC_GPIO76 (MTK_PIN_NO(76) | 0)
+#define PINMUX_GPIO76__FUNC_SPMI_M_SDA (MTK_PIN_NO(76) | 1)
+
+#define PINMUX_GPIO77__FUNC_GPIO77 (MTK_PIN_NO(77) | 0)
+#define PINMUX_GPIO77__FUNC_SPMI_P_SCL (MTK_PIN_NO(77) | 1)
+
+#define PINMUX_GPIO78__FUNC_GPIO78 (MTK_PIN_NO(78) | 0)
+#define PINMUX_GPIO78__FUNC_SPMI_P_SDA (MTK_PIN_NO(78) | 1)
+
+#define PINMUX_GPIO79__FUNC_GPIO79 (MTK_PIN_NO(79) | 0)
+#define PINMUX_GPIO79__FUNC_CMMCLK0 (MTK_PIN_NO(79) | 1)
+#define PINMUX_GPIO79__FUNC_MD_INT4 (MTK_PIN_NO(79) | 2)
+
+#define PINMUX_GPIO80__FUNC_GPIO80 (MTK_PIN_NO(80) | 0)
+#define PINMUX_GPIO80__FUNC_CMMCLK1 (MTK_PIN_NO(80) | 1)
+
+#define PINMUX_GPIO81__FUNC_GPIO81 (MTK_PIN_NO(81) | 0)
+#define PINMUX_GPIO81__FUNC_SCP_SPI0_CK (MTK_PIN_NO(81) | 1)
+#define PINMUX_GPIO81__FUNC_SPI6_B_CLK (MTK_PIN_NO(81) | 2)
+#define PINMUX_GPIO81__FUNC_PWM_VLP (MTK_PIN_NO(81) | 3)
+#define PINMUX_GPIO81__FUNC_I2SOUT5_BCK (MTK_PIN_NO(81) | 4)
+#define PINMUX_GPIO81__FUNC_TP_GPIO0_AO (MTK_PIN_NO(81) | 6)
+
+#define PINMUX_GPIO82__FUNC_GPIO82 (MTK_PIN_NO(82) | 0)
+#define PINMUX_GPIO82__FUNC_SCP_SPI0_CS (MTK_PIN_NO(82) | 1)
+#define PINMUX_GPIO82__FUNC_SPI6_B_CSB (MTK_PIN_NO(82) | 2)
+#define PINMUX_GPIO82__FUNC_I2SOUT5_LRCK (MTK_PIN_NO(82) | 4)
+#define PINMUX_GPIO82__FUNC_TP_GPIO1_AO (MTK_PIN_NO(82) | 6)
+
+#define PINMUX_GPIO83__FUNC_GPIO83 (MTK_PIN_NO(83) | 0)
+#define PINMUX_GPIO83__FUNC_SCP_SPI0_MO (MTK_PIN_NO(83) | 1)
+#define PINMUX_GPIO83__FUNC_SPI6_B_MO (MTK_PIN_NO(83) | 2)
+#define PINMUX_GPIO83__FUNC_I2SOUT5_DATA0 (MTK_PIN_NO(83) | 4)
+#define PINMUX_GPIO83__FUNC_TP_GPIO2_AO (MTK_PIN_NO(83) | 6)
+
+#define PINMUX_GPIO84__FUNC_GPIO84 (MTK_PIN_NO(84) | 0)
+#define PINMUX_GPIO84__FUNC_SCP_SPI0_MI (MTK_PIN_NO(84) | 1)
+#define PINMUX_GPIO84__FUNC_SPI6_B_MI (MTK_PIN_NO(84) | 2)
+#define PINMUX_GPIO84__FUNC_I2SOUT5_DATA1 (MTK_PIN_NO(84) | 4)
+#define PINMUX_GPIO84__FUNC_TP_GPIO3_AO (MTK_PIN_NO(84) | 6)
+
+#define PINMUX_GPIO85__FUNC_GPIO85 (MTK_PIN_NO(85) | 0)
+#define PINMUX_GPIO85__FUNC_SCP_SPI1_CK (MTK_PIN_NO(85) | 1)
+#define PINMUX_GPIO85__FUNC_SPI7_B_CLK (MTK_PIN_NO(85) | 2)
+#define PINMUX_GPIO85__FUNC_I2SIN5_DATA0 (MTK_PIN_NO(85) | 4)
+#define PINMUX_GPIO85__FUNC_PWM_VLP (MTK_PIN_NO(85) | 5)
+#define PINMUX_GPIO85__FUNC_TP_GPIO4_AO (MTK_PIN_NO(85) | 6)
+
+#define PINMUX_GPIO86__FUNC_GPIO86 (MTK_PIN_NO(86) | 0)
+#define PINMUX_GPIO86__FUNC_SCP_SPI1_CS (MTK_PIN_NO(86) | 1)
+#define PINMUX_GPIO86__FUNC_SPI7_B_CSB (MTK_PIN_NO(86) | 2)
+#define PINMUX_GPIO86__FUNC_I2SIN5_DATA1 (MTK_PIN_NO(86) | 4)
+#define PINMUX_GPIO86__FUNC_TP_GPIO5_AO (MTK_PIN_NO(86) | 6)
+
+#define PINMUX_GPIO87__FUNC_GPIO87 (MTK_PIN_NO(87) | 0)
+#define PINMUX_GPIO87__FUNC_SCP_SPI1_MO (MTK_PIN_NO(87) | 1)
+#define PINMUX_GPIO87__FUNC_SPI7_B_MO (MTK_PIN_NO(87) | 2)
+#define PINMUX_GPIO87__FUNC_I2SIN5_BCK (MTK_PIN_NO(87) | 4)
+#define PINMUX_GPIO87__FUNC_TP_GPIO6_AO (MTK_PIN_NO(87) | 6)
+
+#define PINMUX_GPIO88__FUNC_GPIO88 (MTK_PIN_NO(88) | 0)
+#define PINMUX_GPIO88__FUNC_SCP_SPI1_MI (MTK_PIN_NO(88) | 1)
+#define PINMUX_GPIO88__FUNC_SPI7_B_MI (MTK_PIN_NO(88) | 2)
+#define PINMUX_GPIO88__FUNC_I2SIN5_LRCK (MTK_PIN_NO(88) | 4)
+#define PINMUX_GPIO88__FUNC_TP_GPIO7_AO (MTK_PIN_NO(88) | 6)
+
+#define PINMUX_GPIO89__FUNC_GPIO89 (MTK_PIN_NO(89) | 0)
+#define PINMUX_GPIO89__FUNC_DSI_TE (MTK_PIN_NO(89) | 1)
+#define PINMUX_GPIO89__FUNC_DSI1_TE (MTK_PIN_NO(89) | 2)
+#define PINMUX_GPIO89__FUNC_DBG_MON_B30 (MTK_PIN_NO(89) | 7)
+
+#define PINMUX_GPIO90__FUNC_GPIO90 (MTK_PIN_NO(90) | 0)
+#define PINMUX_GPIO90__FUNC_LCM_RST (MTK_PIN_NO(90) | 1)
+#define PINMUX_GPIO90__FUNC_LCM1_RST (MTK_PIN_NO(90) | 2)
+#define PINMUX_GPIO90__FUNC_DBG_MON_B31 (MTK_PIN_NO(90) | 7)
+
+#define PINMUX_GPIO91__FUNC_GPIO91 (MTK_PIN_NO(91) | 0)
+#define PINMUX_GPIO91__FUNC_CMFLASH2 (MTK_PIN_NO(91) | 1)
+#define PINMUX_GPIO91__FUNC_SF_D0 (MTK_PIN_NO(91) | 2)
+#define PINMUX_GPIO91__FUNC_SRCLKENAI1 (MTK_PIN_NO(91) | 3)
+#define PINMUX_GPIO91__FUNC_KPCOL2 (MTK_PIN_NO(91) | 5)
+#define PINMUX_GPIO91__FUNC_TP_GPIO11_AO (MTK_PIN_NO(91) | 6)
+
+#define PINMUX_GPIO92__FUNC_GPIO92 (MTK_PIN_NO(92) | 0)
+#define PINMUX_GPIO92__FUNC_CMFLASH3 (MTK_PIN_NO(92) | 1)
+#define PINMUX_GPIO92__FUNC_SF_D1 (MTK_PIN_NO(92) | 2)
+#define PINMUX_GPIO92__FUNC_DISP_PWM1 (MTK_PIN_NO(92) | 4)
+#define PINMUX_GPIO92__FUNC_TP_GPIO12_AO (MTK_PIN_NO(92) | 6)
+
+#define PINMUX_GPIO93__FUNC_GPIO93 (MTK_PIN_NO(93) | 0)
+#define PINMUX_GPIO93__FUNC_CMFLASH1 (MTK_PIN_NO(93) | 1)
+#define PINMUX_GPIO93__FUNC_SF_D2 (MTK_PIN_NO(93) | 2)
+#define PINMUX_GPIO93__FUNC_SRCLKENAI0 (MTK_PIN_NO(93) | 3)
+#define PINMUX_GPIO93__FUNC_KPROW2 (MTK_PIN_NO(93) | 5)
+#define PINMUX_GPIO93__FUNC_TP_GPIO13_AO (MTK_PIN_NO(93) | 6)
+
+#define PINMUX_GPIO94__FUNC_GPIO94 (MTK_PIN_NO(94) | 0)
+#define PINMUX_GPIO94__FUNC_I2S_MCK1 (MTK_PIN_NO(94) | 1)
+#define PINMUX_GPIO94__FUNC_SF_D3 (MTK_PIN_NO(94) | 2)
+#define PINMUX_GPIO94__FUNC_MD32_0_GPIO0 (MTK_PIN_NO(94) | 4)
+#define PINMUX_GPIO94__FUNC_CLKM0_A (MTK_PIN_NO(94) | 5)
+#define PINMUX_GPIO94__FUNC_TP_GPIO14_AO (MTK_PIN_NO(94) | 6)
+#define PINMUX_GPIO94__FUNC_DBG_MON_B18 (MTK_PIN_NO(94) | 7)
+
+#define PINMUX_GPIO95__FUNC_GPIO95 (MTK_PIN_NO(95) | 0)
+#define PINMUX_GPIO95__FUNC_I2SIN1_BCK (MTK_PIN_NO(95) | 1)
+#define PINMUX_GPIO95__FUNC_I2SIN4_BCK (MTK_PIN_NO(95) | 2)
+#define PINMUX_GPIO95__FUNC_SPI6_A_CLK (MTK_PIN_NO(95) | 3)
+#define PINMUX_GPIO95__FUNC_MD32_1_GPIO0 (MTK_PIN_NO(95) | 4)
+#define PINMUX_GPIO95__FUNC_CLKM1_A (MTK_PIN_NO(95) | 5)
+#define PINMUX_GPIO95__FUNC_TP_GPIO15_AO (MTK_PIN_NO(95) | 6)
+#define PINMUX_GPIO95__FUNC_DBG_MON_B19 (MTK_PIN_NO(95) | 7)
+
+#define PINMUX_GPIO96__FUNC_GPIO96 (MTK_PIN_NO(96) | 0)
+#define PINMUX_GPIO96__FUNC_I2SIN1_LRCK (MTK_PIN_NO(96) | 1)
+#define PINMUX_GPIO96__FUNC_I2SIN4_LRCK (MTK_PIN_NO(96) | 2)
+#define PINMUX_GPIO96__FUNC_SPI6_A_CSB (MTK_PIN_NO(96) | 3)
+#define PINMUX_GPIO96__FUNC_MD32_2_GPIO0 (MTK_PIN_NO(96) | 4)
+#define PINMUX_GPIO96__FUNC_CLKM2_A (MTK_PIN_NO(96) | 5)
+#define PINMUX_GPIO96__FUNC_DBG_MON_B20 (MTK_PIN_NO(96) | 7)
+
+#define PINMUX_GPIO97__FUNC_GPIO97 (MTK_PIN_NO(97) | 0)
+#define PINMUX_GPIO97__FUNC_I2SIN1_DI_A (MTK_PIN_NO(97) | 1)
+#define PINMUX_GPIO97__FUNC_I2SIN4_DATA0 (MTK_PIN_NO(97) | 2)
+#define PINMUX_GPIO97__FUNC_SPI6_A_MO (MTK_PIN_NO(97) | 3)
+#define PINMUX_GPIO97__FUNC_MD32_3_GPIO0 (MTK_PIN_NO(97) | 4)
+#define PINMUX_GPIO97__FUNC_CLKM3_A (MTK_PIN_NO(97) | 5)
+#define PINMUX_GPIO97__FUNC_DBG_MON_B21 (MTK_PIN_NO(97) | 7)
+
+#define PINMUX_GPIO98__FUNC_GPIO98 (MTK_PIN_NO(98) | 0)
+#define PINMUX_GPIO98__FUNC_I2SOUT1_DO (MTK_PIN_NO(98) | 1)
+#define PINMUX_GPIO98__FUNC_I2SOUT4_DATA0 (MTK_PIN_NO(98) | 2)
+#define PINMUX_GPIO98__FUNC_SPI6_A_MI (MTK_PIN_NO(98) | 3)
+#define PINMUX_GPIO98__FUNC_DBG_MON_B22 (MTK_PIN_NO(98) | 7)
+
+#define PINMUX_GPIO99__FUNC_GPIO99 (MTK_PIN_NO(99) | 0)
+#define PINMUX_GPIO99__FUNC_SCL0 (MTK_PIN_NO(99) | 1)
+#define PINMUX_GPIO99__FUNC_LCM2_RST (MTK_PIN_NO(99) | 2)
+#define PINMUX_GPIO99__FUNC_AUD_DAC_26M_CLK (MTK_PIN_NO(99) | 3)
+#define PINMUX_GPIO99__FUNC_SPU0_SCL (MTK_PIN_NO(99) | 4)
+#define PINMUX_GPIO99__FUNC_DBG_MON_B24 (MTK_PIN_NO(99) | 7)
+
+#define PINMUX_GPIO100__FUNC_GPIO100 (MTK_PIN_NO(100) | 0)
+#define PINMUX_GPIO100__FUNC_SDA0 (MTK_PIN_NO(100) | 1)
+#define PINMUX_GPIO100__FUNC_DSI2_TE (MTK_PIN_NO(100) | 2)
+#define PINMUX_GPIO100__FUNC_SPU0_SDA (MTK_PIN_NO(100) | 4)
+#define PINMUX_GPIO100__FUNC_DBG_MON_B25 (MTK_PIN_NO(100) | 7)
+
+#define PINMUX_GPIO101__FUNC_GPIO101 (MTK_PIN_NO(101) | 0)
+#define PINMUX_GPIO101__FUNC_SCL10 (MTK_PIN_NO(101) | 1)
+#define PINMUX_GPIO101__FUNC_SF_CS (MTK_PIN_NO(101) | 2)
+#define PINMUX_GPIO101__FUNC_SCP_DMIC1_CLK (MTK_PIN_NO(101) | 3)
+#define PINMUX_GPIO101__FUNC_I2SIN5_DATA2 (MTK_PIN_NO(101) | 4)
+#define PINMUX_GPIO101__FUNC_SCP_SCL_OIS (MTK_PIN_NO(101) | 5)
+#define PINMUX_GPIO101__FUNC_TP_GPIO10_AO (MTK_PIN_NO(101) | 6)
+#define PINMUX_GPIO101__FUNC_DBG_MON_B28 (MTK_PIN_NO(101) | 7)
+
+#define PINMUX_GPIO102__FUNC_GPIO102 (MTK_PIN_NO(102) | 0)
+#define PINMUX_GPIO102__FUNC_SDA10 (MTK_PIN_NO(102) | 1)
+#define PINMUX_GPIO102__FUNC_SF_CK (MTK_PIN_NO(102) | 2)
+#define PINMUX_GPIO102__FUNC_SCP_DMIC1_DAT (MTK_PIN_NO(102) | 3)
+#define PINMUX_GPIO102__FUNC_I2SIN5_DATA3 (MTK_PIN_NO(102) | 4)
+#define PINMUX_GPIO102__FUNC_SCP_SDA_OIS (MTK_PIN_NO(102) | 5)
+#define PINMUX_GPIO102__FUNC_TP_GPIO11_AO (MTK_PIN_NO(102) | 6)
+#define PINMUX_GPIO102__FUNC_DBG_MON_B29 (MTK_PIN_NO(102) | 7)
+
+#define PINMUX_GPIO103__FUNC_GPIO103 (MTK_PIN_NO(103) | 0)
+#define PINMUX_GPIO103__FUNC_DISP_PWM (MTK_PIN_NO(103) | 1)
+#define PINMUX_GPIO103__FUNC_DSI1_TE (MTK_PIN_NO(103) | 2)
+#define PINMUX_GPIO103__FUNC_I2S_MCK0 (MTK_PIN_NO(103) | 5)
+#define PINMUX_GPIO103__FUNC_DBG_MON_B23 (MTK_PIN_NO(103) | 7)
+
+#define PINMUX_GPIO104__FUNC_GPIO104 (MTK_PIN_NO(104) | 0)
+#define PINMUX_GPIO104__FUNC_SCL6 (MTK_PIN_NO(104) | 1)
+#define PINMUX_GPIO104__FUNC_SPU1_SCL (MTK_PIN_NO(104) | 2)
+#define PINMUX_GPIO104__FUNC_AUD_DAC_26M_CLK (MTK_PIN_NO(104) | 3)
+#define PINMUX_GPIO104__FUNC_USB_DRVVBUS_2P (MTK_PIN_NO(104) | 4)
+#define PINMUX_GPIO104__FUNC_I2S_MCK1 (MTK_PIN_NO(104) | 5)
+#define PINMUX_GPIO104__FUNC_IDDIG_2P (MTK_PIN_NO(104) | 6)
+#define PINMUX_GPIO104__FUNC_DBG_MON_B26 (MTK_PIN_NO(104) | 7)
+
+#define PINMUX_GPIO105__FUNC_GPIO105 (MTK_PIN_NO(105) | 0)
+#define PINMUX_GPIO105__FUNC_SDA6 (MTK_PIN_NO(105) | 1)
+#define PINMUX_GPIO105__FUNC_SPU1_SDA (MTK_PIN_NO(105) | 2)
+#define PINMUX_GPIO105__FUNC_DISP_PWM2 (MTK_PIN_NO(105) | 3)
+#define PINMUX_GPIO105__FUNC_VBUSVALID_2P (MTK_PIN_NO(105) | 4)
+#define PINMUX_GPIO105__FUNC_I2S_MCK2 (MTK_PIN_NO(105) | 5)
+#define PINMUX_GPIO105__FUNC_VBUSVALID_3P (MTK_PIN_NO(105) | 6)
+#define PINMUX_GPIO105__FUNC_DBG_MON_B27 (MTK_PIN_NO(105) | 7)
+
+#define PINMUX_GPIO106__FUNC_GPIO106 (MTK_PIN_NO(106) | 0)
+#define PINMUX_GPIO106__FUNC_SCP_SPI3_CK (MTK_PIN_NO(106) | 1)
+#define PINMUX_GPIO106__FUNC_SPI3_B_CLK (MTK_PIN_NO(106) | 2)
+#define PINMUX_GPIO106__FUNC_MD_UTXD0 (MTK_PIN_NO(106) | 3)
+#define PINMUX_GPIO106__FUNC_TP_UTXD1_VLP (MTK_PIN_NO(106) | 4)
+#define PINMUX_GPIO106__FUNC_CONN_BG_GPS_MCU_UART0_TXD (MTK_PIN_NO(106) | 5)
+#define PINMUX_GPIO106__FUNC_TP_GPIO6_AO (MTK_PIN_NO(106) | 6)
+#define PINMUX_GPIO106__FUNC_DBG_MON_B0 (MTK_PIN_NO(106) | 7)
+
+#define PINMUX_GPIO107__FUNC_GPIO107 (MTK_PIN_NO(107) | 0)
+#define PINMUX_GPIO107__FUNC_SCP_SPI3_CS (MTK_PIN_NO(107) | 1)
+#define PINMUX_GPIO107__FUNC_SPI3_B_CSB (MTK_PIN_NO(107) | 2)
+#define PINMUX_GPIO107__FUNC_MD_URXD0 (MTK_PIN_NO(107) | 3)
+#define PINMUX_GPIO107__FUNC_TP_URXD1_VLP (MTK_PIN_NO(107) | 4)
+#define PINMUX_GPIO107__FUNC_CONN_BG_GPS_MCU_UART0_RXD (MTK_PIN_NO(107) | 5)
+#define PINMUX_GPIO107__FUNC_TP_GPIO7_AO (MTK_PIN_NO(107) | 6)
+#define PINMUX_GPIO107__FUNC_DBG_MON_B1 (MTK_PIN_NO(107) | 7)
+
+#define PINMUX_GPIO108__FUNC_GPIO108 (MTK_PIN_NO(108) | 0)
+#define PINMUX_GPIO108__FUNC_SCP_SPI3_MO (MTK_PIN_NO(108) | 1)
+#define PINMUX_GPIO108__FUNC_SPI3_B_MO (MTK_PIN_NO(108) | 2)
+#define PINMUX_GPIO108__FUNC_MD_UTXD1 (MTK_PIN_NO(108) | 3)
+#define PINMUX_GPIO108__FUNC_MD32PCM_UTXD_AO_VLP (MTK_PIN_NO(108) | 4)
+#define PINMUX_GPIO108__FUNC_CONN_BG_GPS_MCU_UART1_TXD (MTK_PIN_NO(108) | 5)
+#define PINMUX_GPIO108__FUNC_TP_GPIO8_AO (MTK_PIN_NO(108) | 6)
+#define PINMUX_GPIO108__FUNC_DBG_MON_B2 (MTK_PIN_NO(108) | 7)
+
+#define PINMUX_GPIO109__FUNC_GPIO109 (MTK_PIN_NO(109) | 0)
+#define PINMUX_GPIO109__FUNC_SCP_SPI3_MI (MTK_PIN_NO(109) | 1)
+#define PINMUX_GPIO109__FUNC_SPI3_B_MI (MTK_PIN_NO(109) | 2)
+#define PINMUX_GPIO109__FUNC_MD_URXD1 (MTK_PIN_NO(109) | 3)
+#define PINMUX_GPIO109__FUNC_MD32PCM_URXD_AO_VLP (MTK_PIN_NO(109) | 4)
+#define PINMUX_GPIO109__FUNC_CONN_BG_GPS_MCU_UART1_RXD (MTK_PIN_NO(109) | 5)
+#define PINMUX_GPIO109__FUNC_TP_GPIO9_AO (MTK_PIN_NO(109) | 6)
+#define PINMUX_GPIO109__FUNC_DBG_MON_B3 (MTK_PIN_NO(109) | 7)
+
+#define PINMUX_GPIO110__FUNC_GPIO110 (MTK_PIN_NO(110) | 0)
+#define PINMUX_GPIO110__FUNC_SPI1_CLK (MTK_PIN_NO(110) | 1)
+#define PINMUX_GPIO110__FUNC_PWM_0 (MTK_PIN_NO(110) | 2)
+#define PINMUX_GPIO110__FUNC_MD_UCTS0 (MTK_PIN_NO(110) | 3)
+#define PINMUX_GPIO110__FUNC_TP_UCTS1_VLP (MTK_PIN_NO(110) | 4)
+#define PINMUX_GPIO110__FUNC_SPU0_GPIO_O (MTK_PIN_NO(110) | 6)
+#define PINMUX_GPIO110__FUNC_DBG_MON_B4 (MTK_PIN_NO(110) | 7)
+
+#define PINMUX_GPIO111__FUNC_GPIO111 (MTK_PIN_NO(111) | 0)
+#define PINMUX_GPIO111__FUNC_SPI1_CSB (MTK_PIN_NO(111) | 1)
+#define PINMUX_GPIO111__FUNC_PWM_1 (MTK_PIN_NO(111) | 2)
+#define PINMUX_GPIO111__FUNC_MD_URTS0 (MTK_PIN_NO(111) | 3)
+#define PINMUX_GPIO111__FUNC_TP_URTS1_VLP (MTK_PIN_NO(111) | 4)
+#define PINMUX_GPIO111__FUNC_SPU0_GPIO_I (MTK_PIN_NO(111) | 6)
+#define PINMUX_GPIO111__FUNC_DBG_MON_B5 (MTK_PIN_NO(111) | 7)
+
+#define PINMUX_GPIO112__FUNC_GPIO112 (MTK_PIN_NO(112) | 0)
+#define PINMUX_GPIO112__FUNC_SPI1_MO (MTK_PIN_NO(112) | 1)
+#define PINMUX_GPIO112__FUNC_PWM_2 (MTK_PIN_NO(112) | 2)
+#define PINMUX_GPIO112__FUNC_MD_UCTS1 (MTK_PIN_NO(112) | 3)
+#define PINMUX_GPIO112__FUNC_SPU1_GPIO_O (MTK_PIN_NO(112) | 6)
+#define PINMUX_GPIO112__FUNC_DBG_MON_B6 (MTK_PIN_NO(112) | 7)
+
+#define PINMUX_GPIO113__FUNC_GPIO113 (MTK_PIN_NO(113) | 0)
+#define PINMUX_GPIO113__FUNC_SPI1_MI (MTK_PIN_NO(113) | 1)
+#define PINMUX_GPIO113__FUNC_PWM_3 (MTK_PIN_NO(113) | 2)
+#define PINMUX_GPIO113__FUNC_MD_URTS1 (MTK_PIN_NO(113) | 3)
+#define PINMUX_GPIO113__FUNC_SPU1_GPIO_I (MTK_PIN_NO(113) | 6)
+#define PINMUX_GPIO113__FUNC_DBG_MON_B7 (MTK_PIN_NO(113) | 7)
+
+#define PINMUX_GPIO114__FUNC_GPIO114 (MTK_PIN_NO(114) | 0)
+#define PINMUX_GPIO114__FUNC_SPI0_SPU_CLK (MTK_PIN_NO(114) | 1)
+#define PINMUX_GPIO114__FUNC_SPI4_A_CLK (MTK_PIN_NO(114) | 2)
+#define PINMUX_GPIO114__FUNC_CONN_BG_GPS_MCU_DBG_UART_TXD (MTK_PIN_NO(114) | 5)
+#define PINMUX_GPIO114__FUNC_DBG_MON_B8 (MTK_PIN_NO(114) | 7)
+
+#define PINMUX_GPIO115__FUNC_GPIO115 (MTK_PIN_NO(115) | 0)
+#define PINMUX_GPIO115__FUNC_SPI0_SPU_CSB (MTK_PIN_NO(115) | 1)
+#define PINMUX_GPIO115__FUNC_SPI4_A_CSB (MTK_PIN_NO(115) | 2)
+#define PINMUX_GPIO115__FUNC_DBG_MON_B9 (MTK_PIN_NO(115) | 7)
+
+#define PINMUX_GPIO116__FUNC_GPIO116 (MTK_PIN_NO(116) | 0)
+#define PINMUX_GPIO116__FUNC_SPI0_SPU_MO (MTK_PIN_NO(116) | 1)
+#define PINMUX_GPIO116__FUNC_SPI4_A_MO (MTK_PIN_NO(116) | 2)
+#define PINMUX_GPIO116__FUNC_LCM1_RST (MTK_PIN_NO(116) | 3)
+#define PINMUX_GPIO116__FUNC_DBG_MON_B10 (MTK_PIN_NO(116) | 7)
+
+#define PINMUX_GPIO117__FUNC_GPIO117 (MTK_PIN_NO(117) | 0)
+#define PINMUX_GPIO117__FUNC_SPI0_SPU_MI (MTK_PIN_NO(117) | 1)
+#define PINMUX_GPIO117__FUNC_SPI4_A_MI (MTK_PIN_NO(117) | 2)
+#define PINMUX_GPIO117__FUNC_DSI1_TE (MTK_PIN_NO(117) | 3)
+#define PINMUX_GPIO117__FUNC_DBG_MON_B11 (MTK_PIN_NO(117) | 7)
+
+#define PINMUX_GPIO118__FUNC_GPIO118 (MTK_PIN_NO(118) | 0)
+#define PINMUX_GPIO118__FUNC_SPI5_CLK (MTK_PIN_NO(118) | 1)
+#define PINMUX_GPIO118__FUNC_USB_DRVVBUS (MTK_PIN_NO(118) | 2)
+#define PINMUX_GPIO118__FUNC_DP_TX_HPD (MTK_PIN_NO(118) | 3)
+#define PINMUX_GPIO118__FUNC_AD_ILDO_DTEST0 (MTK_PIN_NO(118) | 4)
+
+#define PINMUX_GPIO119__FUNC_GPIO119 (MTK_PIN_NO(119) | 0)
+#define PINMUX_GPIO119__FUNC_SPI5_CSB (MTK_PIN_NO(119) | 1)
+#define PINMUX_GPIO119__FUNC_VBUSVALID (MTK_PIN_NO(119) | 2)
+#define PINMUX_GPIO119__FUNC_DP_OC_EN (MTK_PIN_NO(119) | 3)
+#define PINMUX_GPIO119__FUNC_AD_ILDO_DTEST1 (MTK_PIN_NO(119) | 4)
+
+#define PINMUX_GPIO120__FUNC_GPIO120 (MTK_PIN_NO(120) | 0)
+#define PINMUX_GPIO120__FUNC_SPI5_MO (MTK_PIN_NO(120) | 1)
+#define PINMUX_GPIO120__FUNC_LCM2_RST (MTK_PIN_NO(120) | 2)
+#define PINMUX_GPIO120__FUNC_DP_RAUX_SBU1 (MTK_PIN_NO(120) | 3)
+#define PINMUX_GPIO120__FUNC_AD_ILDO_DTEST2 (MTK_PIN_NO(120) | 4)
+#define PINMUX_GPIO120__FUNC_IDDIG_3P (MTK_PIN_NO(120) | 6)
+
+#define PINMUX_GPIO121__FUNC_GPIO121 (MTK_PIN_NO(121) | 0)
+#define PINMUX_GPIO121__FUNC_SPI5_MI (MTK_PIN_NO(121) | 1)
+#define PINMUX_GPIO121__FUNC_DSI2_TE (MTK_PIN_NO(121) | 2)
+#define PINMUX_GPIO121__FUNC_DP_RAUX_SBU2 (MTK_PIN_NO(121) | 3)
+#define PINMUX_GPIO121__FUNC_AD_ILDO_DTEST3 (MTK_PIN_NO(121) | 4)
+#define PINMUX_GPIO121__FUNC_USB_DRVVBUS_3P (MTK_PIN_NO(121) | 6)
+#define PINMUX_GPIO121__FUNC_DBG_MON_B17 (MTK_PIN_NO(121) | 7)
+
+#define PINMUX_GPIO122__FUNC_GPIO122 (MTK_PIN_NO(122) | 0)
+#define PINMUX_GPIO122__FUNC_AP_GOOD (MTK_PIN_NO(122) | 1)
+#define PINMUX_GPIO122__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(122) | 2)
+
+#define PINMUX_GPIO123__FUNC_GPIO123 (MTK_PIN_NO(123) | 0)
+#define PINMUX_GPIO123__FUNC_SCL3 (MTK_PIN_NO(123) | 1)
+#define PINMUX_GPIO123__FUNC_I2SIN2_LRCK (MTK_PIN_NO(123) | 5)
+#define PINMUX_GPIO123__FUNC_TP_UTXD_MD_VCORE (MTK_PIN_NO(123) | 6)
+
+#define PINMUX_GPIO124__FUNC_GPIO124 (MTK_PIN_NO(124) | 0)
+#define PINMUX_GPIO124__FUNC_SDA3 (MTK_PIN_NO(124) | 1)
+#define PINMUX_GPIO124__FUNC_TP_URXD_MD_VCORE (MTK_PIN_NO(124) | 6)
+
+#define PINMUX_GPIO125__FUNC_GPIO125 (MTK_PIN_NO(125) | 0)
+#define PINMUX_GPIO125__FUNC_MSDC1_CLK (MTK_PIN_NO(125) | 1)
+#define PINMUX_GPIO125__FUNC_MD1_SIM2_SCLK (MTK_PIN_NO(125) | 2)
+#define PINMUX_GPIO125__FUNC_HFRP_JTAG0_TCK (MTK_PIN_NO(125) | 3)
+#define PINMUX_GPIO125__FUNC_UDI_TCK (MTK_PIN_NO(125) | 4)
+#define PINMUX_GPIO125__FUNC_CONN_BGF_DSP_L1_JCK (MTK_PIN_NO(125) | 5)
+#define PINMUX_GPIO125__FUNC_SCP_JTAG_LITTLE_TCK_VLP (MTK_PIN_NO(125) | 6)
+#define PINMUX_GPIO125__FUNC_JTCK2_SEL1 (MTK_PIN_NO(125) | 7)
+
+#define PINMUX_GPIO126__FUNC_GPIO126 (MTK_PIN_NO(126) | 0)
+#define PINMUX_GPIO126__FUNC_MSDC1_CMD (MTK_PIN_NO(126) | 1)
+#define PINMUX_GPIO126__FUNC_HFRP_JTAG0_TMS (MTK_PIN_NO(126) | 3)
+#define PINMUX_GPIO126__FUNC_UDI_TMS (MTK_PIN_NO(126) | 4)
+#define PINMUX_GPIO126__FUNC_CONN_BGF_DSP_L1_JMS (MTK_PIN_NO(126) | 5)
+#define PINMUX_GPIO126__FUNC_SCP_JTAG_LITTLE_TMS_VLP (MTK_PIN_NO(126) | 6)
+#define PINMUX_GPIO126__FUNC_JTMS2_SEL1 (MTK_PIN_NO(126) | 7)
+
+#define PINMUX_GPIO127__FUNC_GPIO127 (MTK_PIN_NO(127) | 0)
+#define PINMUX_GPIO127__FUNC_MSDC1_DAT0 (MTK_PIN_NO(127) | 1)
+#define PINMUX_GPIO127__FUNC_MD1_SIM2_SRST (MTK_PIN_NO(127) | 2)
+#define PINMUX_GPIO127__FUNC_HFRP_JTAG0_TDI (MTK_PIN_NO(127) | 3)
+#define PINMUX_GPIO127__FUNC_UDI_TDI_0 (MTK_PIN_NO(127) | 4)
+#define PINMUX_GPIO127__FUNC_CONN_BGF_DSP_L1_JDI (MTK_PIN_NO(127) | 5)
+#define PINMUX_GPIO127__FUNC_SCP_JTAG_LITTLE_TDI_VLP (MTK_PIN_NO(127) | 6)
+#define PINMUX_GPIO127__FUNC_JTDI2_SEL1 (MTK_PIN_NO(127) | 7)
+
+#define PINMUX_GPIO128__FUNC_GPIO128 (MTK_PIN_NO(128) | 0)
+#define PINMUX_GPIO128__FUNC_MSDC1_DAT1 (MTK_PIN_NO(128) | 1)
+#define PINMUX_GPIO128__FUNC_MD1_SIM2_SIO (MTK_PIN_NO(128) | 2)
+#define PINMUX_GPIO128__FUNC_HFRP_JTAG0_TDO (MTK_PIN_NO(128) | 3)
+#define PINMUX_GPIO128__FUNC_UDI_TDO_0 (MTK_PIN_NO(128) | 4)
+#define PINMUX_GPIO128__FUNC_CONN_BGF_DSP_L1_JDO (MTK_PIN_NO(128) | 5)
+#define PINMUX_GPIO128__FUNC_SCP_JTAG_LITTLE_TDO_VLP (MTK_PIN_NO(128) | 6)
+#define PINMUX_GPIO128__FUNC_JTDO2_SEL1 (MTK_PIN_NO(128) | 7)
+
+#define PINMUX_GPIO129__FUNC_GPIO129 (MTK_PIN_NO(129) | 0)
+#define PINMUX_GPIO129__FUNC_MSDC1_DAT2 (MTK_PIN_NO(129) | 1)
+#define PINMUX_GPIO129__FUNC_DSI2_HSYNC (MTK_PIN_NO(129) | 2)
+#define PINMUX_GPIO129__FUNC_HFRP_JTAG0_TRSTN (MTK_PIN_NO(129) | 3)
+#define PINMUX_GPIO129__FUNC_UDI_NTRST (MTK_PIN_NO(129) | 4)
+#define PINMUX_GPIO129__FUNC_SCP_JTAG_LITTLE_TRSTN_VLP (MTK_PIN_NO(129) | 6)
+#define PINMUX_GPIO129__FUNC_JTRSTN2_SEL1 (MTK_PIN_NO(129) | 7)
+
+#define PINMUX_GPIO130__FUNC_GPIO130 (MTK_PIN_NO(130) | 0)
+#define PINMUX_GPIO130__FUNC_MSDC1_DAT3 (MTK_PIN_NO(130) | 1)
+#define PINMUX_GPIO130__FUNC_DSI3_HSYNC (MTK_PIN_NO(130) | 2)
+#define PINMUX_GPIO130__FUNC_CONN_BGF_DSP_L1_JINTP (MTK_PIN_NO(130) | 5)
+
+#define PINMUX_GPIO131__FUNC_GPIO131 (MTK_PIN_NO(131) | 0)
+#define PINMUX_GPIO131__FUNC_MD1_SIM2_SCLK (MTK_PIN_NO(131) | 1)
+#define PINMUX_GPIO131__FUNC_MD1_SIM1_SCLK (MTK_PIN_NO(131) | 2)
+#define PINMUX_GPIO131__FUNC_MCUPM_JTAG_TDI (MTK_PIN_NO(131) | 3)
+#define PINMUX_GPIO131__FUNC_CLKM0_A (MTK_PIN_NO(131) | 4)
+#define PINMUX_GPIO131__FUNC_CONN_BGF_DSP_L5_JDI (MTK_PIN_NO(131) | 5)
+#define PINMUX_GPIO131__FUNC_TSFDC_SCK (MTK_PIN_NO(131) | 6)
+#define PINMUX_GPIO131__FUNC_SCP_JTAG0_TDI_VCORE (MTK_PIN_NO(131) | 7)
+
+#define PINMUX_GPIO132__FUNC_GPIO132 (MTK_PIN_NO(132) | 0)
+#define PINMUX_GPIO132__FUNC_MD1_SIM2_SRST (MTK_PIN_NO(132) | 1)
+#define PINMUX_GPIO132__FUNC_MD1_SIM1_SRST (MTK_PIN_NO(132) | 2)
+#define PINMUX_GPIO132__FUNC_MCUPM_JTAG_TMS (MTK_PIN_NO(132) | 3)
+#define PINMUX_GPIO132__FUNC_CLKM1_B (MTK_PIN_NO(132) | 4)
+#define PINMUX_GPIO132__FUNC_CONN_BGF_DSP_L5_JMS (MTK_PIN_NO(132) | 5)
+#define PINMUX_GPIO132__FUNC_TSFDC_SDI (MTK_PIN_NO(132) | 6)
+#define PINMUX_GPIO132__FUNC_SCP_JTAG0_TMS_VCORE (MTK_PIN_NO(132) | 7)
+
+#define PINMUX_GPIO133__FUNC_GPIO133 (MTK_PIN_NO(133) | 0)
+#define PINMUX_GPIO133__FUNC_MD1_SIM2_SIO (MTK_PIN_NO(133) | 1)
+#define PINMUX_GPIO133__FUNC_MD1_SIM1_SIO (MTK_PIN_NO(133) | 2)
+#define PINMUX_GPIO133__FUNC_MCUPM_JTAG_TDO (MTK_PIN_NO(133) | 3)
+#define PINMUX_GPIO133__FUNC_CONN_BGF_DSP_L5_JDO (MTK_PIN_NO(133) | 5)
+#define PINMUX_GPIO133__FUNC_TSFDC_SCF (MTK_PIN_NO(133) | 6)
+#define PINMUX_GPIO133__FUNC_SCP_JTAG0_TDO_VCORE (MTK_PIN_NO(133) | 7)
+
+#define PINMUX_GPIO134__FUNC_GPIO134 (MTK_PIN_NO(134) | 0)
+#define PINMUX_GPIO134__FUNC_MD1_SIM1_SCLK (MTK_PIN_NO(134) | 1)
+#define PINMUX_GPIO134__FUNC_MD1_SIM2_SCLK (MTK_PIN_NO(134) | 2)
+#define PINMUX_GPIO134__FUNC_TSFDC_26M (MTK_PIN_NO(134) | 6)
+
+#define PINMUX_GPIO135__FUNC_GPIO135 (MTK_PIN_NO(135) | 0)
+#define PINMUX_GPIO135__FUNC_MD1_SIM1_SRST (MTK_PIN_NO(135) | 1)
+#define PINMUX_GPIO135__FUNC_MD1_SIM2_SRST (MTK_PIN_NO(135) | 2)
+#define PINMUX_GPIO135__FUNC_MCUPM_JTAG_TCK (MTK_PIN_NO(135) | 3)
+#define PINMUX_GPIO135__FUNC_CONN_BGF_DSP_L5_JCK (MTK_PIN_NO(135) | 5)
+#define PINMUX_GPIO135__FUNC_TSFDC_SDO (MTK_PIN_NO(135) | 6)
+#define PINMUX_GPIO135__FUNC_SCP_JTAG0_TCK_VCORE (MTK_PIN_NO(135) | 7)
+
+#define PINMUX_GPIO136__FUNC_GPIO136 (MTK_PIN_NO(136) | 0)
+#define PINMUX_GPIO136__FUNC_MD1_SIM1_SIO (MTK_PIN_NO(136) | 1)
+#define PINMUX_GPIO136__FUNC_MD1_SIM2_SIO (MTK_PIN_NO(136) | 2)
+#define PINMUX_GPIO136__FUNC_MCUPM_JTAG_TRSTN (MTK_PIN_NO(136) | 3)
+#define PINMUX_GPIO136__FUNC_CONN_BGF_DSP_L5_JINTP (MTK_PIN_NO(136) | 5)
+#define PINMUX_GPIO136__FUNC_TSFDC_FOUT (MTK_PIN_NO(136) | 6)
+#define PINMUX_GPIO136__FUNC_SCP_JTAG0_TRSTN_VCORE (MTK_PIN_NO(136) | 7)
+
+#define PINMUX_GPIO137__FUNC_GPIO137 (MTK_PIN_NO(137) | 0)
+#define PINMUX_GPIO137__FUNC_MIPI0_D_SCLK (MTK_PIN_NO(137) | 1)
+#define PINMUX_GPIO137__FUNC_BPI_BUS16 (MTK_PIN_NO(137) | 2)
+#define PINMUX_GPIO137__FUNC_EXT_FRAME_SYNC (MTK_PIN_NO(137) | 4)
+#define PINMUX_GPIO137__FUNC_SPM_JTAG_TRSTN_VCORE (MTK_PIN_NO(137) | 6)
+#define PINMUX_GPIO137__FUNC_DBG_MON_A0 (MTK_PIN_NO(137) | 7)
+
+#define PINMUX_GPIO138__FUNC_GPIO138 (MTK_PIN_NO(138) | 0)
+#define PINMUX_GPIO138__FUNC_MIPI0_D_SDATA (MTK_PIN_NO(138) | 1)
+#define PINMUX_GPIO138__FUNC_BPI_BUS17 (MTK_PIN_NO(138) | 2)
+#define PINMUX_GPIO138__FUNC_PCM0_LRCK (MTK_PIN_NO(138) | 4)
+#define PINMUX_GPIO138__FUNC_SPM_JTAG_TCK_VCORE (MTK_PIN_NO(138) | 6)
+#define PINMUX_GPIO138__FUNC_DBG_MON_A1 (MTK_PIN_NO(138) | 7)
+
+#define PINMUX_GPIO139__FUNC_GPIO139 (MTK_PIN_NO(139) | 0)
+#define PINMUX_GPIO139__FUNC_MIPI1_D_SCLK (MTK_PIN_NO(139) | 1)
+#define PINMUX_GPIO139__FUNC_BPI_BUS18 (MTK_PIN_NO(139) | 2)
+#define PINMUX_GPIO139__FUNC_MD_GPS_BLANK (MTK_PIN_NO(139) | 4)
+#define PINMUX_GPIO139__FUNC_SPM_JTAG_TMS_VCORE (MTK_PIN_NO(139) | 6)
+#define PINMUX_GPIO139__FUNC_DBG_MON_A2 (MTK_PIN_NO(139) | 7)
+
+#define PINMUX_GPIO140__FUNC_GPIO140 (MTK_PIN_NO(140) | 0)
+#define PINMUX_GPIO140__FUNC_MIPI1_D_SDATA (MTK_PIN_NO(140) | 1)
+#define PINMUX_GPIO140__FUNC_BPI_BUS19 (MTK_PIN_NO(140) | 2)
+#define PINMUX_GPIO140__FUNC_MD_URXD1_CONN (MTK_PIN_NO(140) | 4)
+#define PINMUX_GPIO140__FUNC_SPM_JTAG_TDO_VCORE (MTK_PIN_NO(140) | 6)
+#define PINMUX_GPIO140__FUNC_DBG_MON_A3 (MTK_PIN_NO(140) | 7)
+
+#define PINMUX_GPIO141__FUNC_GPIO141 (MTK_PIN_NO(141) | 0)
+#define PINMUX_GPIO141__FUNC_MIPI2_D_SCLK (MTK_PIN_NO(141) | 1)
+#define PINMUX_GPIO141__FUNC_BPI_BUS20 (MTK_PIN_NO(141) | 2)
+#define PINMUX_GPIO141__FUNC_MD_UTXD1_CONN (MTK_PIN_NO(141) | 4)
+#define PINMUX_GPIO141__FUNC_SPM_JTAG_TDI_VCORE (MTK_PIN_NO(141) | 6)
+#define PINMUX_GPIO141__FUNC_DBG_MON_A4 (MTK_PIN_NO(141) | 7)
+
+#define PINMUX_GPIO142__FUNC_GPIO142 (MTK_PIN_NO(142) | 0)
+#define PINMUX_GPIO142__FUNC_MIPI2_D_SDATA (MTK_PIN_NO(142) | 1)
+#define PINMUX_GPIO142__FUNC_BPI_BUS21 (MTK_PIN_NO(142) | 2)
+#define PINMUX_GPIO142__FUNC_SSPM_JTAG_TRSTN_VCORE (MTK_PIN_NO(142) | 6)
+#define PINMUX_GPIO142__FUNC_DBG_MON_A5 (MTK_PIN_NO(142) | 7)
+
+#define PINMUX_GPIO143__FUNC_GPIO143 (MTK_PIN_NO(143) | 0)
+#define PINMUX_GPIO143__FUNC_MIPI3_D_SCLK (MTK_PIN_NO(143) | 1)
+#define PINMUX_GPIO143__FUNC_BPI_BUS22 (MTK_PIN_NO(143) | 2)
+#define PINMUX_GPIO143__FUNC_TP_UTXD_GNSS_VLP (MTK_PIN_NO(143) | 4)
+#define PINMUX_GPIO143__FUNC_MD_UTXD1_CONN (MTK_PIN_NO(143) | 5)
+#define PINMUX_GPIO143__FUNC_SSPM_JTAG_TCK_VCORE (MTK_PIN_NO(143) | 6)
+
+#define PINMUX_GPIO144__FUNC_GPIO144 (MTK_PIN_NO(144) | 0)
+#define PINMUX_GPIO144__FUNC_MIPI3_D_SDATA (MTK_PIN_NO(144) | 1)
+#define PINMUX_GPIO144__FUNC_BPI_BUS23 (MTK_PIN_NO(144) | 2)
+#define PINMUX_GPIO144__FUNC_TP_URXD_GNSS_VLP (MTK_PIN_NO(144) | 4)
+#define PINMUX_GPIO144__FUNC_MD_URXD1_CONN (MTK_PIN_NO(144) | 5)
+#define PINMUX_GPIO144__FUNC_SSPM_JTAG_TMS_VCORE (MTK_PIN_NO(144) | 6)
+
+#define PINMUX_GPIO145__FUNC_GPIO145 (MTK_PIN_NO(145) | 0)
+#define PINMUX_GPIO145__FUNC_BPI_BUS0 (MTK_PIN_NO(145) | 1)
+#define PINMUX_GPIO145__FUNC_PCIE_WAKEN_1P (MTK_PIN_NO(145) | 4)
+#define PINMUX_GPIO145__FUNC_SSPM_JTAG_TDO_VCORE (MTK_PIN_NO(145) | 6)
+#define PINMUX_GPIO145__FUNC_DBG_MON_A10 (MTK_PIN_NO(145) | 7)
+
+#define PINMUX_GPIO146__FUNC_GPIO146 (MTK_PIN_NO(146) | 0)
+#define PINMUX_GPIO146__FUNC_BPI_BUS1 (MTK_PIN_NO(146) | 1)
+#define PINMUX_GPIO146__FUNC_PCIE_PERSTN_1P (MTK_PIN_NO(146) | 4)
+#define PINMUX_GPIO146__FUNC_SSPM_JTAG_TDI_VCORE (MTK_PIN_NO(146) | 6)
+#define PINMUX_GPIO146__FUNC_DBG_MON_A11 (MTK_PIN_NO(146) | 7)
+
+#define PINMUX_GPIO147__FUNC_GPIO147 (MTK_PIN_NO(147) | 0)
+#define PINMUX_GPIO147__FUNC_BPI_BUS2 (MTK_PIN_NO(147) | 1)
+#define PINMUX_GPIO147__FUNC_AUD_DAC_26M_CLK (MTK_PIN_NO(147) | 2)
+#define PINMUX_GPIO147__FUNC_PCIE_CLKREQN_1P (MTK_PIN_NO(147) | 4)
+#define PINMUX_GPIO147__FUNC_SCP_JTAG_LITTLE_TRSTN_VCORE (MTK_PIN_NO(147) | 6)
+#define PINMUX_GPIO147__FUNC_DBG_MON_A12 (MTK_PIN_NO(147) | 7)
+
+#define PINMUX_GPIO148__FUNC_GPIO148 (MTK_PIN_NO(148) | 0)
+#define PINMUX_GPIO148__FUNC_BPI_BUS3 (MTK_PIN_NO(148) | 1)
+#define PINMUX_GPIO148__FUNC_AUD_DAC_26M_CLK (MTK_PIN_NO(148) | 2)
+#define PINMUX_GPIO148__FUNC_TP_UTXD_MD_VLP (MTK_PIN_NO(148) | 4)
+#define PINMUX_GPIO148__FUNC_TP_GPIO0_AO (MTK_PIN_NO(148) | 5)
+#define PINMUX_GPIO148__FUNC_SCP_JTAG_LITTLE_TCK_VCORE (MTK_PIN_NO(148) | 6)
+#define PINMUX_GPIO148__FUNC_DBG_MON_A13 (MTK_PIN_NO(148) | 7)
+
+#define PINMUX_GPIO149__FUNC_GPIO149 (MTK_PIN_NO(149) | 0)
+#define PINMUX_GPIO149__FUNC_BPI_BUS4 (MTK_PIN_NO(149) | 1)
+#define PINMUX_GPIO149__FUNC_EXT_FRAME_SYNC (MTK_PIN_NO(149) | 2)
+#define PINMUX_GPIO149__FUNC_TP_URXD_MD_VLP (MTK_PIN_NO(149) | 4)
+#define PINMUX_GPIO149__FUNC_TP_GPIO1_AO (MTK_PIN_NO(149) | 5)
+#define PINMUX_GPIO149__FUNC_SCP_JTAG_LITTLE_TMS_VCORE (MTK_PIN_NO(149) | 6)
+#define PINMUX_GPIO149__FUNC_DBG_MON_A14 (MTK_PIN_NO(149) | 7)
+
+#define PINMUX_GPIO150__FUNC_GPIO150 (MTK_PIN_NO(150) | 0)
+#define PINMUX_GPIO150__FUNC_BPI_BUS5 (MTK_PIN_NO(150) | 1)
+#define PINMUX_GPIO150__FUNC_GPS_PPS0 (MTK_PIN_NO(150) | 2)
+#define PINMUX_GPIO150__FUNC_TP_GPIO2_AO (MTK_PIN_NO(150) | 5)
+#define PINMUX_GPIO150__FUNC_SCP_JTAG_LITTLE_TDO_VCORE (MTK_PIN_NO(150) | 6)
+#define PINMUX_GPIO150__FUNC_DBG_MON_A15 (MTK_PIN_NO(150) | 7)
+
+#define PINMUX_GPIO151__FUNC_GPIO151 (MTK_PIN_NO(151) | 0)
+#define PINMUX_GPIO151__FUNC_BPI_BUS6 (MTK_PIN_NO(151) | 1)
+#define PINMUX_GPIO151__FUNC_GPS_PPS1 (MTK_PIN_NO(151) | 2)
+#define PINMUX_GPIO151__FUNC_TP_GPIO3_AO (MTK_PIN_NO(151) | 5)
+#define PINMUX_GPIO151__FUNC_SCP_JTAG_LITTLE_TDI_VCORE (MTK_PIN_NO(151) | 6)
+
+#define PINMUX_GPIO152__FUNC_GPIO152 (MTK_PIN_NO(152) | 0)
+#define PINMUX_GPIO152__FUNC_BPI_BUS7 (MTK_PIN_NO(152) | 1)
+#define PINMUX_GPIO152__FUNC_EDP_TX_HPD (MTK_PIN_NO(152) | 2)
+#define PINMUX_GPIO152__FUNC_AGPS_SYNC (MTK_PIN_NO(152) | 5)
+#define PINMUX_GPIO152__FUNC_SSPM_UTXD_AO_VCORE (MTK_PIN_NO(152) | 6)
+
+#define PINMUX_GPIO153__FUNC_GPIO153 (MTK_PIN_NO(153) | 0)
+#define PINMUX_GPIO153__FUNC_MD_UCNT_A_TGL (MTK_PIN_NO(153) | 1)
+#define PINMUX_GPIO153__FUNC_TP_URTS1_VCORE (MTK_PIN_NO(153) | 6)
+#define PINMUX_GPIO153__FUNC_DBG_MON_A8 (MTK_PIN_NO(153) | 7)
+
+#define PINMUX_GPIO154__FUNC_GPIO154 (MTK_PIN_NO(154) | 0)
+#define PINMUX_GPIO154__FUNC_DIGRF_IRQ (MTK_PIN_NO(154) | 1)
+#define PINMUX_GPIO154__FUNC_TP_UCTS1_VCORE (MTK_PIN_NO(154) | 6)
+#define PINMUX_GPIO154__FUNC_DBG_MON_A9 (MTK_PIN_NO(154) | 7)
+
+#define PINMUX_GPIO155__FUNC_GPIO155 (MTK_PIN_NO(155) | 0)
+#define PINMUX_GPIO155__FUNC_MIPI_M_SCLK (MTK_PIN_NO(155) | 1)
+#define PINMUX_GPIO155__FUNC_UCTS2 (MTK_PIN_NO(155) | 4)
+#define PINMUX_GPIO155__FUNC_TP_UTXD_CONSYS_VCORE (MTK_PIN_NO(155) | 6)
+#define PINMUX_GPIO155__FUNC_DBG_MON_A6 (MTK_PIN_NO(155) | 7)
+
+#define PINMUX_GPIO156__FUNC_GPIO156 (MTK_PIN_NO(156) | 0)
+#define PINMUX_GPIO156__FUNC_MIPI_M_SDATA (MTK_PIN_NO(156) | 1)
+#define PINMUX_GPIO156__FUNC_URTS2 (MTK_PIN_NO(156) | 4)
+#define PINMUX_GPIO156__FUNC_TP_URXD_CONSYS_VCORE (MTK_PIN_NO(156) | 6)
+#define PINMUX_GPIO156__FUNC_DBG_MON_A7 (MTK_PIN_NO(156) | 7)
+
+#define PINMUX_GPIO157__FUNC_GPIO157 (MTK_PIN_NO(157) | 0)
+#define PINMUX_GPIO157__FUNC_BPI_BUS8 (MTK_PIN_NO(157) | 1)
+#define PINMUX_GPIO157__FUNC_UTXD2 (MTK_PIN_NO(157) | 4)
+#define PINMUX_GPIO157__FUNC_CLKM0_A (MTK_PIN_NO(157) | 5)
+#define PINMUX_GPIO157__FUNC_SSPM_URXD_AO_VCORE (MTK_PIN_NO(157) | 6)
+#define PINMUX_GPIO157__FUNC_DBG_MON_A16 (MTK_PIN_NO(157) | 7)
+
+#define PINMUX_GPIO158__FUNC_GPIO158 (MTK_PIN_NO(158) | 0)
+#define PINMUX_GPIO158__FUNC_BPI_BUS9 (MTK_PIN_NO(158) | 1)
+#define PINMUX_GPIO158__FUNC_URXD2 (MTK_PIN_NO(158) | 4)
+#define PINMUX_GPIO158__FUNC_CLKM1_A (MTK_PIN_NO(158) | 5)
+#define PINMUX_GPIO158__FUNC_TP_UTXD1_VCORE (MTK_PIN_NO(158) | 6)
+
+#define PINMUX_GPIO159__FUNC_GPIO159 (MTK_PIN_NO(159) | 0)
+#define PINMUX_GPIO159__FUNC_BPI_BUS10 (MTK_PIN_NO(159) | 1)
+#define PINMUX_GPIO159__FUNC_MD_INT0 (MTK_PIN_NO(159) | 2)
+#define PINMUX_GPIO159__FUNC_SRCLKENAI1 (MTK_PIN_NO(159) | 3)
+#define PINMUX_GPIO159__FUNC_CLKM2_A (MTK_PIN_NO(159) | 5)
+#define PINMUX_GPIO159__FUNC_TP_URXD1_VCORE (MTK_PIN_NO(159) | 6)
+
+#define PINMUX_GPIO160__FUNC_GPIO160 (MTK_PIN_NO(160) | 0)
+#define PINMUX_GPIO160__FUNC_UTXD0 (MTK_PIN_NO(160) | 1)
+#define PINMUX_GPIO160__FUNC_MD_UTXD1 (MTK_PIN_NO(160) | 2)
+#define PINMUX_GPIO160__FUNC_MBISTREADEN_TRIGGER (MTK_PIN_NO(160) | 5)
+#define PINMUX_GPIO160__FUNC_CONN_BG_GPS_MCU_DBG_UART_TXD (MTK_PIN_NO(160) | 6)
+
+#define PINMUX_GPIO161__FUNC_GPIO161 (MTK_PIN_NO(161) | 0)
+#define PINMUX_GPIO161__FUNC_URXD0 (MTK_PIN_NO(161) | 1)
+#define PINMUX_GPIO161__FUNC_MD_URXD1 (MTK_PIN_NO(161) | 2)
+#define PINMUX_GPIO161__FUNC_MBISTWRITEEN_TRIGGER (MTK_PIN_NO(161) | 5)
+
+#define PINMUX_GPIO162__FUNC_GPIO162 (MTK_PIN_NO(162) | 0)
+#define PINMUX_GPIO162__FUNC_UTXD1 (MTK_PIN_NO(162) | 1)
+#define PINMUX_GPIO162__FUNC_MD_UTXD0 (MTK_PIN_NO(162) | 2)
+#define PINMUX_GPIO162__FUNC_TP_UTXD1_VLP (MTK_PIN_NO(162) | 3)
+#define PINMUX_GPIO162__FUNC_ADSP_UTXD0 (MTK_PIN_NO(162) | 4)
+#define PINMUX_GPIO162__FUNC_SSPM_UTXD_AO_VLP (MTK_PIN_NO(162) | 5)
+#define PINMUX_GPIO162__FUNC_HFRP_UTXD1 (MTK_PIN_NO(162) | 6)
+
+#define PINMUX_GPIO163__FUNC_GPIO163 (MTK_PIN_NO(163) | 0)
+#define PINMUX_GPIO163__FUNC_URXD1 (MTK_PIN_NO(163) | 1)
+#define PINMUX_GPIO163__FUNC_MD_URXD0 (MTK_PIN_NO(163) | 2)
+#define PINMUX_GPIO163__FUNC_TP_URXD1_VLP (MTK_PIN_NO(163) | 3)
+#define PINMUX_GPIO163__FUNC_ADSP_URXD0 (MTK_PIN_NO(163) | 4)
+#define PINMUX_GPIO163__FUNC_SSPM_URXD_AO_VLP (MTK_PIN_NO(163) | 5)
+#define PINMUX_GPIO163__FUNC_HFRP_URXD1 (MTK_PIN_NO(163) | 6)
+
+#define PINMUX_GPIO164__FUNC_GPIO164 (MTK_PIN_NO(164) | 0)
+#define PINMUX_GPIO164__FUNC_SCP_SCL0 (MTK_PIN_NO(164) | 1)
+#define PINMUX_GPIO164__FUNC_TP_GPIO0_AO (MTK_PIN_NO(164) | 6)
+#define PINMUX_GPIO164__FUNC_DBG_MON_A22 (MTK_PIN_NO(164) | 7)
+
+#define PINMUX_GPIO165__FUNC_GPIO165 (MTK_PIN_NO(165) | 0)
+#define PINMUX_GPIO165__FUNC_SCP_SDA0 (MTK_PIN_NO(165) | 1)
+#define PINMUX_GPIO165__FUNC_TP_GPIO1_AO (MTK_PIN_NO(165) | 6)
+#define PINMUX_GPIO165__FUNC_DBG_MON_A23 (MTK_PIN_NO(165) | 7)
+
+#define PINMUX_GPIO166__FUNC_GPIO166 (MTK_PIN_NO(166) | 0)
+#define PINMUX_GPIO166__FUNC_SCP_SCL2 (MTK_PIN_NO(166) | 1)
+#define PINMUX_GPIO166__FUNC_TP_GPIO2_AO (MTK_PIN_NO(166) | 6)
+#define PINMUX_GPIO166__FUNC_DBG_MON_A24 (MTK_PIN_NO(166) | 7)
+
+#define PINMUX_GPIO167__FUNC_GPIO167 (MTK_PIN_NO(167) | 0)
+#define PINMUX_GPIO167__FUNC_SCP_SDA2 (MTK_PIN_NO(167) | 1)
+#define PINMUX_GPIO167__FUNC_TP_GPIO3_AO (MTK_PIN_NO(167) | 6)
+#define PINMUX_GPIO167__FUNC_DBG_MON_A25 (MTK_PIN_NO(167) | 7)
+
+#define PINMUX_GPIO168__FUNC_GPIO168 (MTK_PIN_NO(168) | 0)
+#define PINMUX_GPIO168__FUNC_SCP_SPI2_CK (MTK_PIN_NO(168) | 1)
+#define PINMUX_GPIO168__FUNC_SPI2_B_CLK (MTK_PIN_NO(168) | 2)
+#define PINMUX_GPIO168__FUNC_PWM_VLP (MTK_PIN_NO(168) | 3)
+#define PINMUX_GPIO168__FUNC_SCP_SCL2 (MTK_PIN_NO(168) | 4)
+#define PINMUX_GPIO168__FUNC_DBG_MON_A26 (MTK_PIN_NO(168) | 7)
+
+#define PINMUX_GPIO169__FUNC_GPIO169 (MTK_PIN_NO(169) | 0)
+#define PINMUX_GPIO169__FUNC_SCP_SPI2_CS (MTK_PIN_NO(169) | 1)
+#define PINMUX_GPIO169__FUNC_SPI2_B_CSB (MTK_PIN_NO(169) | 2)
+#define PINMUX_GPIO169__FUNC_DBG_MON_A27 (MTK_PIN_NO(169) | 7)
+
+#define PINMUX_GPIO170__FUNC_GPIO170 (MTK_PIN_NO(170) | 0)
+#define PINMUX_GPIO170__FUNC_SCP_SPI2_MO (MTK_PIN_NO(170) | 1)
+#define PINMUX_GPIO170__FUNC_SPI2_B_MO (MTK_PIN_NO(170) | 2)
+#define PINMUX_GPIO170__FUNC_SCP_SDA2 (MTK_PIN_NO(170) | 4)
+#define PINMUX_GPIO170__FUNC_DBG_MON_A28 (MTK_PIN_NO(170) | 7)
+
+#define PINMUX_GPIO171__FUNC_GPIO171 (MTK_PIN_NO(171) | 0)
+#define PINMUX_GPIO171__FUNC_SCP_SPI2_MI (MTK_PIN_NO(171) | 1)
+#define PINMUX_GPIO171__FUNC_SPI2_B_MI (MTK_PIN_NO(171) | 2)
+#define PINMUX_GPIO171__FUNC_DBG_MON_A29 (MTK_PIN_NO(171) | 7)
+
+#define PINMUX_GPIO172__FUNC_GPIO172 (MTK_PIN_NO(172) | 0)
+#define PINMUX_GPIO172__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(172) | 1)
+
+#define PINMUX_GPIO173__FUNC_GPIO173 (MTK_PIN_NO(173) | 0)
+#define PINMUX_GPIO173__FUNC_CMFLASH3 (MTK_PIN_NO(173) | 1)
+#define PINMUX_GPIO173__FUNC_PWM_3 (MTK_PIN_NO(173) | 2)
+#define PINMUX_GPIO173__FUNC_MD_GPS_L5_BLANK (MTK_PIN_NO(173) | 3)
+#define PINMUX_GPIO173__FUNC_CLKM1_A (MTK_PIN_NO(173) | 4)
+#define PINMUX_GPIO173__FUNC_DBG_MON_A31 (MTK_PIN_NO(173) | 7)
+
+#define PINMUX_GPIO174__FUNC_GPIO174 (MTK_PIN_NO(174) | 0)
+#define PINMUX_GPIO174__FUNC_CMFLASH0 (MTK_PIN_NO(174) | 1)
+#define PINMUX_GPIO174__FUNC_PWM_0 (MTK_PIN_NO(174) | 2)
+#define PINMUX_GPIO174__FUNC_VBUSVALID_1P (MTK_PIN_NO(174) | 3)
+#define PINMUX_GPIO174__FUNC_MD32_2_RXD (MTK_PIN_NO(174) | 4)
+#define PINMUX_GPIO174__FUNC_DISP_PWM3 (MTK_PIN_NO(174) | 5)
+
+#define PINMUX_GPIO175__FUNC_GPIO175 (MTK_PIN_NO(175) | 0)
+#define PINMUX_GPIO175__FUNC_CMFLASH1 (MTK_PIN_NO(175) | 1)
+#define PINMUX_GPIO175__FUNC_PWM_1 (MTK_PIN_NO(175) | 2)
+#define PINMUX_GPIO175__FUNC_EDP_TX_HPD (MTK_PIN_NO(175) | 3)
+#define PINMUX_GPIO175__FUNC_MD32_2_TXD (MTK_PIN_NO(175) | 4)
+#define PINMUX_GPIO175__FUNC_DISP_PWM4 (MTK_PIN_NO(175) | 5)
+
+#define PINMUX_GPIO176__FUNC_GPIO176 (MTK_PIN_NO(176) | 0)
+#define PINMUX_GPIO176__FUNC_SCL5 (MTK_PIN_NO(176) | 1)
+#define PINMUX_GPIO176__FUNC_LCM3_RST (MTK_PIN_NO(176) | 2)
+#define PINMUX_GPIO176__FUNC_MD_URXD1_CONN (MTK_PIN_NO(176) | 4)
+#define PINMUX_GPIO176__FUNC_TP_UTXD_GNSS_VCORE (MTK_PIN_NO(176) | 6)
+
+#define PINMUX_GPIO177__FUNC_GPIO177 (MTK_PIN_NO(177) | 0)
+#define PINMUX_GPIO177__FUNC_SDA5 (MTK_PIN_NO(177) | 1)
+#define PINMUX_GPIO177__FUNC_DSI3_TE (MTK_PIN_NO(177) | 2)
+#define PINMUX_GPIO177__FUNC_MD_UTXD1_CONN (MTK_PIN_NO(177) | 4)
+#define PINMUX_GPIO177__FUNC_TP_URXD_GNSS_VCORE (MTK_PIN_NO(177) | 6)
+
+#define PINMUX_GPIO178__FUNC_GPIO178 (MTK_PIN_NO(178) | 0)
+#define PINMUX_GPIO178__FUNC_DMIC_CLK (MTK_PIN_NO(178) | 1)
+#define PINMUX_GPIO178__FUNC_SCP_DMIC_CLK (MTK_PIN_NO(178) | 2)
+#define PINMUX_GPIO178__FUNC_SRCLKENAI0 (MTK_PIN_NO(178) | 3)
+#define PINMUX_GPIO178__FUNC_CLKM2_B (MTK_PIN_NO(178) | 4)
+#define PINMUX_GPIO178__FUNC_TP_GPIO7_AO (MTK_PIN_NO(178) | 5)
+#define PINMUX_GPIO178__FUNC_SPU1_UTX (MTK_PIN_NO(178) | 6)
+#define PINMUX_GPIO178__FUNC_DAP_SONIC_SWCK (MTK_PIN_NO(178) | 7)
+
+#define PINMUX_GPIO179__FUNC_GPIO179 (MTK_PIN_NO(179) | 0)
+#define PINMUX_GPIO179__FUNC_DMIC_DAT (MTK_PIN_NO(179) | 1)
+#define PINMUX_GPIO179__FUNC_SCP_DMIC_DAT (MTK_PIN_NO(179) | 2)
+#define PINMUX_GPIO179__FUNC_SRCLKENAI1 (MTK_PIN_NO(179) | 3)
+#define PINMUX_GPIO179__FUNC_CLKM3_B (MTK_PIN_NO(179) | 4)
+#define PINMUX_GPIO179__FUNC_TP_GPIO8_AO (MTK_PIN_NO(179) | 5)
+#define PINMUX_GPIO179__FUNC_SPU1_URX (MTK_PIN_NO(179) | 6)
+#define PINMUX_GPIO179__FUNC_DAP_SONIC_SWD (MTK_PIN_NO(179) | 7)
+
+#define PINMUX_GPIO180__FUNC_GPIO180 (MTK_PIN_NO(180) | 0)
+#define PINMUX_GPIO180__FUNC_IDDIG_1P (MTK_PIN_NO(180) | 1)
+#define PINMUX_GPIO180__FUNC_CMVREF0 (MTK_PIN_NO(180) | 2)
+#define PINMUX_GPIO180__FUNC_GPS_PPS1 (MTK_PIN_NO(180) | 3)
+#define PINMUX_GPIO180__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(180) | 4)
+#define PINMUX_GPIO180__FUNC_DISP_PWM1 (MTK_PIN_NO(180) | 5)
+
+#define PINMUX_GPIO181__FUNC_GPIO181 (MTK_PIN_NO(181) | 0)
+#define PINMUX_GPIO181__FUNC_USB_DRVVBUS_1P (MTK_PIN_NO(181) | 1)
+#define PINMUX_GPIO181__FUNC_CMVREF1 (MTK_PIN_NO(181) | 2)
+#define PINMUX_GPIO181__FUNC_MFG_EB_JTAG_TRSTN (MTK_PIN_NO(181) | 3)
+#define PINMUX_GPIO181__FUNC_ADSP_JTAG1_TRSTN (MTK_PIN_NO(181) | 4)
+#define PINMUX_GPIO181__FUNC_HFRP_JTAG1_TRSTN (MTK_PIN_NO(181) | 5)
+#define PINMUX_GPIO181__FUNC_SPU1_NTRST (MTK_PIN_NO(181) | 6)
+#define PINMUX_GPIO181__FUNC_CONN_BG_GPS_MCU_TRST_B (MTK_PIN_NO(181) | 7)
+
+#define PINMUX_GPIO182__FUNC_GPIO182 (MTK_PIN_NO(182) | 0)
+#define PINMUX_GPIO182__FUNC_SCL11 (MTK_PIN_NO(182) | 1)
+#define PINMUX_GPIO182__FUNC_CMVREF2 (MTK_PIN_NO(182) | 2)
+#define PINMUX_GPIO182__FUNC_MFG_EB_JTAG_TCK (MTK_PIN_NO(182) | 3)
+#define PINMUX_GPIO182__FUNC_ADSP_JTAG1_TCK (MTK_PIN_NO(182) | 4)
+#define PINMUX_GPIO182__FUNC_HFRP_JTAG1_TCK (MTK_PIN_NO(182) | 5)
+#define PINMUX_GPIO182__FUNC_SPU1_TCK (MTK_PIN_NO(182) | 6)
+#define PINMUX_GPIO182__FUNC_CONN_BG_GPS_MCU_TCK (MTK_PIN_NO(182) | 7)
+
+#define PINMUX_GPIO183__FUNC_GPIO183 (MTK_PIN_NO(183) | 0)
+#define PINMUX_GPIO183__FUNC_SDA11 (MTK_PIN_NO(183) | 1)
+#define PINMUX_GPIO183__FUNC_CMVREF3 (MTK_PIN_NO(183) | 2)
+#define PINMUX_GPIO183__FUNC_MFG_EB_JTAG_TMS (MTK_PIN_NO(183) | 3)
+#define PINMUX_GPIO183__FUNC_ADSP_JTAG1_TMS (MTK_PIN_NO(183) | 4)
+#define PINMUX_GPIO183__FUNC_HFRP_JTAG1_TMS (MTK_PIN_NO(183) | 5)
+#define PINMUX_GPIO183__FUNC_SPU1_TMS (MTK_PIN_NO(183) | 6)
+#define PINMUX_GPIO183__FUNC_CONN_BG_GPS_MCU_TMS (MTK_PIN_NO(183) | 7)
+
+#define PINMUX_GPIO184__FUNC_GPIO184 (MTK_PIN_NO(184) | 0)
+#define PINMUX_GPIO184__FUNC_SCL12 (MTK_PIN_NO(184) | 1)
+#define PINMUX_GPIO184__FUNC_CMVREF4 (MTK_PIN_NO(184) | 2)
+#define PINMUX_GPIO184__FUNC_MFG_EB_JTAG_TDO (MTK_PIN_NO(184) | 3)
+#define PINMUX_GPIO184__FUNC_ADSP_JTAG1_TDO (MTK_PIN_NO(184) | 4)
+#define PINMUX_GPIO184__FUNC_HFRP_JTAG1_TDO (MTK_PIN_NO(184) | 5)
+#define PINMUX_GPIO184__FUNC_SPU1_TDO (MTK_PIN_NO(184) | 6)
+#define PINMUX_GPIO184__FUNC_CONN_BG_GPS_MCU_TDO (MTK_PIN_NO(184) | 7)
+
+#define PINMUX_GPIO185__FUNC_GPIO185 (MTK_PIN_NO(185) | 0)
+#define PINMUX_GPIO185__FUNC_SDA12 (MTK_PIN_NO(185) | 1)
+#define PINMUX_GPIO185__FUNC_CMVREF5 (MTK_PIN_NO(185) | 2)
+#define PINMUX_GPIO185__FUNC_MFG_EB_JTAG_TDI (MTK_PIN_NO(185) | 3)
+#define PINMUX_GPIO185__FUNC_ADSP_JTAG1_TDI (MTK_PIN_NO(185) | 4)
+#define PINMUX_GPIO185__FUNC_HFRP_JTAG1_TDI (MTK_PIN_NO(185) | 5)
+#define PINMUX_GPIO185__FUNC_SPU1_TDI (MTK_PIN_NO(185) | 6)
+#define PINMUX_GPIO185__FUNC_CONN_BG_GPS_MCU_TDI (MTK_PIN_NO(185) | 7)
+
+#define PINMUX_GPIO186__FUNC_GPIO186 (MTK_PIN_NO(186) | 0)
+#define PINMUX_GPIO186__FUNC_MD_GPS_L1_BLANK (MTK_PIN_NO(186) | 1)
+#define PINMUX_GPIO186__FUNC_PMSR_SMAP (MTK_PIN_NO(186) | 2)
+#define PINMUX_GPIO186__FUNC_TP_GPIO2_AO (MTK_PIN_NO(186) | 3)
+
+#define PINMUX_GPIO187__FUNC_GPIO187 (MTK_PIN_NO(187) | 0)
+#define PINMUX_GPIO187__FUNC_MD_GPS_L5_BLANK (MTK_PIN_NO(187) | 1)
+#define PINMUX_GPIO187__FUNC_TP_GPIO4_AO (MTK_PIN_NO(187) | 3)
+
+#define PINMUX_GPIO188__FUNC_GPIO188 (MTK_PIN_NO(188) | 0)
+#define PINMUX_GPIO188__FUNC_SCL2 (MTK_PIN_NO(188) | 1)
+#define PINMUX_GPIO188__FUNC_SCP_SCL8 (MTK_PIN_NO(188) | 2)
+
+#define PINMUX_GPIO189__FUNC_GPIO189 (MTK_PIN_NO(189) | 0)
+#define PINMUX_GPIO189__FUNC_SDA2 (MTK_PIN_NO(189) | 1)
+#define PINMUX_GPIO189__FUNC_SCP_SDA8 (MTK_PIN_NO(189) | 2)
+
+#define PINMUX_GPIO190__FUNC_GPIO190 (MTK_PIN_NO(190) | 0)
+#define PINMUX_GPIO190__FUNC_SCL4 (MTK_PIN_NO(190) | 1)
+#define PINMUX_GPIO190__FUNC_SCP_SCL9 (MTK_PIN_NO(190) | 2)
+#define PINMUX_GPIO190__FUNC_UDI_TDI_6 (MTK_PIN_NO(190) | 6)
+
+#define PINMUX_GPIO191__FUNC_GPIO191 (MTK_PIN_NO(191) | 0)
+#define PINMUX_GPIO191__FUNC_SDA4 (MTK_PIN_NO(191) | 1)
+#define PINMUX_GPIO191__FUNC_SCP_SDA9 (MTK_PIN_NO(191) | 2)
+#define PINMUX_GPIO191__FUNC_UDI_TDI_7 (MTK_PIN_NO(191) | 6)
+
+#define PINMUX_GPIO192__FUNC_GPIO192 (MTK_PIN_NO(192) | 0)
+#define PINMUX_GPIO192__FUNC_CMMCLK2 (MTK_PIN_NO(192) | 1)
+#define PINMUX_GPIO192__FUNC_MD32_3_RXD (MTK_PIN_NO(192) | 4)
+
+#define PINMUX_GPIO193__FUNC_GPIO193 (MTK_PIN_NO(193) | 0)
+#define PINMUX_GPIO193__FUNC_CLKM0_B (MTK_PIN_NO(193) | 3)
+#define PINMUX_GPIO193__FUNC_MD32_3_TXD (MTK_PIN_NO(193) | 4)
+#define PINMUX_GPIO193__FUNC_UDI_TDO_7 (MTK_PIN_NO(193) | 6)
+
+#define PINMUX_GPIO194__FUNC_GPIO194 (MTK_PIN_NO(194) | 0)
+#define PINMUX_GPIO194__FUNC_SCL7 (MTK_PIN_NO(194) | 1)
+#define PINMUX_GPIO194__FUNC_MD32_3_GPIO0 (MTK_PIN_NO(194) | 2)
+#define PINMUX_GPIO194__FUNC_CLKM2_B (MTK_PIN_NO(194) | 3)
+#define PINMUX_GPIO194__FUNC_UDI_TDI_2 (MTK_PIN_NO(194) | 6)
+
+#define PINMUX_GPIO195__FUNC_GPIO195 (MTK_PIN_NO(195) | 0)
+#define PINMUX_GPIO195__FUNC_SDA7 (MTK_PIN_NO(195) | 1)
+#define PINMUX_GPIO195__FUNC_CLKM3_B (MTK_PIN_NO(195) | 3)
+#define PINMUX_GPIO195__FUNC_UDI_TDI_3 (MTK_PIN_NO(195) | 6)
+
+#define PINMUX_GPIO196__FUNC_GPIO196 (MTK_PIN_NO(196) | 0)
+#define PINMUX_GPIO196__FUNC_CMMCLK3 (MTK_PIN_NO(196) | 1)
+
+#define PINMUX_GPIO197__FUNC_GPIO197 (MTK_PIN_NO(197) | 0)
+#define PINMUX_GPIO197__FUNC_CLKM1_B (MTK_PIN_NO(197) | 3)
+#define PINMUX_GPIO197__FUNC_UDI_TDI_1 (MTK_PIN_NO(197) | 6)
+
+#define PINMUX_GPIO198__FUNC_GPIO198 (MTK_PIN_NO(198) | 0)
+#define PINMUX_GPIO198__FUNC_SCL8 (MTK_PIN_NO(198) | 1)
+#define PINMUX_GPIO198__FUNC_UDI_TDI_4 (MTK_PIN_NO(198) | 6)
+
+#define PINMUX_GPIO199__FUNC_GPIO199 (MTK_PIN_NO(199) | 0)
+#define PINMUX_GPIO199__FUNC_SDA8 (MTK_PIN_NO(199) | 1)
+#define PINMUX_GPIO199__FUNC_UDI_TDI_5 (MTK_PIN_NO(199) | 6)
+
+#define PINMUX_GPIO200__FUNC_GPIO200 (MTK_PIN_NO(200) | 0)
+#define PINMUX_GPIO200__FUNC_SCL1 (MTK_PIN_NO(200) | 1)
+
+#define PINMUX_GPIO201__FUNC_GPIO201 (MTK_PIN_NO(201) | 0)
+#define PINMUX_GPIO201__FUNC_SDA1 (MTK_PIN_NO(201) | 1)
+#define PINMUX_GPIO201__FUNC_TSFDC_BG_COMP (MTK_PIN_NO(201) | 7)
+
+#define PINMUX_GPIO202__FUNC_GPIO202 (MTK_PIN_NO(202) | 0)
+#define PINMUX_GPIO202__FUNC_SCL9 (MTK_PIN_NO(202) | 1)
+#define PINMUX_GPIO202__FUNC_SCP_SCL7 (MTK_PIN_NO(202) | 2)
+#define PINMUX_GPIO202__FUNC_TP_GPIO15_AO (MTK_PIN_NO(202) | 6)
+
+#define PINMUX_GPIO203__FUNC_GPIO203 (MTK_PIN_NO(203) | 0)
+#define PINMUX_GPIO203__FUNC_SDA9 (MTK_PIN_NO(203) | 1)
+#define PINMUX_GPIO203__FUNC_SCP_SDA7 (MTK_PIN_NO(203) | 2)
+#define PINMUX_GPIO203__FUNC_TP_GPIO9_AO (MTK_PIN_NO(203) | 6)
+
+#define PINMUX_GPIO204__FUNC_GPIO204 (MTK_PIN_NO(204) | 0)
+#define PINMUX_GPIO204__FUNC_SCL13 (MTK_PIN_NO(204) | 1)
+#define PINMUX_GPIO204__FUNC_CMVREF6 (MTK_PIN_NO(204) | 2)
+#define PINMUX_GPIO204__FUNC_GPS_L1_ELNA_EN (MTK_PIN_NO(204) | 3)
+#define PINMUX_GPIO204__FUNC_CLKM2_B (MTK_PIN_NO(204) | 5)
+#define PINMUX_GPIO204__FUNC_TP_GPIO12_AO (MTK_PIN_NO(204) | 6)
+
+#define PINMUX_GPIO205__FUNC_GPIO205 (MTK_PIN_NO(205) | 0)
+#define PINMUX_GPIO205__FUNC_SDA13 (MTK_PIN_NO(205) | 1)
+#define PINMUX_GPIO205__FUNC_CMVREF7 (MTK_PIN_NO(205) | 2)
+#define PINMUX_GPIO205__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(205) | 3)
+#define PINMUX_GPIO205__FUNC_CLKM3_B (MTK_PIN_NO(205) | 5)
+#define PINMUX_GPIO205__FUNC_TP_GPIO13_AO (MTK_PIN_NO(205) | 6)
+
+#define PINMUX_GPIO206__FUNC_GPIO206 (MTK_PIN_NO(206) | 0)
+#define PINMUX_GPIO206__FUNC_MD32_2_GPIO0 (MTK_PIN_NO(206) | 2)
+#define PINMUX_GPIO206__FUNC_VBUSVALID (MTK_PIN_NO(206) | 5)
+#define PINMUX_GPIO206__FUNC_UDI_TDO_3 (MTK_PIN_NO(206) | 6)
+
+#define PINMUX_GPIO207__FUNC_GPIO207 (MTK_PIN_NO(207) | 0)
+#define PINMUX_GPIO207__FUNC_PCIE_WAKEN_2P (MTK_PIN_NO(207) | 1)
+#define PINMUX_GPIO207__FUNC_PMSR_SMAP_MAX (MTK_PIN_NO(207) | 2)
+#define PINMUX_GPIO207__FUNC_FMI2S_A_BCK (MTK_PIN_NO(207) | 4)
+#define PINMUX_GPIO207__FUNC_UDI_TDO_4 (MTK_PIN_NO(207) | 6)
+
+#define PINMUX_GPIO208__FUNC_GPIO208 (MTK_PIN_NO(208) | 0)
+#define PINMUX_GPIO208__FUNC_PCIE_CLKREQN_2P (MTK_PIN_NO(208) | 1)
+#define PINMUX_GPIO208__FUNC_PMSR_SMAP_MAX_W (MTK_PIN_NO(208) | 2)
+#define PINMUX_GPIO208__FUNC_FMI2S_A_LRCK (MTK_PIN_NO(208) | 4)
+#define PINMUX_GPIO208__FUNC_CLKM0_B (MTK_PIN_NO(208) | 5)
+#define PINMUX_GPIO208__FUNC_UDI_TDO_5 (MTK_PIN_NO(208) | 6)
+
+#define PINMUX_GPIO209__FUNC_GPIO209 (MTK_PIN_NO(209) | 0)
+#define PINMUX_GPIO209__FUNC_PCIE_PERSTN_2P (MTK_PIN_NO(209) | 1)
+#define PINMUX_GPIO209__FUNC_PMSR_SMAP (MTK_PIN_NO(209) | 2)
+#define PINMUX_GPIO209__FUNC_FMI2S_A_DI (MTK_PIN_NO(209) | 4)
+#define PINMUX_GPIO209__FUNC_CLKM1_B (MTK_PIN_NO(209) | 5)
+#define PINMUX_GPIO209__FUNC_UDI_TDO_6 (MTK_PIN_NO(209) | 6)
+
+#define PINMUX_GPIO210__FUNC_GPIO210 (MTK_PIN_NO(210) | 0)
+#define PINMUX_GPIO210__FUNC_CMMCLK4 (MTK_PIN_NO(210) | 1)
+
+#define PINMUX_GPIO211__FUNC_GPIO211 (MTK_PIN_NO(211) | 0)
+#define PINMUX_GPIO211__FUNC_CMMCLK5 (MTK_PIN_NO(211) | 1)
+#define PINMUX_GPIO211__FUNC_CONN_TCXOENA_REQ (MTK_PIN_NO(211) | 2)
+
+#define PINMUX_GPIO212__FUNC_GPIO212 (MTK_PIN_NO(212) | 0)
+#define PINMUX_GPIO212__FUNC_CMMCLK6 (MTK_PIN_NO(212) | 1)
+#define PINMUX_GPIO212__FUNC_TP_GPIO10_AO (MTK_PIN_NO(212) | 2)
+#define PINMUX_GPIO212__FUNC_IDDIG (MTK_PIN_NO(212) | 5)
+#define PINMUX_GPIO212__FUNC_UDI_TDO_1 (MTK_PIN_NO(212) | 6)
+
+#define PINMUX_GPIO213__FUNC_GPIO213 (MTK_PIN_NO(213) | 0)
+#define PINMUX_GPIO213__FUNC_CMMCLK7 (MTK_PIN_NO(213) | 1)
+#define PINMUX_GPIO213__FUNC_TP_GPIO11_AO (MTK_PIN_NO(213) | 2)
+#define PINMUX_GPIO213__FUNC_USB_DRVVBUS (MTK_PIN_NO(213) | 5)
+#define PINMUX_GPIO213__FUNC_UDI_TDO_2 (MTK_PIN_NO(213) | 6)
+
+#define PINMUX_GPIO214__FUNC_GPIO214 (MTK_PIN_NO(214) | 0)
+#define PINMUX_GPIO214__FUNC_SCP_SCL3 (MTK_PIN_NO(214) | 1)
+#define PINMUX_GPIO214__FUNC_SDA14_E1 (MTK_PIN_NO(214) | 2)
+#define PINMUX_GPIO214__FUNC_SCL14_E2 (MTK_PIN_NO(214) | 2)
+#define PINMUX_GPIO214__FUNC_GBE1_MDC (MTK_PIN_NO(214) | 6)
+#define PINMUX_GPIO214__FUNC_GBE0_MDC (MTK_PIN_NO(214) | 7)
+
+#define PINMUX_GPIO215__FUNC_GPIO215 (MTK_PIN_NO(215) | 0)
+#define PINMUX_GPIO215__FUNC_SCP_SDA3 (MTK_PIN_NO(215) | 1)
+#define PINMUX_GPIO215__FUNC_SCL14_E1 (MTK_PIN_NO(215) | 2)
+#define PINMUX_GPIO215__FUNC_SDA14_E2 (MTK_PIN_NO(215) | 2)
+#define PINMUX_GPIO215__FUNC_GBE1_MDIO (MTK_PIN_NO(215) | 6)
+#define PINMUX_GPIO215__FUNC_GBE0_MDIO (MTK_PIN_NO(215) | 7)
+
+#define PINMUX_GPIO216__FUNC_GPIO216 (MTK_PIN_NO(216) | 0)
+#define PINMUX_GPIO216__FUNC_GPS_PPS0 (MTK_PIN_NO(216) | 1)
+
+#define PINMUX_GPIO217__FUNC_GPIO217 (MTK_PIN_NO(217) | 0)
+#define PINMUX_GPIO217__FUNC_KPROW0 (MTK_PIN_NO(217) | 1)
+#define PINMUX_GPIO217__FUNC_TP_GPIO12_AO (MTK_PIN_NO(217) | 6)
+
+#define PINMUX_GPIO218__FUNC_GPIO218 (MTK_PIN_NO(218) | 0)
+#define PINMUX_GPIO218__FUNC_KPROW1 (MTK_PIN_NO(218) | 1)
+#define PINMUX_GPIO218__FUNC_SPI0_WP (MTK_PIN_NO(218) | 2)
+#define PINMUX_GPIO218__FUNC_MBISTREADEN_TRIGGER (MTK_PIN_NO(218) | 3)
+#define PINMUX_GPIO218__FUNC_GPS_L5_ELNA_EN (MTK_PIN_NO(218) | 5)
+#define PINMUX_GPIO218__FUNC_TP_GPIO14_AO (MTK_PIN_NO(218) | 6)
+
+#define PINMUX_GPIO219__FUNC_GPIO219 (MTK_PIN_NO(219) | 0)
+#define PINMUX_GPIO219__FUNC_KPCOL1 (MTK_PIN_NO(219) | 1)
+#define PINMUX_GPIO219__FUNC_SPI0_HOLD (MTK_PIN_NO(219) | 2)
+#define PINMUX_GPIO219__FUNC_MBISTWRITEEN_TRIGGER (MTK_PIN_NO(219) | 3)
+#define PINMUX_GPIO219__FUNC_SPMI_M_TRIG_FLAG (MTK_PIN_NO(219) | 4)
+#define PINMUX_GPIO219__FUNC_GPS_L1_ELNA_EN (MTK_PIN_NO(219) | 5)
+#define PINMUX_GPIO219__FUNC_SPM_JTAG_TRSTN_VLP (MTK_PIN_NO(219) | 6)
+#define PINMUX_GPIO219__FUNC_JTRSTN_SEL1 (MTK_PIN_NO(219) | 7)
+
+#define PINMUX_GPIO220__FUNC_GPIO220 (MTK_PIN_NO(220) | 0)
+#define PINMUX_GPIO220__FUNC_SPI0_CLK (MTK_PIN_NO(220) | 1)
+#define PINMUX_GPIO220__FUNC_SPM_JTAG_TCK_VLP (MTK_PIN_NO(220) | 6)
+#define PINMUX_GPIO220__FUNC_JTCK_SEL1 (MTK_PIN_NO(220) | 7)
+
+#define PINMUX_GPIO221__FUNC_GPIO221 (MTK_PIN_NO(221) | 0)
+#define PINMUX_GPIO221__FUNC_SPI0_CSB (MTK_PIN_NO(221) | 1)
+#define PINMUX_GPIO221__FUNC_SPM_JTAG_TMS_VLP (MTK_PIN_NO(221) | 6)
+#define PINMUX_GPIO221__FUNC_JTMS_SEL1 (MTK_PIN_NO(221) | 7)
+
+#define PINMUX_GPIO222__FUNC_GPIO222 (MTK_PIN_NO(222) | 0)
+#define PINMUX_GPIO222__FUNC_SPI0_MO (MTK_PIN_NO(222) | 1)
+#define PINMUX_GPIO222__FUNC_SCP_SCL7 (MTK_PIN_NO(222) | 2)
+#define PINMUX_GPIO222__FUNC_SPM_JTAG_TDO_VLP (MTK_PIN_NO(222) | 6)
+#define PINMUX_GPIO222__FUNC_JTDO_SEL1 (MTK_PIN_NO(222) | 7)
+
+#define PINMUX_GPIO223__FUNC_GPIO223 (MTK_PIN_NO(223) | 0)
+#define PINMUX_GPIO223__FUNC_SPI0_MI (MTK_PIN_NO(223) | 1)
+#define PINMUX_GPIO223__FUNC_SCP_SDA7 (MTK_PIN_NO(223) | 2)
+#define PINMUX_GPIO223__FUNC_SPM_JTAG_TDI_VLP (MTK_PIN_NO(223) | 6)
+#define PINMUX_GPIO223__FUNC_JTDI_SEL1 (MTK_PIN_NO(223) | 7)
+
+#define PINMUX_GPIO224__FUNC_GPIO224 (MTK_PIN_NO(224) | 0)
+#define PINMUX_GPIO224__FUNC_MSDC2_CLK (MTK_PIN_NO(224) | 1)
+#define PINMUX_GPIO224__FUNC_DMIC2_CLK (MTK_PIN_NO(224) | 2)
+#define PINMUX_GPIO224__FUNC_GBE0_AUX_PPS0 (MTK_PIN_NO(224) | 3)
+#define PINMUX_GPIO224__FUNC_GBE0_TXER (MTK_PIN_NO(224) | 4)
+#define PINMUX_GPIO224__FUNC_GBE1_TXER (MTK_PIN_NO(224) | 5)
+#define PINMUX_GPIO224__FUNC_GBE1_AUX_PPS0 (MTK_PIN_NO(224) | 6)
+#define PINMUX_GPIO224__FUNC_MD32_1_TXD (MTK_PIN_NO(224) | 7)
+
+#define PINMUX_GPIO225__FUNC_GPIO225 (MTK_PIN_NO(225) | 0)
+#define PINMUX_GPIO225__FUNC_MSDC2_CMD (MTK_PIN_NO(225) | 1)
+#define PINMUX_GPIO225__FUNC_DMIC2_DAT (MTK_PIN_NO(225) | 2)
+#define PINMUX_GPIO225__FUNC_GBE0_AUX_PPS1 (MTK_PIN_NO(225) | 3)
+#define PINMUX_GPIO225__FUNC_GBE0_RXER (MTK_PIN_NO(225) | 4)
+#define PINMUX_GPIO225__FUNC_GBE1_RXER (MTK_PIN_NO(225) | 5)
+#define PINMUX_GPIO225__FUNC_GBE1_AUX_PPS1 (MTK_PIN_NO(225) | 6)
+#define PINMUX_GPIO225__FUNC_MD32_1_RXD (MTK_PIN_NO(225) | 7)
+
+#define PINMUX_GPIO226__FUNC_GPIO226 (MTK_PIN_NO(226) | 0)
+#define PINMUX_GPIO226__FUNC_MSDC2_DAT0 (MTK_PIN_NO(226) | 1)
+#define PINMUX_GPIO226__FUNC_I2SIN3_BCK (MTK_PIN_NO(226) | 2)
+#define PINMUX_GPIO226__FUNC_GBE0_AUX_PPS2 (MTK_PIN_NO(226) | 3)
+#define PINMUX_GPIO226__FUNC_GBE0_COL (MTK_PIN_NO(226) | 4)
+#define PINMUX_GPIO226__FUNC_GBE1_COL (MTK_PIN_NO(226) | 5)
+#define PINMUX_GPIO226__FUNC_GBE1_AUX_PPS2 (MTK_PIN_NO(226) | 6)
+#define PINMUX_GPIO226__FUNC_GBE1_MDC (MTK_PIN_NO(226) | 7)
+
+#define PINMUX_GPIO227__FUNC_GPIO227 (MTK_PIN_NO(227) | 0)
+#define PINMUX_GPIO227__FUNC_MSDC2_DAT1 (MTK_PIN_NO(227) | 1)
+#define PINMUX_GPIO227__FUNC_I2SIN3_LRCK (MTK_PIN_NO(227) | 2)
+#define PINMUX_GPIO227__FUNC_GBE0_AUX_PPS3 (MTK_PIN_NO(227) | 3)
+#define PINMUX_GPIO227__FUNC_GBE0_INTR (MTK_PIN_NO(227) | 4)
+#define PINMUX_GPIO227__FUNC_GBE1_INTR (MTK_PIN_NO(227) | 5)
+#define PINMUX_GPIO227__FUNC_GBE1_AUX_PPS3 (MTK_PIN_NO(227) | 6)
+#define PINMUX_GPIO227__FUNC_GBE1_MDIO (MTK_PIN_NO(227) | 7)
+
+#define PINMUX_GPIO228__FUNC_GPIO228 (MTK_PIN_NO(228) | 0)
+#define PINMUX_GPIO228__FUNC_MSDC2_DAT2 (MTK_PIN_NO(228) | 1)
+#define PINMUX_GPIO228__FUNC_I2SIN3_DI (MTK_PIN_NO(228) | 2)
+#define PINMUX_GPIO228__FUNC_GBE0_MDC (MTK_PIN_NO(228) | 3)
+#define PINMUX_GPIO228__FUNC_GBE1_MDC (MTK_PIN_NO(228) | 4)
+#define PINMUX_GPIO228__FUNC_CONN_BG_GPS_MCU_AICE_TCKC (MTK_PIN_NO(228) | 5)
+
+#define PINMUX_GPIO229__FUNC_GPIO229 (MTK_PIN_NO(229) | 0)
+#define PINMUX_GPIO229__FUNC_MSDC2_DAT3 (MTK_PIN_NO(229) | 1)
+#define PINMUX_GPIO229__FUNC_I2SOUT3_DO (MTK_PIN_NO(229) | 2)
+#define PINMUX_GPIO229__FUNC_GBE0_MDIO (MTK_PIN_NO(229) | 3)
+#define PINMUX_GPIO229__FUNC_GBE1_MDIO (MTK_PIN_NO(229) | 4)
+#define PINMUX_GPIO229__FUNC_CONN_BG_GPS_MCU_AICE_TMSC (MTK_PIN_NO(229) | 5)
+#define PINMUX_GPIO229__FUNC_AVB_CLK2 (MTK_PIN_NO(229) | 7)
+
+#define PINMUX_GPIO230__FUNC_GPIO230 (MTK_PIN_NO(230) | 0)
+#define PINMUX_GPIO230__FUNC_CONN_TOP_CLK (MTK_PIN_NO(230) | 1)
+
+#define PINMUX_GPIO231__FUNC_GPIO231 (MTK_PIN_NO(231) | 0)
+#define PINMUX_GPIO231__FUNC_CONN_TOP_DATA (MTK_PIN_NO(231) | 1)
+
+#define PINMUX_GPIO232__FUNC_GPIO232 (MTK_PIN_NO(232) | 0)
+#define PINMUX_GPIO232__FUNC_CONN_HRST_B (MTK_PIN_NO(232) | 1)
+
+#define PINMUX_GPIO233__FUNC_GPIO233 (MTK_PIN_NO(233) | 0)
+#define PINMUX_GPIO233__FUNC_I2SIN0_BCK (MTK_PIN_NO(233) | 1)
+
+#define PINMUX_GPIO234__FUNC_GPIO234 (MTK_PIN_NO(234) | 0)
+#define PINMUX_GPIO234__FUNC_I2SIN0_LRCK (MTK_PIN_NO(234) | 1)
+
+#define PINMUX_GPIO235__FUNC_GPIO235 (MTK_PIN_NO(235) | 0)
+#define PINMUX_GPIO235__FUNC_I2SIN0_DI (MTK_PIN_NO(235) | 1)
+
+#define PINMUX_GPIO236__FUNC_GPIO236 (MTK_PIN_NO(236) | 0)
+#define PINMUX_GPIO236__FUNC_I2SOUT0_DO (MTK_PIN_NO(236) | 1)
+
+#define PINMUX_GPIO237__FUNC_GPIO237 (MTK_PIN_NO(237) | 0)
+#define PINMUX_GPIO237__FUNC_CONN_UARTHUB_UART_TX (MTK_PIN_NO(237) | 1)
+#define PINMUX_GPIO237__FUNC_UTXD3 (MTK_PIN_NO(237) | 3)
+
+#define PINMUX_GPIO238__FUNC_GPIO238 (MTK_PIN_NO(238) | 0)
+#define PINMUX_GPIO238__FUNC_CONN_UARTHUB_UART_RX (MTK_PIN_NO(238) | 1)
+#define PINMUX_GPIO238__FUNC_URXD3 (MTK_PIN_NO(238) | 3)
+
+#define PINMUX_GPIO239__FUNC_GPIO239 (MTK_PIN_NO(239) | 0)
+#define PINMUX_GPIO239__FUNC_TP_UTXD_CONSYS_VLP (MTK_PIN_NO(239) | 1)
+#define PINMUX_GPIO239__FUNC_TP_URXD_CONSYS_VLP (MTK_PIN_NO(239) | 2)
+
+#define PINMUX_GPIO240__FUNC_GPIO240 (MTK_PIN_NO(240) | 0)
+#define PINMUX_GPIO240__FUNC_TP_URXD_CONSYS_VLP (MTK_PIN_NO(240) | 1)
+#define PINMUX_GPIO240__FUNC_TP_UTXD_CONSYS_VLP (MTK_PIN_NO(240) | 2)
+
+#define PINMUX_GPIO241__FUNC_GPIO241 (MTK_PIN_NO(241) | 0)
+#define PINMUX_GPIO241__FUNC_PCIE_PERSTN (MTK_PIN_NO(241) | 1)
+
+#define PINMUX_GPIO242__FUNC_GPIO242 (MTK_PIN_NO(242) | 0)
+#define PINMUX_GPIO242__FUNC_PCIE_WAKEN (MTK_PIN_NO(242) | 1)
+
+#define PINMUX_GPIO243__FUNC_GPIO243 (MTK_PIN_NO(243) | 0)
+#define PINMUX_GPIO243__FUNC_PCIE_CLKREQN (MTK_PIN_NO(243) | 1)
+
+#define PINMUX_GPIO244__FUNC_GPIO244 (MTK_PIN_NO(244) | 0)
+#define PINMUX_GPIO244__FUNC_CONN_RST (MTK_PIN_NO(244) | 1)
+
+#define PINMUX_GPIO245__FUNC_GPIO245 (MTK_PIN_NO(245) | 0)
+
+#define PINMUX_GPIO246__FUNC_GPIO246 (MTK_PIN_NO(246) | 0)
+#define PINMUX_GPIO246__FUNC_CONN_PTA_TXD0 (MTK_PIN_NO(246) | 1)
+
+#define PINMUX_GPIO247__FUNC_GPIO247 (MTK_PIN_NO(247) | 0)
+#define PINMUX_GPIO247__FUNC_CONN_PTA_RXD0 (MTK_PIN_NO(247) | 1)
+
+#define PINMUX_GPIO248__FUNC_GPIO248 (MTK_PIN_NO(248) | 0)
+#define PINMUX_GPIO248__FUNC_UCTS3 (MTK_PIN_NO(248) | 3)
+
+#define PINMUX_GPIO249__FUNC_GPIO249 (MTK_PIN_NO(249) | 0)
+#define PINMUX_GPIO249__FUNC_URTS3 (MTK_PIN_NO(249) | 3)
+
+#define PINMUX_GPIO250__FUNC_GPIO250 (MTK_PIN_NO(250) | 0)
+
+#define PINMUX_GPIO251__FUNC_GPIO251 (MTK_PIN_NO(251) | 0)
+#define PINMUX_GPIO251__FUNC_IDDIG_1P (MTK_PIN_NO(251) | 1)
+
+#define PINMUX_GPIO252__FUNC_GPIO252 (MTK_PIN_NO(252) | 0)
+#define PINMUX_GPIO252__FUNC_USB_DRVVBUS_1P (MTK_PIN_NO(252) | 1)
+
+#define PINMUX_GPIO253__FUNC_GPIO253 (MTK_PIN_NO(253) | 0)
+#define PINMUX_GPIO253__FUNC_VBUSVALID_1P (MTK_PIN_NO(253) | 1)
+
+#define PINMUX_GPIO254__FUNC_GPIO254 (MTK_PIN_NO(254) | 0)
+#define PINMUX_GPIO254__FUNC_IDDIG_2P (MTK_PIN_NO(254) | 1)
+
+#define PINMUX_GPIO255__FUNC_GPIO255 (MTK_PIN_NO(255) | 0)
+#define PINMUX_GPIO255__FUNC_USB_DRVVBUS_2P (MTK_PIN_NO(255) | 1)
+
+#define PINMUX_GPIO256__FUNC_GPIO256 (MTK_PIN_NO(256) | 0)
+#define PINMUX_GPIO256__FUNC_VBUSVALID_2P (MTK_PIN_NO(256) | 1)
+
+#define PINMUX_GPIO257__FUNC_GPIO257 (MTK_PIN_NO(257) | 0)
+#define PINMUX_GPIO257__FUNC_VBUSVALID_3P (MTK_PIN_NO(257) | 1)
+
+#define PINMUX_GPIO258__FUNC_GPIO258 (MTK_PIN_NO(258) | 0)
+#define PINMUX_GPIO258__FUNC_AVB_CLK1 (MTK_PIN_NO(258) | 7)
+
+#define PINMUX_GPIO259__FUNC_GPIO259 (MTK_PIN_NO(259) | 0)
+#define PINMUX_GPIO259__FUNC_GBE0_TXD0 (MTK_PIN_NO(259) | 1)
+#define PINMUX_GPIO259__FUNC_GBE1_TXD0 (MTK_PIN_NO(259) | 2)
+
+#define PINMUX_GPIO260__FUNC_GPIO260 (MTK_PIN_NO(260) | 0)
+#define PINMUX_GPIO260__FUNC_GBE0_TXD1 (MTK_PIN_NO(260) | 1)
+#define PINMUX_GPIO260__FUNC_GBE1_TXD1 (MTK_PIN_NO(260) | 2)
+
+#define PINMUX_GPIO261__FUNC_GPIO261 (MTK_PIN_NO(261) | 0)
+#define PINMUX_GPIO261__FUNC_GBE0_TXC (MTK_PIN_NO(261) | 1)
+#define PINMUX_GPIO261__FUNC_GBE1_TXC (MTK_PIN_NO(261) | 2)
+
+#define PINMUX_GPIO262__FUNC_GPIO262 (MTK_PIN_NO(262) | 0)
+#define PINMUX_GPIO262__FUNC_GBE0_TXEN (MTK_PIN_NO(262) | 1)
+#define PINMUX_GPIO262__FUNC_GBE1_TXEN (MTK_PIN_NO(262) | 2)
+
+#define PINMUX_GPIO263__FUNC_GPIO263 (MTK_PIN_NO(263) | 0)
+#define PINMUX_GPIO263__FUNC_GBE0_RXD0 (MTK_PIN_NO(263) | 1)
+#define PINMUX_GPIO263__FUNC_GBE1_RXD0 (MTK_PIN_NO(263) | 2)
+#define PINMUX_GPIO263__FUNC_GBE0_AUX_PPS0 (MTK_PIN_NO(263) | 3)
+
+#define PINMUX_GPIO264__FUNC_GPIO264 (MTK_PIN_NO(264) | 0)
+#define PINMUX_GPIO264__FUNC_GBE0_RXD1 (MTK_PIN_NO(264) | 1)
+#define PINMUX_GPIO264__FUNC_GBE1_RXD1 (MTK_PIN_NO(264) | 2)
+#define PINMUX_GPIO264__FUNC_GBE0_AUX_PPS1 (MTK_PIN_NO(264) | 3)
+
+#define PINMUX_GPIO265__FUNC_GPIO265 (MTK_PIN_NO(265) | 0)
+#define PINMUX_GPIO265__FUNC_GBE0_RXC (MTK_PIN_NO(265) | 1)
+#define PINMUX_GPIO265__FUNC_GBE1_RXC (MTK_PIN_NO(265) | 2)
+#define PINMUX_GPIO265__FUNC_GBE0_AUX_PPS2 (MTK_PIN_NO(265) | 3)
+
+#define PINMUX_GPIO266__FUNC_GPIO266 (MTK_PIN_NO(266) | 0)
+#define PINMUX_GPIO266__FUNC_GBE0_RXDV (MTK_PIN_NO(266) | 1)
+#define PINMUX_GPIO266__FUNC_GBE1_RXDV (MTK_PIN_NO(266) | 2)
+#define PINMUX_GPIO266__FUNC_GBE0_AUX_PPS3 (MTK_PIN_NO(266) | 3)
+
+#define PINMUX_GPIO267__FUNC_GPIO267 (MTK_PIN_NO(267) | 0)
+#define PINMUX_GPIO267__FUNC_GBE0_TXD2 (MTK_PIN_NO(267) | 1)
+#define PINMUX_GPIO267__FUNC_GBE1_TXD2 (MTK_PIN_NO(267) | 2)
+#define PINMUX_GPIO267__FUNC_GBE0_RXER (MTK_PIN_NO(267) | 3)
+#define PINMUX_GPIO267__FUNC_GBE1_RXER (MTK_PIN_NO(267) | 4)
+
+#define PINMUX_GPIO268__FUNC_GPIO268 (MTK_PIN_NO(268) | 0)
+#define PINMUX_GPIO268__FUNC_GBE0_TXD3 (MTK_PIN_NO(268) | 1)
+#define PINMUX_GPIO268__FUNC_GBE1_TXD3 (MTK_PIN_NO(268) | 2)
+
+#define PINMUX_GPIO269__FUNC_GPIO269 (MTK_PIN_NO(269) | 0)
+#define PINMUX_GPIO269__FUNC_GBE0_RXD2 (MTK_PIN_NO(269) | 1)
+#define PINMUX_GPIO269__FUNC_GBE1_RXD2 (MTK_PIN_NO(269) | 2)
+#define PINMUX_GPIO269__FUNC_GBE0_MDC (MTK_PIN_NO(269) | 3)
+
+#define PINMUX_GPIO270__FUNC_GPIO270 (MTK_PIN_NO(270) | 0)
+#define PINMUX_GPIO270__FUNC_GBE0_RXD3 (MTK_PIN_NO(270) | 1)
+#define PINMUX_GPIO270__FUNC_GBE1_RXD3 (MTK_PIN_NO(270) | 2)
+#define PINMUX_GPIO270__FUNC_GBE0_MDIO (MTK_PIN_NO(270) | 3)
+
+#endif /* __MT8196_PINFUNC_H */
index 1f8584bd66c33744c3a2f29ae9bb19c934588ce0..c8418888268d982875b3aa1aff5551f7c6b5e339 100644 (file)
                enable-active-high;
        };
 
+       reg_vsys: regulator-vsys {
+               compatible = "regulator-fixed";
+               regulator-name = "vsys";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       touch0_fixed_3v3: regulator-vio33tp {
+               compatible = "regulator-fixed";
+               regulator-name = "vio33_tp";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&reg_vsys>;
+       };
+
        reserved-memory {
                #address-cells = <2>;
                #size-cells = <2>;
                        };
                };
        };
+
+       touchscreen@5d {
+               compatible = "goodix,gt9271";
+               reg = <0x5d>;
+               interrupts-extended = <&pio 78 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_pins>;
+               irq-gpios = <&pio 78 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&pio 79 GPIO_ACTIVE_LOW>;
+               AVDD28-supply = <&touch0_fixed_3v3>;
+               VDDIO-supply = <&mt6357_vrf12_reg>;
+       };
 };
 
 &mmc0 {
                };
        };
 
+       touch_pins: touch-pins {
+               ctp-int1-pins {
+                       pinmux = <MT8365_PIN_78_CMHSYNC__FUNC_GPIO78>;
+                       input-enable;
+                       bias-disable;
+               };
+
+               rst-pins {
+                       pinmux = <MT8365_PIN_79_CMVSYNC__FUNC_GPIO79>;
+                       output-low;
+               };
+       };
+
        uart0_pins: uart0-pins {
                pins {
                        pinmux = <MT8365_PIN_35_URXD0__FUNC_URXD0>,
index 60139e6dffd8e0e326690d922f3360d829ed026b..eaf45d42cd347a2bd2db8af9ecef8f83f70c9183 100644 (file)
@@ -21,6 +21,7 @@
 
 / {
        aliases {
+               dsi0 = &disp_dsi0;
                ethernet0 = &eth;
                i2c0 = &i2c0;
                i2c1 = &i2c1;
                serial0 = &uart0;
        };
 
+       backlight_lcm1: backlight-lcm1 {
+               compatible = "pwm-backlight";
+               brightness-levels = <0 1023>;
+               default-brightness-level = <576>;
+               num-interpolated-steps = <1023>;
+               power-supply = <&reg_vsys>;
+               pwms = <&disp_pwm1 0 500000>;
+       };
+
        chosen {
                stdout-path = "serial0:921600n8";
        };
                regulator-max-microvolt = <5000000>;
                enable-active-high;
        };
+
+       lcm1_iovcc: regulator-vio18-lcm1 {
+               compatible = "regulator-fixed";
+               regulator-name = "vio18_lcm1";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               enable-active-high;
+               gpio = <&pio 111 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsi0_vreg_en_pins>;
+               vin-supply = <&reg_vsys>;
+       };
+
+       lcm1_vddp: regulator-vsys-lcm1 {
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_lcm1";
+               regulator-min-microvolt = <4200000>;
+               regulator-max-microvolt = <4200000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&reg_vsys>;
+       };
 };
 
 &adsp {
        status = "okay";
 };
 
+&disp_dsi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "startek,kd070fhfid078", "himax,hx8279";
+               reg = <0>;
+               backlight = <&backlight_lcm1>;
+               enable-gpios = <&pio 45 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&pio 25 GPIO_ACTIVE_HIGH>;
+               iovcc-supply = <&lcm1_iovcc>;
+               vdd-supply = <&lcm1_vddp>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&panel_default_pins>;
+
+               port {
+                       dsi_panel_in: endpoint {
+                               remote-endpoint = <&dsi0_out>;
+                       };
+               };
+       };
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       dsi0_in: endpoint {
+                               remote-endpoint = <&dither0_out>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+                       dsi0_out: endpoint {
+                               remote-endpoint = <&dsi_panel_in>;
+                       };
+               };
+       };
+};
+
+&disp_pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&disp_pwm1_pins>;
+       status = "okay";
+};
+
+&dither0_in {
+       remote-endpoint = <&postmask0_out>;
+};
+
+&dither0_out {
+       remote-endpoint = <&dsi0_in>;
+};
+
+&gamma0_out {
+       remote-endpoint = <&postmask0_in>;
+};
+
 &gpu {
        mali-supply = <&mt6359_vproc2_buck_reg>;
        status = "okay";
        domain-supply = <&mt6359_vsram_others_ldo_reg>;
 };
 
+&mipi_tx_config0 {
+       status = "okay";
+};
+
 &mmc0 {
        status = "okay";
        pinctrl-names = "default", "state_uhs";
        mediatek,mic-type-1 = <3>; /* DCC */
 };
 
+&ovl0_in {
+       remote-endpoint = <&vdosys0_ep_main>;
+};
+
 &pcie {
        pinctrl-names = "default";
-       pinctrl-0 = <&pcie_pins_default>;
+       pinctrl-0 = <&pcie_default_pins>;
        status = "okay";
 };
 
                };
        };
 
+       disp_pwm1_pins: disp-pwm1-pins {
+               pins-pwm {
+                       pinmux = <PINMUX_GPIO30__FUNC_O_DISP_PWM1>;
+               };
+       };
+
        dptx_pins: dptx-pins {
                pins-cmd-dat {
                        pinmux = <PINMUX_GPIO46__FUNC_I0_DP_TX_HPD>;
                };
        };
 
-       panel_default_pins: panel-default-pins {
-               pins-dcdc {
-                       pinmux = <PINMUX_GPIO45__FUNC_B_GPIO45>;
-                       output-low;
-               };
-
-               pins-en {
+       dsi0_vreg_en_pins: dsi0-vreg-en-pins {
+               pins-pwr-en {
                        pinmux = <PINMUX_GPIO111__FUNC_B_GPIO111>;
                        output-low;
                };
+       };
 
+       panel_default_pins: panel-default-pins {
                pins-rst {
                        pinmux = <PINMUX_GPIO25__FUNC_B_GPIO25>;
-                       output-high;
+                       output-low;
+               };
+
+               pins-en {
+                       pinmux = <PINMUX_GPIO45__FUNC_B_GPIO45>;
+                       output-low;
                };
        };
 
-       pcie_pins_default: pcie-default {
-               mux {
+       pcie_default_pins: pcie-default-pins {
+               pins {
                        pinmux = <PINMUX_GPIO47__FUNC_I1_WAKEN>,
                                 <PINMUX_GPIO48__FUNC_O_PERSTN>,
                                 <PINMUX_GPIO49__FUNC_B1_CLKREQN>;
        };
 };
 
-&scp {
+&postmask0_in {
+       remote-endpoint = <&gamma0_out>;
+};
+
+&postmask0_out {
+       remote-endpoint = <&dither0_in>;
+};
+
+&scp_cluster {
+       status = "okay";
+};
+
+&scp_c0 {
        memory-region = <&scp_mem>;
        status = "okay";
 };
        status = "okay";
 };
 
+&vdosys0 {
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdosys0_ep_main: endpoint@0 {
+                       reg = <0>;
+                       remote-endpoint = <&ovl0_in>;
+               };
+       };
+};
+
 &u3phy0 {
        status = "okay";
 };
 };
 
 &ssusb2 {
+       /*
+        * the ssusb2 controller is one but we got two ports : one is routed
+        * to the M.2 slot, the other is on the RPi header who does support
+        * full OTG.
+        * As the controller is shared between them, the role switch default
+        * mode is set to host to make any peripheral inserted in the M.2
+        * slot (i.e BT/WIFI module) be detected when the other port is
+        * unused.
+        */
        dr_mode = "otg";
        maximum-speed = "high-speed";
+       role-switch-default-mode = "host";
        usb-role-switch;
        vusb33-supply = <&mt6359_vusb_ldo_reg>;
        wakeup-source;
        connector {
                compatible = "gpio-usb-b-connector", "usb-b-connector";
                type = "micro";
-               id-gpios = <&pio 89 GPIO_ACTIVE_HIGH>;
+               id-gpios = <&pio 89 GPIO_ACTIVE_LOW>;
                vbus-supply = <&usb_p2_vbus>;
        };
 };
index f02c32def593a54531221ec57473a335af08a92f..be5e5f339e811728e91b1ffec45ada25f9b0208b 100644 (file)
                };
        };
 
-       backlight_lcd0: backlight-lcd0 {
+       backlight_lcm0: backlight-lcm0 {
                compatible = "pwm-backlight";
-               pwms = <&disp_pwm0 0 500000>;
-               enable-gpios = <&pio 47 GPIO_ACTIVE_HIGH>;
                brightness-levels = <0 1023>;
-               num-interpolated-steps = <1023>;
                default-brightness-level = <576>;
+               num-interpolated-steps = <1023>;
+               pwms = <&disp_pwm0 0 500000>;
        };
 
        backlight_lcd1: backlight-lcd1 {
                brightness-levels = <0 1023>;
                num-interpolated-steps = <1023>;
                default-brightness-level = <576>;
+               status = "disabled";
        };
 
        can_clk: can-clk {
                };
        };
 
+       lcm0_iovcc: regulator-vio18-lcm0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vio18_lcm0";
+               enable-active-high;
+               gpio = <&pio 47 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsi0_vreg_en_pins>;
+               vin-supply = <&mt6360_ldo2>;
+       };
+
+       lcm0_vddp: regulator-vsys-lcm0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_lcm0";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&mt6360_ldo1>;
+       };
+
        wifi_fixed_3v3: regulator-2 {
                compatible = "regulator-fixed";
                regulator-name = "wifi_3v3";
 
 &disp_pwm0 {
        pinctrl-names = "default";
-       pinctrl-0 = <&pwm0_default_pins>;
+       pinctrl-0 = <&disp_pwm0_pins>;
        status = "okay";
 };
 
+&dither0_in {
+       remote-endpoint = <&gamma0_out>;
+};
+
+&dither0_out {
+       remote-endpoint = <&dsi0_in>;
+};
+
 &dmic_codec {
        wakeup-delay-ms = <200>;
 };
 
+&dsi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "startek,kd070fhfid078", "himax,hx8279";
+               reg = <0>;
+               backlight = <&backlight_lcm0>;
+               enable-gpios = <&pio 48 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&pio 108 GPIO_ACTIVE_HIGH>;
+               iovcc-supply = <&lcm0_iovcc>;
+               vdd-supply = <&lcm0_vddp>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&panel_default_pins>;
+
+               port {
+                       dsi_panel_in: endpoint {
+                               remote-endpoint = <&dsi0_out>;
+                       };
+               };
+       };
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               port@0 {
+                       reg = <0>;
+                       dsi0_in: endpoint {
+                               remote-endpoint = <&dither0_out>;
+                       };
+               };
+
+               port@1 {
+                       reg = <1>;
+                       dsi0_out: endpoint {
+                               remote-endpoint = <&dsi_panel_in>;
+                       };
+               };
+       };
+};
+
 &eth {
        phy-mode ="rgmii-rxid";
        phy-handle = <&eth_phy0>;
        };
 };
 
+&gamma0_out {
+       remote-endpoint = <&dither0_in>;
+};
+
 &gpu {
        mali-supply = <&mt6315_7_vbuck1>;
        status = "okay";
        domain-supply = <&mt6359_vsram_others_ldo_reg>;
 };
 
+&mipi_tx0 {
+       status = "okay";
+};
+
 &mmc0 {
        status = "okay";
        pinctrl-names = "default", "state_uhs";
        mediatek,mic-type-2 = <1>; /* ACC */
 };
 
+&ovl0_in {
+       remote-endpoint = <&vdosys0_ep_main>;
+};
+
 &pcie0 {
        pinctrl-names = "default", "idle";
        pinctrl-0 = <&pcie0_default_pins>;
                };
        };
 
+       dsi0_vreg_en_pins: dsi0-vreg-en-pins {
+               pins-pwr-en {
+                       pinmux = <PINMUX_GPIO47__FUNC_GPIO47>;
+                       output-low;
+               };
+       };
+
+       panel_default_pins: panel-default-pins {
+               pins-rst {
+                       pinmux = <PINMUX_GPIO108__FUNC_GPIO108>;
+                       output-high;
+               };
+
+               pins-en {
+                       pinmux = <PINMUX_GPIO48__FUNC_GPIO48>;
+                       output-low;
+               };
+       };
+
        pcie0_default_pins: pcie0-default-pins {
                pins {
                        pinmux = <PINMUX_GPIO19__FUNC_WAKEN>,
                };
        };
 
-       pwm0_default_pins: pwm0-default-pins {
-               pins-cmd-dat {
+       disp_pwm0_pins: disp-pwm0-pins {
+               pins-disp-pwm {
                        pinmux = <PINMUX_GPIO97__FUNC_DISP_PWM0>;
                };
        };
 
 &scp {
        memory-region = <&scp_mem>;
+       firmware-name = "mediatek/mt8195/scp.img";
        status = "okay";
 };
 
        status = "okay";
 };
 
+&vdosys0 {
+       port {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               vdosys0_ep_main: endpoint@0 {
+                       reg = <0>;
+                       remote-endpoint = <&ovl0_in>;
+               };
+       };
+};
+
 &xhci0 {
        status = "okay";
 };
index 1c922e98441a1aadf0aa3cdd76583a70401a1fa3..329c60cc6a6be0b4be8c0b8bb033b32d35302804 100644 (file)
                        no-map;
                };
 
-               afe_mem: memory@60000000 {
+               adsp_mem: memory@60000000 {
                        compatible = "shared-dma-pool";
-                       reg = <0 0x60000000 0 0x1100000>;
+                       reg = <0 0x60000000 0 0xf00000>;
+                       no-map;
+               };
+
+               afe_dma_mem: memory@60f00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x60f00000 0 0x100000>;
+                       no-map;
+               };
+
+               adsp_dma_mem: memory@61000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0 0x61000000 0 0x100000>;
                        no-map;
                };
 
        };
 };
 
+&adsp {
+       memory-region = <&adsp_dma_mem>, <&adsp_mem>;
+       status = "okay";
+};
+
+&afe {
+       memory-region = <&afe_dma_mem>;
+       status = "okay";
+};
+
 &cpu0 {
        cpu-supply = <&mt6359_vcore_buck_reg>;
 };
 &pio {
        mediatek,rsel-resistance-in-si-unit;
 
+       audio_default_pins: audio-default-pins {
+               pins-cmd-dat {
+                       pinmux = <PINMUX_GPIO70__FUNC_AUD_SYNC_MOSI>,
+                                <PINMUX_GPIO69__FUNC_AUD_CLK_MOSI>,
+                                <PINMUX_GPIO71__FUNC_AUD_DAT_MOSI0>,
+                                <PINMUX_GPIO72__FUNC_AUD_DAT_MOSI1>,
+                                <PINMUX_GPIO73__FUNC_AUD_DAT_MISO0>,
+                                <PINMUX_GPIO74__FUNC_AUD_DAT_MISO1>,
+                                <PINMUX_GPIO75__FUNC_AUD_DAT_MISO2>;
+               };
+       };
+
        dsi0_backlight_pins: dsi0-backlight-pins {
                pins-backlight-en {
                        pinmux = <PINMUX_GPIO107__FUNC_GPIO107>;
 
 &scp {
        memory-region = <&scp_mem>;
+       firmware-name = "mediatek/mt8195/scp.img";
        status = "okay";
 };
 
+&sound {
+       compatible = "mediatek,mt8195_mt6359";
+       model = "mt8395-evk";
+       pinctrl-names = "default";
+       pinctrl-0 = <&audio_default_pins>;
+       audio-routing =
+               "Headphone", "Headphone L",
+               "Headphone", "Headphone R";
+       mediatek,adsp = <&adsp>;
+       status = "okay";
+
+       headphone-dai-link {
+               link-name = "DL_SRC_BE";
+
+               codec {
+                       sound-dai = <&pmic 0>;
+               };
+       };
+};
+
 &spi1 {
        /* Exposed at 40 pin connector */
        pinctrl-0 = <&spi1_pins>;
index 32bb76b3202a0c66f93868498099add6f843028d..83bf5c81b5f7371e8aa3f530bdef7fc8b9d81c8b 100644 (file)
 
 &cpu0 {
        enable-method = "spin-table";
+       cpu-release-addr = /bits/ 64 <0>;
 };
 
 &cpu1 {
        enable-method = "spin-table";
+       cpu-release-addr = /bits/ 64 <0>;
 };
 
 &uart0 {
index ecd171b2feba488b486cdc72708420fca6fc11c8..fead4dde590dfff3f7d28a47c2b883462a6e51eb 100644 (file)
                        };
                };
        };
+
+       pinctrl: pinctrl@f0010000 {
+               compatible = "nuvoton,npcm845-pinctrl";
+               ranges = <0x0 0x0 0xf0010000 0x8000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               nuvoton,sysgcr = <&gcr>;
+               status = "okay";
+               gpio0: gpio@f0010000 {
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x0 0xB0>;
+                       interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-ranges = <&pinctrl 0 0 32>;
+               };
+               gpio1: gpio@f0011000 {
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x1000 0xB0>;
+                       interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-ranges = <&pinctrl 0 32 32>;
+               };
+               gpio2: gpio@f0012000 {
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x2000 0xB0>;
+                       interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-ranges = <&pinctrl 0 64 32>;
+               };
+               gpio3: gpio@f0013000 {
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x3000 0xB0>;
+                       interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-ranges = <&pinctrl 0 96 32>;
+               };
+               gpio4: gpio@f0014000 {
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x4000 0xB0>;
+                       interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-ranges = <&pinctrl 0 128 32>;
+               };
+               gpio5: gpio@f0015000 {
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x5000 0xB0>;
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-ranges = <&pinctrl 0 160 32>;
+               };
+               gpio6: gpio@f0016000 {
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x6000 0xB0>;
+                       interrupts = <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-ranges = <&pinctrl 0 192 32>;
+               };
+               gpio7: gpio@f0017000 {
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       reg = <0x7000 0xB0>;
+                       interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-ranges = <&pinctrl 0 224 32>;
+               };
+       };
 };
index 15aa49fc450399c7bd525adcdb6e92a27a185805..8b3736cee323b1f10cdb8916c40cccf7d66f6818 100644 (file)
                phy-names = "usb2-0";
        };
 
+       cec@3960000 {
+               status = "okay";
+
+               hdmi-phandle = <&sor1>;
+       };
+
        i2c@c250000 {
                /* carrier board ID EEPROM */
                eeprom@57 {
                };
        };
 
+       pwm@c340000 {
+               status = "okay";
+       };
+
        pcie@10003000 {
                status = "okay";
 
                };
        };
 
+       fan: pwm-fan {
+               compatible = "pwm-fan";
+               pwms = <&pwm4 0 45334>;
+               fan-supply = <&vdd_fan>;
+
+               /* cooling level (0, 1, 2, 3) - pwm inverted */
+               cooling-levels = <255 128 64 0>;
+               #cooling-cells = <2>;
+       };
+
        vdd_sd: regulator-vdd-sd {
                compatible = "regulator-fixed";
                regulator-name = "SD_CARD_SW_PWR";
                vin-supply = <&vdd_5v0_sys>;
        };
 
+       vdd_fan: regulator-vdd-fan {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_FAN";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+
+               gpio = <&exp1 4 GPIO_ACTIVE_LOW>;
+
+               vin-supply = <&vdd_5v0_sys>;
+       };
+
        sound {
                compatible = "nvidia,tegra186-audio-graph-card";
                status = "okay";
 
                label = "NVIDIA Jetson TX2 APE";
        };
+
+       thermal-zones {
+               cpu-thermal {
+                       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 {
+                               map0 {
+                                       cooling-device = <&fan 3 3>;
+                                       trip = <&cpu_trip_critical>;
+                               };
+
+                               map1 {
+                                       cooling-device = <&fan 2 2>;
+                                       trip = <&cpu_trip_hot>;
+                               };
+
+                               map2 {
+                                       cooling-device = <&fan 1 1>;
+                                       trip = <&cpu_trip_active>;
+                               };
+
+                               map3 {
+                                       cooling-device = <&fan 0 0>;
+                                       trip = <&cpu_trip_passive>;
+                               };
+                       };
+               };
+
+               aux-thermal {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               aux_alert0: critical {
+                                       temperature = <90000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               gpu-thermal {
+                       polling-delay = <0>;
+                       polling-delay-passive = <500>;
+                       status = "okay";
+
+                       trips {
+                               gpu_alert0: critical {
+                                       temperature = <99000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+       };
 };
index e2d6857a37097c5acc38dcbfd12800d59510f1c6..970ce5a03540cabea1dfb4ae4e55ef6f9e458623 100644 (file)
@@ -61,6 +61,8 @@
        };
 
        serial@3100000 {
+               /delete-property/ dmas;
+               /delete-property/ dma-names;
                status = "okay";
        };
 
                nvidia,invert-interrupt;
        };
 
+       gpu@17000000 {
+               status = "okay";
+       };
+
        bpmp {
                i2c {
                        status = "okay";
index 26f71651933d1d8ef32bbd1645cac1820bd2e104..5f3f572ecea97e38f2d641ca9d44890b06295a06 100644 (file)
        };
 
        serial@3100000 {
+               /delete-property/ dmas;
+               /delete-property/ dma-names;
                status = "okay";
        };
 
                phy-names = "usb2-0";
        };
 
+       cec@3960000 {
+               status = "okay";
+
+               hdmi-phandle = <&sor1>;
+       };
+
        hsp@3c00000 {
                status = "okay";
        };
index 2b3bb5d0af17bd521f87db0484fcbe943dd1a797..5778c93af3e6e72f5f14a9fcee1e7abf80d2d2c5 100644 (file)
                         <&bpmp TEGRA186_CLK_APB2APE>;
                clock-names = "ape", "apb2ape";
                power-domains = <&bpmp TEGRA186_POWER_DOMAIN_AUD>;
-               #address-cells = <1>;
-               #size-cells = <1>;
-               ranges = <0x02900000 0x0 0x02900000 0x200000>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges = <0x0 0x02900000 0x0 0x02900000 0x0 0x200000>;
                status = "disabled";
 
                tegra_ahub: ahub@2900800 {
                        compatible = "nvidia,tegra186-ahub";
-                       reg = <0x02900800 0x800>;
+                       reg = <0x0 0x02900800 0x0 0x800>;
                        clocks = <&bpmp TEGRA186_CLK_AHUB>;
                        clock-names = "ahub";
                        assigned-clocks = <&bpmp TEGRA186_CLK_AHUB>;
                        assigned-clock-parents = <&bpmp TEGRA186_CLK_PLLP_OUT0>;
                        assigned-clock-rates = <81600000>;
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       ranges = <0x02900800 0x02900800 0x11800>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges = <0x0 0x02900800 0x0 0x02900800 0x0 0x11800>;
                        status = "disabled";
 
                        tegra_i2s1: i2s@2901000 {
                                compatible = "nvidia,tegra186-i2s",
                                             "nvidia,tegra210-i2s";
-                               reg = <0x2901000 0x100>;
+                               reg = <0x0 0x2901000 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_I2S1>,
                                         <&bpmp TEGRA186_CLK_I2S1_SYNC_INPUT>;
                                clock-names = "i2s", "sync_input";
                        tegra_i2s2: i2s@2901100 {
                                compatible = "nvidia,tegra186-i2s",
                                             "nvidia,tegra210-i2s";
-                               reg = <0x2901100 0x100>;
+                               reg = <0x0 0x2901100 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_I2S2>,
                                         <&bpmp TEGRA186_CLK_I2S2_SYNC_INPUT>;
                                clock-names = "i2s", "sync_input";
                        tegra_i2s3: i2s@2901200 {
                                compatible = "nvidia,tegra186-i2s",
                                             "nvidia,tegra210-i2s";
-                               reg = <0x2901200 0x100>;
+                               reg = <0x0 0x2901200 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_I2S3>,
                                         <&bpmp TEGRA186_CLK_I2S3_SYNC_INPUT>;
                                clock-names = "i2s", "sync_input";
                        tegra_i2s4: i2s@2901300 {
                                compatible = "nvidia,tegra186-i2s",
                                             "nvidia,tegra210-i2s";
-                               reg = <0x2901300 0x100>;
+                               reg = <0x0 0x2901300 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_I2S4>,
                                         <&bpmp TEGRA186_CLK_I2S4_SYNC_INPUT>;
                                clock-names = "i2s", "sync_input";
                        tegra_i2s5: i2s@2901400 {
                                compatible = "nvidia,tegra186-i2s",
                                             "nvidia,tegra210-i2s";
-                               reg = <0x2901400 0x100>;
+                               reg = <0x0 0x2901400 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_I2S5>,
                                         <&bpmp TEGRA186_CLK_I2S5_SYNC_INPUT>;
                                clock-names = "i2s", "sync_input";
                        tegra_i2s6: i2s@2901500 {
                                compatible = "nvidia,tegra186-i2s",
                                             "nvidia,tegra210-i2s";
-                               reg = <0x2901500 0x100>;
+                               reg = <0x0 0x2901500 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_I2S6>,
                                         <&bpmp TEGRA186_CLK_I2S6_SYNC_INPUT>;
                                clock-names = "i2s", "sync_input";
                        tegra_sfc1: sfc@2902000 {
                                compatible = "nvidia,tegra186-sfc",
                                             "nvidia,tegra210-sfc";
-                               reg = <0x2902000 0x200>;
+                               reg = <0x0 0x2902000 0x0 0x200>;
                                sound-name-prefix = "SFC1";
                                status = "disabled";
                        };
                        tegra_sfc2: sfc@2902200 {
                                compatible = "nvidia,tegra186-sfc",
                                             "nvidia,tegra210-sfc";
-                               reg = <0x2902200 0x200>;
+                               reg = <0x0 0x2902200 0x0 0x200>;
                                sound-name-prefix = "SFC2";
                                status = "disabled";
                        };
                        tegra_sfc3: sfc@2902400 {
                                compatible = "nvidia,tegra186-sfc",
                                             "nvidia,tegra210-sfc";
-                               reg = <0x2902400 0x200>;
+                               reg = <0x0 0x2902400 0x0 0x200>;
                                sound-name-prefix = "SFC3";
                                status = "disabled";
                        };
                        tegra_sfc4: sfc@2902600 {
                                compatible = "nvidia,tegra186-sfc",
                                             "nvidia,tegra210-sfc";
-                               reg = <0x2902600 0x200>;
+                               reg = <0x0 0x2902600 0x0 0x200>;
                                sound-name-prefix = "SFC4";
                                status = "disabled";
                        };
                        tegra_amx1: amx@2903000 {
                                compatible = "nvidia,tegra186-amx",
                                             "nvidia,tegra210-amx";
-                               reg = <0x2903000 0x100>;
+                               reg = <0x0 0x2903000 0x0 0x100>;
                                sound-name-prefix = "AMX1";
                                status = "disabled";
                        };
                        tegra_amx2: amx@2903100 {
                                compatible = "nvidia,tegra186-amx",
                                             "nvidia,tegra210-amx";
-                               reg = <0x2903100 0x100>;
+                               reg = <0x0 0x2903100 0x0 0x100>;
                                sound-name-prefix = "AMX2";
                                status = "disabled";
                        };
                        tegra_amx3: amx@2903200 {
                                compatible = "nvidia,tegra186-amx",
                                             "nvidia,tegra210-amx";
-                               reg = <0x2903200 0x100>;
+                               reg = <0x0 0x2903200 0x0 0x100>;
                                sound-name-prefix = "AMX3";
                                status = "disabled";
                        };
                        tegra_amx4: amx@2903300 {
                                compatible = "nvidia,tegra186-amx",
                                             "nvidia,tegra210-amx";
-                               reg = <0x2903300 0x100>;
+                               reg = <0x0 0x2903300 0x0 0x100>;
                                sound-name-prefix = "AMX4";
                                status = "disabled";
                        };
                        tegra_adx1: adx@2903800 {
                                compatible = "nvidia,tegra186-adx",
                                             "nvidia,tegra210-adx";
-                               reg = <0x2903800 0x100>;
+                               reg = <0x0 0x2903800 0x0 0x100>;
                                sound-name-prefix = "ADX1";
                                status = "disabled";
                        };
                        tegra_adx2: adx@2903900 {
                                compatible = "nvidia,tegra186-adx",
                                             "nvidia,tegra210-adx";
-                               reg = <0x2903900 0x100>;
+                               reg = <0x0 0x2903900 0x0 0x100>;
                                sound-name-prefix = "ADX2";
                                status = "disabled";
                        };
                        tegra_adx3: adx@2903a00 {
                                compatible = "nvidia,tegra186-adx",
                                             "nvidia,tegra210-adx";
-                               reg = <0x2903a00 0x100>;
+                               reg = <0x0 0x2903a00 0x0 0x100>;
                                sound-name-prefix = "ADX3";
                                status = "disabled";
                        };
                        tegra_adx4: adx@2903b00 {
                                compatible = "nvidia,tegra186-adx",
                                             "nvidia,tegra210-adx";
-                               reg = <0x2903b00 0x100>;
+                               reg = <0x0 0x2903b00 0x0 0x100>;
                                sound-name-prefix = "ADX4";
                                status = "disabled";
                        };
 
                        tegra_dmic1: dmic@2904000 {
                                compatible = "nvidia,tegra210-dmic";
-                               reg = <0x2904000 0x100>;
+                               reg = <0x0 0x2904000 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_DMIC1>;
                                clock-names = "dmic";
                                assigned-clocks = <&bpmp TEGRA186_CLK_DMIC1>;
 
                        tegra_dmic2: dmic@2904100 {
                                compatible = "nvidia,tegra210-dmic";
-                               reg = <0x2904100 0x100>;
+                               reg = <0x0 0x2904100 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_DMIC2>;
                                clock-names = "dmic";
                                assigned-clocks = <&bpmp TEGRA186_CLK_DMIC2>;
 
                        tegra_dmic3: dmic@2904200 {
                                compatible = "nvidia,tegra210-dmic";
-                               reg = <0x2904200 0x100>;
+                               reg = <0x0 0x2904200 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_DMIC3>;
                                clock-names = "dmic";
                                assigned-clocks = <&bpmp TEGRA186_CLK_DMIC3>;
 
                        tegra_dmic4: dmic@2904300 {
                                compatible = "nvidia,tegra210-dmic";
-                               reg = <0x2904300 0x100>;
+                               reg = <0x0 0x2904300 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_DMIC4>;
                                clock-names = "dmic";
                                assigned-clocks = <&bpmp TEGRA186_CLK_DMIC4>;
 
                        tegra_dspk1: dspk@2905000 {
                                compatible = "nvidia,tegra186-dspk";
-                               reg = <0x2905000 0x100>;
+                               reg = <0x0 0x2905000 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_DSPK1>;
                                clock-names = "dspk";
                                assigned-clocks = <&bpmp TEGRA186_CLK_DSPK1>;
 
                        tegra_dspk2: dspk@2905100 {
                                compatible = "nvidia,tegra186-dspk";
-                               reg = <0x2905100 0x100>;
+                               reg = <0x0 0x2905100 0x0 0x100>;
                                clocks = <&bpmp TEGRA186_CLK_DSPK2>;
                                clock-names = "dspk";
                                assigned-clocks = <&bpmp TEGRA186_CLK_DSPK2>;
                        tegra_ope1: processing-engine@2908000 {
                                compatible = "nvidia,tegra186-ope",
                                             "nvidia,tegra210-ope";
-                               reg = <0x2908000 0x100>;
-                               #address-cells = <1>;
-                               #size-cells = <1>;
+                               reg = <0x0 0x2908000 0x0 0x100>;
+                               #address-cells = <2>;
+                               #size-cells = <2>;
                                ranges;
                                sound-name-prefix = "OPE1";
                                status = "disabled";
                                equalizer@2908100 {
                                        compatible = "nvidia,tegra186-peq",
                                                     "nvidia,tegra210-peq";
-                                       reg = <0x2908100 0x100>;
+                                       reg = <0x0 0x2908100 0x0 0x100>;
                                };
 
                                dynamic-range-compressor@2908200 {
                                        compatible = "nvidia,tegra186-mbdrc",
                                                     "nvidia,tegra210-mbdrc";
-                                       reg = <0x2908200 0x200>;
+                                       reg = <0x0 0x2908200 0x0 0x200>;
                                };
                        };
 
                        tegra_mvc1: mvc@290a000 {
                                compatible = "nvidia,tegra186-mvc",
                                             "nvidia,tegra210-mvc";
-                               reg = <0x290a000 0x200>;
+                               reg = <0x0 0x290a000 0x0 0x200>;
                                sound-name-prefix = "MVC1";
                                status = "disabled";
                        };
                        tegra_mvc2: mvc@290a200 {
                                compatible = "nvidia,tegra186-mvc",
                                             "nvidia,tegra210-mvc";
-                               reg = <0x290a200 0x200>;
+                               reg = <0x0 0x290a200 0x0 0x200>;
                                sound-name-prefix = "MVC2";
                                status = "disabled";
                        };
                        tegra_amixer: amixer@290bb00 {
                                compatible = "nvidia,tegra186-amixer",
                                             "nvidia,tegra210-amixer";
-                               reg = <0x290bb00 0x800>;
+                               reg = <0x0 0x290bb00 0x0 0x800>;
                                sound-name-prefix = "MIXER1";
                                status = "disabled";
                        };
 
                        tegra_admaif: admaif@290f000 {
                                compatible = "nvidia,tegra186-admaif";
-                               reg = <0x0290f000 0x1000>;
+                               reg = <0x0 0x0290f000 0x0 0x1000>;
                                dmas = <&adma 1>, <&adma 1>,
                                       <&adma 2>, <&adma 2>,
                                       <&adma 3>, <&adma 3>,
 
                        tegra_asrc: asrc@2910000 {
                                compatible = "nvidia,tegra186-asrc";
-                               reg = <0x2910000 0x2000>;
+                               reg = <0x0 0x2910000 0x0 0x2000>;
                                sound-name-prefix = "ASRC1";
                                status = "disabled";
                        };
 
                adma: dma-controller@2930000 {
                        compatible = "nvidia,tegra186-adma";
-                       reg = <0x02930000 0x20000>;
+                       reg = <0x0 0x02930000 0x0 0x20000>;
                        interrupt-parent = <&agic>;
                        interrupts =  <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
                                      <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
                                     "nvidia,tegra210-agic";
                        #interrupt-cells = <3>;
                        interrupt-controller;
-                       reg = <0x02a41000 0x1000>,
-                             <0x02a42000 0x2000>;
+                       reg = <0x0 0x02a41000 0x0 0x1000>,
+                             <0x0 0x02a42000 0x0 0x2000>;
                        interrupts = <GIC_SPI 145
                                (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
                        clocks = <&bpmp TEGRA186_CLK_APE>;
                interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&bpmp TEGRA186_CLK_UARTA>;
                resets = <&bpmp TEGRA186_RESET_UARTA>;
+               dmas = <&gpcdma 8>, <&gpcdma 8>;
+               dma-names = "rx", "tx";
                status = "disabled";
        };
 
                reg-shift = <2>;
                interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&bpmp TEGRA186_CLK_UARTB>;
-               clock-names = "serial";
                resets = <&bpmp TEGRA186_RESET_UARTB>;
-               reset-names = "serial";
+               dmas = <&gpcdma 9>, <&gpcdma 9>;
+               dma-names = "rx", "tx";
                status = "disabled";
        };
 
                reg-shift = <2>;
                interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&bpmp TEGRA186_CLK_UARTD>;
-               clock-names = "serial";
                resets = <&bpmp TEGRA186_RESET_UARTD>;
-               reset-names = "serial";
+               dmas = <&gpcdma 19>, <&gpcdma 19>;
+               dma-names = "rx", "tx";
                status = "disabled";
        };
 
                reg-shift = <2>;
                interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&bpmp TEGRA186_CLK_UARTE>;
-               clock-names = "serial";
                resets = <&bpmp TEGRA186_RESET_UARTE>;
-               reset-names = "serial";
+               dmas = <&gpcdma 20>, <&gpcdma 20>;
+               dma-names = "rx", "tx";
                status = "disabled";
        };
 
                reg-shift = <2>;
                interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&bpmp TEGRA186_CLK_UARTF>;
-               clock-names = "serial";
                resets = <&bpmp TEGRA186_RESET_UARTF>;
-               reset-names = "serial";
+               dmas = <&gpcdma 12>, <&gpcdma 12>;
+               dma-names = "rx", "tx";
                status = "disabled";
        };
 
        };
 
        cec@3960000 {
-               compatible = "nvidia,tegra186-cec";
+               compatible = "nvidia,tegra186-cec", "nvidia,tegra210-cec";
                reg = <0x0 0x03960000 0x0 0x10000>;
                interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&bpmp TEGRA186_CLK_CEC>;
                reg-shift = <2>;
                interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&bpmp TEGRA186_CLK_UARTC>;
-               clock-names = "serial";
                resets = <&bpmp TEGRA186_RESET_UARTC>;
-               reset-names = "serial";
+               dmas = <&gpcdma 3>, <&gpcdma 3>;
+               dma-names = "rx", "tx";
                status = "disabled";
        };
 
                reg-shift = <2>;
                interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&bpmp TEGRA186_CLK_UARTG>;
-               clock-names = "serial";
                resets = <&bpmp TEGRA186_RESET_UARTG>;
-               reset-names = "serial";
+               dmas = <&gpcdma 2>, <&gpcdma 2>;
+               dma-names = "rx", "tx";
                status = "disabled";
        };
 
                resets = <&bpmp TEGRA186_RESET_HOST1X>;
                reset-names = "host1x";
 
-               #address-cells = <1>;
-               #size-cells = <1>;
+               #address-cells = <2>;
+               #size-cells = <2>;
 
-               ranges = <0x15000000 0x0 0x15000000 0x01000000>;
+               ranges = <0x0 0x15000000 0x0 0x15000000 0x0 0x01000000>;
 
                interconnects = <&mc TEGRA186_MEMORY_CLIENT_HOST1XDMAR &emc>;
                interconnect-names = "dma-mem";
 
                dpaux1: dpaux@15040000 {
                        compatible = "nvidia,tegra186-dpaux";
-                       reg = <0x15040000 0x10000>;
+                       reg = <0x0 0x15040000 0x0 0x10000>;
                        interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_DPAUX1>,
                                 <&bpmp TEGRA186_CLK_PLLDP>;
 
                display-hub@15200000 {
                        compatible = "nvidia,tegra186-display";
-                       reg = <0x15200000 0x00040000>;
+                       reg = <0x0 0x15200000 0x0 0x00040000>;
                        resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_MISC>,
                                 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP0>,
                                 <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP1>,
 
                        power-domains = <&bpmp TEGRA186_POWER_DOMAIN_DISP>;
 
-                       #address-cells = <1>;
-                       #size-cells = <1>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
 
-                       ranges = <0x15200000 0x15200000 0x40000>;
+                       ranges = <0x0 0x15200000 0x0 0x15200000 0x0 0x40000>;
 
                        display@15200000 {
                                compatible = "nvidia,tegra186-dc";
-                               reg = <0x15200000 0x10000>;
+                               reg = <0x0 0x15200000 0x0 0x10000>;
                                interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P0>;
                                clock-names = "dc";
 
                        display@15210000 {
                                compatible = "nvidia,tegra186-dc";
-                               reg = <0x15210000 0x10000>;
+                               reg = <0x0 0x15210000 0x0 0x10000>;
                                interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P1>;
                                clock-names = "dc";
 
                        display@15220000 {
                                compatible = "nvidia,tegra186-dc";
-                               reg = <0x15220000 0x10000>;
+                               reg = <0x0 0x15220000 0x0 0x10000>;
                                interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P2>;
                                clock-names = "dc";
 
                dsia: dsi@15300000 {
                        compatible = "nvidia,tegra186-dsi";
-                       reg = <0x15300000 0x10000>;
+                       reg = <0x0 0x15300000 0x0 0x10000>;
                        interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_DSI>,
                                 <&bpmp TEGRA186_CLK_DSIA_LP>,
 
                vic@15340000 {
                        compatible = "nvidia,tegra186-vic";
-                       reg = <0x15340000 0x40000>;
+                       reg = <0x0 0x15340000 0x0 0x40000>;
                        interrupts = <GIC_SPI 206 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_VIC>;
                        clock-names = "vic";
 
                nvjpg@15380000 {
                        compatible = "nvidia,tegra186-nvjpg";
-                       reg = <0x15380000 0x40000>;
+                       reg = <0x0 0x15380000 0x0 0x40000>;
                        clocks = <&bpmp TEGRA186_CLK_NVJPG>;
                        clock-names = "nvjpg";
                        resets = <&bpmp TEGRA186_RESET_NVJPG>;
 
                dsib: dsi@15400000 {
                        compatible = "nvidia,tegra186-dsi";
-                       reg = <0x15400000 0x10000>;
+                       reg = <0x0 0x15400000 0x0 0x10000>;
                        interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_DSIB>,
                                 <&bpmp TEGRA186_CLK_DSIB_LP>,
 
                nvdec@15480000 {
                        compatible = "nvidia,tegra186-nvdec";
-                       reg = <0x15480000 0x40000>;
+                       reg = <0x0 0x15480000 0x0 0x40000>;
                        clocks = <&bpmp TEGRA186_CLK_NVDEC>;
                        clock-names = "nvdec";
                        resets = <&bpmp TEGRA186_RESET_NVDEC>;
 
                nvenc@154c0000 {
                        compatible = "nvidia,tegra186-nvenc";
-                       reg = <0x154c0000 0x40000>;
+                       reg = <0x0 0x154c0000 0x0 0x40000>;
                        clocks = <&bpmp TEGRA186_CLK_NVENC>;
                        clock-names = "nvenc";
                        resets = <&bpmp TEGRA186_RESET_NVENC>;
 
                sor0: sor@15540000 {
                        compatible = "nvidia,tegra186-sor";
-                       reg = <0x15540000 0x10000>;
+                       reg = <0x0 0x15540000 0x0 0x10000>;
                        interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_SOR0>,
                                 <&bpmp TEGRA186_CLK_SOR0_OUT>,
 
                sor1: sor@15580000 {
                        compatible = "nvidia,tegra186-sor";
-                       reg = <0x15580000 0x10000>;
+                       reg = <0x0 0x15580000 0x0 0x10000>;
                        interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_SOR1>,
                                 <&bpmp TEGRA186_CLK_SOR1_OUT>,
 
                dpaux: dpaux@155c0000 {
                        compatible = "nvidia,tegra186-dpaux";
-                       reg = <0x155c0000 0x10000>;
+                       reg = <0x0 0x155c0000 0x0 0x10000>;
                        interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_DPAUX>,
                                 <&bpmp TEGRA186_CLK_PLLDP>;
 
                padctl@15880000 {
                        compatible = "nvidia,tegra186-dsi-padctl";
-                       reg = <0x15880000 0x10000>;
+                       reg = <0x0 0x15880000 0x0 0x10000>;
                        resets = <&bpmp TEGRA186_RESET_DSI>;
                        reset-names = "dsi";
                        status = "disabled";
 
                dsic: dsi@15900000 {
                        compatible = "nvidia,tegra186-dsi";
-                       reg = <0x15900000 0x10000>;
+                       reg = <0x0 0x15900000 0x0 0x10000>;
                        interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_DSIC>,
                                 <&bpmp TEGRA186_CLK_DSIC_LP>,
 
                dsid: dsi@15940000 {
                        compatible = "nvidia,tegra186-dsi";
-                       reg = <0x15940000 0x10000>;
+                       reg = <0x0 0x15940000 0x0 0x10000>;
                        interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA186_CLK_DSID>,
                                 <&bpmp TEGRA186_CLK_DSID_LP>,
index e8b296d9e0d3e66a6739ad085ee38cc73f86e0fe..43942db6eac9a9b10b61eb1af82df34c759657ec 100644 (file)
                };
 
                serial@3110000 {
+                       /delete-property/ dmas;
+                       /delete-property/ dma-names;
                        status = "okay";
                };
 
index c32876699a43e9f57b3888c5bc0f5da73c5b95b5..ea6f397a27926e3dcd54002177f68749bc1cc309 100644 (file)
                        phy-names = "usb2-0", "usb2-1", "usb2-3", "usb3-0", "usb3-2", "usb3-3";
                };
 
+               cec@3960000 {
+                       status = "okay";
+
+                       hdmi-phandle = <&sor2>;
+               };
+
                i2c@c240000 {
                        typec@8 {
                                compatible = "cypress,cypd4226";
index 4a17ea5e40fd034c6f4acb023cd7908d6800f710..16cf4414de599baea96362b494be40c800a8197f 100644 (file)
                        phy-names = "usb2-1", "usb2-2", "usb3-2";
                };
 
+               cec@3960000 {
+                       status = "okay";
+
+                       hdmi-phandle = <&sor1>;
+               };
+
                host1x@13e00000 {
                        display-hub@15200000 {
                                status = "okay";
index 59860d19f0f6a5a32719dcdb7f868b60c2551a1f..a410fc335fa3bb8d9961b2e8aa8681e4b6128afe 100644 (file)
@@ -78,6 +78,8 @@
                };
 
                serial@3100000 {
+                       /delete-property/ dmas;
+                       /delete-property/ dma-names;
                        status = "okay";
                };
 
index 33f92b77cd9d9e530eae87a4bb8ba61993ceffeb..1399342f23e1c4f73b278adc66dfb948fc30d326 100644 (file)
                        interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_UARTA>;
                        resets = <&bpmp TEGRA194_RESET_UARTA>;
+                       dmas = <&gpcdma 8>, <&gpcdma 8>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_UARTB>;
                        resets = <&bpmp TEGRA194_RESET_UARTB>;
+                       dmas = <&gpcdma 9>, <&gpcdma 9>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        reg-shift = <2>;
                        interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_UARTD>;
-                       clock-names = "serial";
                        resets = <&bpmp TEGRA194_RESET_UARTD>;
-                       reset-names = "serial";
+                       dmas = <&gpcdma 19>, <&gpcdma 19>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        reg-shift = <2>;
                        interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_UARTE>;
-                       clock-names = "serial";
                        resets = <&bpmp TEGRA194_RESET_UARTE>;
-                       reset-names = "serial";
+                       dmas = <&gpcdma 20>, <&gpcdma 20>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        reg-shift = <2>;
                        interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_UARTF>;
-                       clock-names = "serial";
                        resets = <&bpmp TEGRA194_RESET_UARTF>;
-                       reset-names = "serial";
+                       dmas = <&gpcdma 12>, <&gpcdma 12>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        reg-shift = <2>;
                        interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_UARTH>;
-                       clock-names = "serial";
                        resets = <&bpmp TEGRA194_RESET_UARTH>;
-                       reset-names = "serial";
+                       dmas = <&gpcdma 13>, <&gpcdma 13>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                };
 
                cec@3960000 {
-                       compatible = "nvidia,tegra194-cec";
+                       compatible = "nvidia,tegra194-cec", "nvidia,tegra210-cec";
                        reg = <0x0 0x03960000 0x0 0x10000>;
                        interrupts = <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_CEC>;
                        reg-shift = <2>;
                        interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_UARTC>;
-                       clock-names = "serial";
                        resets = <&bpmp TEGRA194_RESET_UARTC>;
-                       reset-names = "serial";
+                       dmas = <&gpcdma 3>, <&gpcdma 3>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
                        reg-shift = <2>;
                        interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&bpmp TEGRA194_CLK_UARTG>;
-                       clock-names = "serial";
                        resets = <&bpmp TEGRA194_RESET_UARTG>;
-                       reset-names = "serial";
+                       dmas = <&gpcdma 2>, <&gpcdma 2>;
+                       dma-names = "rx", "tx";
                        status = "disabled";
                };
 
index 9b9d1d15b0c7eafd3895f02db1bc747d7cc8923c..e07aeeee35867145b83e41a218c86daa66f3f4a0 100644 (file)
@@ -11,6 +11,7 @@
                rtc0 = "/i2c@7000d000/pmic@3c";
                rtc1 = "/rtc@7000e000";
                serial0 = &uarta;
+               serial3 = &uartd;
        };
 
        chosen {
@@ -24,6 +25,7 @@
 
        gpu@57000000 {
                vdd-supply = <&vdd_gpu>;
+               status = "okay";
        };
 
        /* debug port */
index a6a58e51822d90f8815df880ea7e668caff1b1ec..627abf51a5a472ddcc42fdc1d783876b0a03da47 100644 (file)
                };
        };
 
+       cec@70015000 {
+               status = "okay";
+
+               hdmi-phandle = <&sor1>;
+       };
+
        clock@70110000 {
                status = "okay";
 
index 83ed6ac2a8d8f403fb588edce83dc401065c162f..584461f3a6196c4327e958b424dfd2139cd43965 100644 (file)
                };
        };
 
+       fan: pwm-fan {
+               compatible = "pwm-fan";
+               pwms = <&pwm 3 45334>;
+               fan-supply = <&vdd_fan>;
+               interrupt-parent = <&gpio>;
+               interrupts = <TEGRA_GPIO(K, 7) IRQ_TYPE_EDGE_RISING>;
+
+               /* cooling level (0, 1, 2, 3) - pwm inverted */
+               cooling-levels = <255 128 64 0>;
+               #cooling-cells = <2>;
+       };
+
        vdd_sys_mux: regulator-vdd-sys-mux {
                compatible = "regulator-fixed";
                regulator-name = "VDD_SYS_MUX";
                enable-active-high;
                vin-supply = <&vdd_5v0_sys>;
        };
+
+       vdd_fan: regulator-vdd-fan {
+               compatible = "regulator-fixed";
+               regulator-name = "VDD_FAN";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               gpio = <&exp1 4 GPIO_ACTIVE_LOW>;
+               vin-supply = <&vdd_5v0_sys>;
+
+               regulator-enable-ramp-delay = <284>;
+       };
+
+       thermal-zones {
+               cpu-thermal {
+                       trips {
+                               cpu_trip_critical: critical {
+                                       temperature = <96500>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+
+                               cpu_trip_hot: hot {
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               cpu_trip_active: active {
+                                       temperature = <50000>;
+                                       hysteresis = <2000>;
+                                       type = "active";
+                               };
+
+                               cpu_trip_passive: passive {
+                                       temperature = <30000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                       };
+
+                       cooling-maps {
+                               map0 {
+                                       cooling-device = <&fan 3 3>;
+                                       trip = <&cpu_trip_critical>;
+                               };
+
+                               map1 {
+                                       cooling-device = <&fan 2 2>;
+                                       trip = <&cpu_trip_hot>;
+                               };
+
+                               map2 {
+                                       cooling-device = <&fan 1 1>;
+                                       trip = <&cpu_trip_active>;
+                               };
+
+                               map3 {
+                                       cooling-device = <&fan 0 0>;
+                                       trip = <&cpu_trip_passive>;
+                               };
+                       };
+               };
+       };
 };
index bbd6ff0564da97f67139268f546fa8041a335481..b84a8e39b404a0e9769b83d1758a9851874a8397 100644 (file)
                                };
                        };
 
-                       hog-0 {
+                       max77620-hog {
                                gpio-hog;
                                output-high;
                                gpios = <2 GPIO_ACTIVE_HIGH>,
index 0ecdd7243b2eb1abba9adbe9a404b226c29b85ef..ec0e84cb83ef9bf8f0e52e2958db33666813917c 100644 (file)
                nvidia,sys-clock-req-active-high;
        };
 
+       cec@70015000 {
+               status = "okay";
+
+               hdmi-phandle = <&sor1>;
+       };
+
        hda@70030000 {
                nvidia,model = "NVIDIA Jetson Nano HDA";
 
index b6c84d195c0ef9ae90721fada09ffd46a9c11fa3..402b0ede1472af625d9d9e811f5af306d436cc98 100644 (file)
                reset-names = "fuse";
        };
 
+       cec@70015000 {
+               compatible = "nvidia,tegra210-cec";
+               reg = <0x0 0x070015000 0x0 0x1000>;
+               interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&tegra_car TEGRA210_CLK_CEC>;
+               clock-names = "cec";
+               status = "disabled";
+       };
+
        mc: memory-controller@70019000 {
                compatible = "nvidia,tegra210-mc";
                reg = <0x0 0x70019000 0x0 0x1000>;
index 2601b43b2d8cadeb0d1f428018a82b144aa79392..df034dbb82853ef23cbe03eeb4f4edee5583efbb 100644 (file)
        #address-cells = <2>;
        #size-cells = <2>;
 
+       aliases {
+               i2c0 = &gen1_i2c;
+               i2c1 = &gen2_i2c;
+               i2c2 = &cam_i2c;
+               i2c3 = &dp_aux_ch1_i2c;
+               i2c4 = &bpmp_i2c;
+               i2c5 = &dp_aux_ch0_i2c;
+               i2c6 = &dp_aux_ch2_i2c;
+               i2c7 = &gen8_i2c;
+               i2c8 = &dp_aux_ch3_i2c;
+       };
+
        bus@0 {
                compatible = "simple-bus";
 
                                 <&bpmp TEGRA234_CLK_QSPI0_PM>;
                        clock-names = "qspi", "qspi_out";
                        resets = <&bpmp TEGRA234_RESET_QSPI0>;
+                       iommus = <&smmu_niso1 TEGRA234_SID_QSPI0>;
+                       assigned-clocks = <&bpmp TEGRA234_CLK_QSPI0_2X_PM>,
+                                         <&bpmp TEGRA234_CLK_QSPI0_PM>;
+                       assigned-clock-rates = <199999999 99999999>;
+                       assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLC>;
                        status = "disabled";
                };
 
                                 <&bpmp TEGRA234_CLK_QSPI1_PM>;
                        clock-names = "qspi", "qspi_out";
                        resets = <&bpmp TEGRA234_RESET_QSPI1>;
+                       iommus = <&smmu_niso1 TEGRA234_SID_QSPI1>;
+                       assigned-clocks = <&bpmp TEGRA234_CLK_QSPI1_2X_PM>,
+                                         <&bpmp TEGRA234_CLK_QSPI1_PM>;
+                       assigned-clock-rates = <199999999 99999999>;
+                       assigned-clock-parents = <&bpmp TEGRA234_CLK_PLLC>;
                        status = "disabled";
                };
 
index aba08424aa38439952f959f79a9ded2201de1f7c..b0c594c5f236c9c1d334e6acfcaa7e41c1f9f3a5 100644 (file)
 &blsp_uart1 {
        status = "okay";
        label = "LS-UART0";
+       pinctrl-0 = <&blsp_uart1_default>;
+       pinctrl-1 = <&blsp_uart1_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &blsp_uart2 {
        status = "okay";
        label = "LS-UART1";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &camss {
                "USR_LED_2_CTRL", /* GPIO 120 */
                "SB_HS_ID";
 
+       blsp_uart1_default: blsp-uart1-default-state {
+               /* TX, RX, CTS_N, RTS_N */
+               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+               function = "blsp_uart1";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       blsp_uart1_sleep: blsp-uart1-sleep-state {
+               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
        sdc2_cd_default: sdc2-cd-default-state {
                pins = "gpio38";
                function = "gpio";
index 75c6137e5a11dd5c738681d676dfc9b014efb34c..ce75046ffdac48a206d14499bc711f8f4a777fe5 100644 (file)
 };
 
 &blsp_uart1 {
+       pinctrl-0 = <&blsp_uart1_default>;
+       pinctrl-1 = <&blsp_uart1_sleep>;
+       pinctrl-names = "default", "sleep";
        label = "UART0";
        status = "okay";
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_default>;
+       pinctrl-1 = <&blsp_uart2_sleep>;
+       pinctrl-names = "default", "sleep";
        label = "UART1";
        status = "okay";
 };
                bias-disable;
        };
 
+       blsp_uart1_default: blsp-uart1-default-state {
+               /* TX, RX, CTS_N, RTS_N */
+               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+               function = "blsp_uart1";
+               drive-strength = <16>;
+               bias-disable;
+               bootph-all;
+       };
+
+       blsp_uart1_sleep: blsp-uart1-sleep-state {
+               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       blsp_uart2_default: blsp-uart2-default-state {
+               /* TX, RX */
+               pins = "gpio4", "gpio5";
+               function = "blsp_uart2";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       blsp_uart2_sleep: blsp-uart2-sleep-state {
+               pins = "gpio4", "gpio5";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
        msm_key_volp_n_default: msm-key-volp-n-default-state {
                pins = "gpio107";
                function = "gpio";
        drive-strength = <16>;
 };
 
-&blsp_uart1_default {
-       bootph-all;
-};
-
 /* Enable CoreSight */
 &cti0 { status = "okay"; };
 &cti1 { status = "okay"; };
index 4f82bb668616f942d65f59a6f418cf38f404df32..38c281f0fe65ccfc49de70eaef2a970323ecebc8 100644 (file)
 };
 
 &blsp_uart1 {
+       pinctrl-0 = <&blsp_uart1_default>;
+       pinctrl-1 = <&blsp_uart1_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
-&blsp_uart1_default {
-       pins = "gpio0", "gpio1";
-};
-
-&blsp_uart1_sleep {
-       pins = "gpio0", "gpio1";
-};
-
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
                "USBC_GPIO7_1V8",       /* GPIO_120 */
                "NC";
 
+       blsp_uart1_default: blsp-uart1-default-state {
+               pins = "gpio0", "gpio1";
+               function = "blsp_uart1";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       blsp_uart1_sleep: blsp-uart1-sleep-state {
+               pins = "gpio0", "gpio1";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
        pinctrl_backlight: backlight-state {
                pins = "gpio98";
                function = "gpio";
index e8148b3d6c50c670d6bc8045e42074162dc1c6d9..5b2e88915c2fdbc1abf635f13537f970ead02cc8 100644 (file)
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
 &sound {
        compatible = "qcom,apq8096-sndcard";
        model = "DB820c";
-       audio-routing = "RX_BIAS", "MCLK",
-               "MM_DL1",  "MultiMedia1 Playback",
-               "MM_DL2",  "MultiMedia2 Playback",
-               "MultiMedia3 Capture", "MM_UL3";
+       audio-routing = "RX_BIAS", "MCLK";
 
        mm1-dai-link {
                link-name = "MultiMedia1";
index 8460b538eb6a3e2d6b971bd9637309809e0c0f0c..43def95e9275258041e7522ba4098a3767be3df1 100644 (file)
@@ -9,6 +9,8 @@
 
 #include "ipq5018.dtsi"
 
+#include <dt-bindings/gpio/gpio.h>
+
 / {
        model = "Qualcomm Technologies, Inc. IPQ5018/AP-RDP432.1-C2";
        compatible = "qcom,ipq5018-rdp432-c2", "qcom,ipq5018";
        status = "okay";
 };
 
+&pcie0 {
+       pinctrl-0 = <&pcie0_default>;
+       pinctrl-names = "default";
+
+       perst-gpios = <&tlmm 15 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 16 GPIO_ACTIVE_LOW>;
+
+       status = "okay";
+};
+
+&pcie0_phy {
+       status = "okay";
+};
+
 &sdhc_1 {
        pinctrl-0 = <&sdc_default_state>;
        pinctrl-names = "default";
 };
 
 &tlmm {
+       pcie0_default: pcie0-default-state {
+               clkreq-n-pins {
+                       pins = "gpio14";
+                       function = "pcie0_clk";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio15";
+                       function = "gpio";
+                       drive-strength = <8>;
+                       bias-pull-up;
+                       output-low;
+               };
+
+               wake-n-pins {
+                       pins = "gpio16";
+                       function = "pcie0_wake";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+       };
+
        sdc_default_state: sdc-default-state {
                clk-pins {
                        pins = "gpio9";
index 8914f2ef0bc47fda243b19174f77ce73fc10757d..130360014c5e14c778e348d37e601f60325b0b14 100644 (file)
@@ -79,6 +79,7 @@
        firmware {
                scm {
                        compatible = "qcom,scm-ipq5018", "qcom,scm";
+                       qcom,dload-mode = <&tcsr 0x6100>;
                        qcom,sdi-enabled;
                };
        };
                        status = "disabled";
                };
 
+               pcie1_phy: phy@7e000 {
+                       compatible = "qcom,ipq5018-uniphy-pcie-phy";
+                       reg = <0x0007e000 0x800>;
+
+                       clocks = <&gcc GCC_PCIE1_PIPE_CLK>;
+
+                       resets = <&gcc GCC_PCIE1_PHY_BCR>,
+                                <&gcc GCC_PCIE1PHY_PHY_BCR>;
+
+                       #clock-cells = <0>;
+                       #phy-cells = <0>;
+
+                       num-lanes = <1>;
+
+                       status = "disabled";
+               };
+
+               pcie0_phy: phy@86000 {
+                       compatible = "qcom,ipq5018-uniphy-pcie-phy";
+                       reg = <0x00086000 0x1000>;
+
+                       clocks = <&gcc GCC_PCIE0_PIPE_CLK>;
+
+                       resets = <&gcc GCC_PCIE0_PHY_BCR>,
+                                <&gcc GCC_PCIE0PHY_PHY_BCR>;
+
+                       #clock-cells = <0>;
+                       #phy-cells = <0>;
+
+                       num-lanes = <2>;
+
+                       status = "disabled";
+               };
+
                tlmm: pinctrl@1000000 {
                        compatible = "qcom,ipq5018-tlmm";
                        reg = <0x01000000 0x300000>;
                        reg = <0x01800000 0x80000>;
                        clocks = <&xo_board_clk>,
                                 <&sleep_clk>,
-                                <0>,
-                                <0>,
+                                <&pcie0_phy>,
+                                <&pcie1_phy>,
                                 <0>,
                                 <0>,
                                 <0>,
                        #hwlock-cells = <1>;
                };
 
+               tcsr: syscon@1937000 {
+                       compatible = "qcom,tcsr-ipq5018", "syscon";
+                       reg = <0x01937000 0x21000>;
+               };
+
                sdhc_1: mmc@7804000 {
                        compatible = "qcom,ipq5018-sdhci", "qcom,sdhci-msm-v5";
                        reg = <0x7804000 0x1000>;
                                status = "disabled";
                        };
                };
+
+               pcie1: pcie@80000000 {
+                       compatible = "qcom,pcie-ipq5018";
+                       reg = <0x80000000 0xf1d>,
+                             <0x80000f20 0xa8>,
+                             <0x80001000 0x1000>,
+                             <0x00078000 0x3000>,
+                             <0x80100000 0x1000>,
+                             <0x0007b000 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
+                       device_type = "pci";
+                       linux,pci-domain = <1>;
+                       bus-range = <0x00 0xff>;
+                       num-lanes = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       /* The controller supports Gen3, but the connected PHY is Gen2-capable */
+                       max-link-speed = <2>;
+
+                       phys = <&pcie1_phy>;
+                       phy-names ="pciephy";
+
+                       ranges = <0x01000000 0 0x00000000 0x80200000 0 0x00100000>,
+                                <0x02000000 0 0x80300000 0x80300000 0 0x10000000>;
+
+                       msi-map = <0x0 &v2m0 0x0 0xff8>;
+
+                       interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 0 142 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 0 143 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 0 144 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 0 145 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_SYS_NOC_PCIE1_AXI_CLK>,
+                                <&gcc GCC_PCIE1_AXI_M_CLK>,
+                                <&gcc GCC_PCIE1_AXI_S_CLK>,
+                                <&gcc GCC_PCIE1_AHB_CLK>,
+                                <&gcc GCC_PCIE1_AUX_CLK>,
+                                <&gcc GCC_PCIE1_AXI_S_BRIDGE_CLK>;
+                       clock-names = "iface",
+                                     "axi_m",
+                                     "axi_s",
+                                     "ahb",
+                                     "aux",
+                                     "axi_bridge";
+
+                       resets = <&gcc GCC_PCIE1_PIPE_ARES>,
+                                <&gcc GCC_PCIE1_SLEEP_ARES>,
+                                <&gcc GCC_PCIE1_CORE_STICKY_ARES>,
+                                <&gcc GCC_PCIE1_AXI_MASTER_ARES>,
+                                <&gcc GCC_PCIE1_AXI_SLAVE_ARES>,
+                                <&gcc GCC_PCIE1_AHB_ARES>,
+                                <&gcc GCC_PCIE1_AXI_MASTER_STICKY_ARES>,
+                                <&gcc GCC_PCIE1_AXI_SLAVE_STICKY_ARES>;
+                       reset-names = "pipe",
+                                     "sleep",
+                                     "sticky",
+                                     "axi_m",
+                                     "axi_s",
+                                     "ahb",
+                                     "axi_m_sticky",
+                                     "axi_s_sticky";
+
+                       status = "disabled";
+
+                       pcie@0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               bus-range = <0x01 0xff>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+                       };
+               };
+
+               pcie0: pcie@a0000000 {
+                       compatible = "qcom,pcie-ipq5018";
+                       reg = <0xa0000000 0xf1d>,
+                             <0xa0000f20 0xa8>,
+                             <0xa0001000 0x1000>,
+                             <0x00080000 0x3000>,
+                             <0xa0100000 0x1000>,
+                             <0x00083000 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
+                       device_type = "pci";
+                       linux,pci-domain = <0>;
+                       bus-range = <0x00 0xff>;
+                       num-lanes = <2>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       /* The controller supports Gen3, but the connected PHY is Gen2-capable */
+                       max-link-speed = <2>;
+
+                       phys = <&pcie0_phy>;
+                       phy-names ="pciephy";
+
+                       ranges = <0x01000000 0 0x00000000 0xa0200000 0 0x00100000>,
+                                <0x02000000 0 0xa0300000 0xa0300000 0 0x10000000>;
+
+                       msi-map = <0x0 &v2m0 0x0 0xff8>;
+
+                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 0 75 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 0 78 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 0 79 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 0 83 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_SYS_NOC_PCIE0_AXI_CLK>,
+                                <&gcc GCC_PCIE0_AXI_M_CLK>,
+                                <&gcc GCC_PCIE0_AXI_S_CLK>,
+                                <&gcc GCC_PCIE0_AHB_CLK>,
+                                <&gcc GCC_PCIE0_AUX_CLK>,
+                                <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>;
+                       clock-names = "iface",
+                                     "axi_m",
+                                     "axi_s",
+                                     "ahb",
+                                     "aux",
+                                     "axi_bridge";
+
+                       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";
+
+                       pcie@0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               bus-range = <0x01 0xff>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+                       };
+               };
        };
 
        timer {
index 846413817e9ad0c9f34856530e86e4e47c9315e6..79ec77cfe552786f3d673a020766c3a6a566e81d 100644 (file)
        status = "okay";
 };
 
+&pcie0 {
+       pinctrl-0 = <&pcie0_default>;
+       pinctrl-names = "default";
+
+       perst-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
+
+       status = "okay";
+};
+
+&pcie0_phy {
+       status = "okay";
+};
+
+&pcie1 {
+       pinctrl-0 = <&pcie1_default>;
+       pinctrl-names = "default";
+
+       perst-gpios = <&tlmm 47 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 48 GPIO_ACTIVE_LOW>;
+
+       status = "okay";
+};
+
+&pcie1_phy {
+       status = "okay";
+};
+
 &tlmm {
        i2c_1_pins: i2c-1-state {
                pins = "gpio29", "gpio30";
                bias-pull-up;
        };
 
+       pcie0_default: pcie0-default-state {
+               clkreq-n-pins {
+                       pins = "gpio37";
+                       function = "pcie0_clk";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio38";
+                       function = "gpio";
+                       drive-strength = <8>;
+                       bias-pull-up;
+                       output-low;
+               };
+
+               wake-n-pins {
+                       pins = "gpio39";
+                       function = "pcie0_wake";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+       };
+
+       pcie1_default: pcie1-default-state {
+               clkreq-n-pins {
+                       pins = "gpio46";
+                       function = "pcie1_clk";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio47";
+                       function = "gpio";
+                       drive-strength = <8>;
+                       bias-pull-up;
+                       output-low;
+               };
+
+               wake-n-pins {
+                       pins = "gpio48";
+                       function = "pcie1_wake";
+                       drive-strength = <8>;
+                       bias-pull-up;
+               };
+       };
+
        sdc_default_state: sdc-default-state {
                clk-pins {
                        pins = "gpio13";
index ca3da95730bd083ee98452b499307fdf4b6ecd09..bd28c490415ff61624f6ff0461d79e975f2c397f 100644 (file)
                                reg = <0x1d 0x2>;
                                bits = <7 2>;
                        };
+
+                       tsens_sens11_off: s11@3a5 {
+                               reg = <0x3a5 0x1>;
+                               bits = <4 4>;
+                       };
+
+                       tsens_sens12_off: s12@3a6 {
+                               reg = <0x3a6 0x1>;
+                               bits = <0 4>;
+                       };
+
+                       tsens_sens13_off: s13@3a6 {
+                               reg = <0x3a6 0x1>;
+                               bits = <4 4>;
+                       };
+
+                       tsens_sens14_off: s14@3ad {
+                               reg = <0x3ad 0x2>;
+                               bits = <7 4>;
+                       };
+
+                       tsens_sens15_off: s15@3ae {
+                               reg = <0x3ae 0x1>;
+                               bits = <3 4>;
+                       };
+
+                       tsens_mode: mode@3e1 {
+                               reg = <0x3e1 0x1>;
+                               bits = <0 3>;
+                       };
+
+                       tsens_base0: base0@3e1 {
+                               reg = <0x3e1 0x2>;
+                               bits = <3 10>;
+                       };
+
+                       tsens_base1: base1@3e2 {
+                               reg = <0x3e2 0x2>;
+                               bits = <5 10>;
+                       };
                };
 
                rng: rng@e3000 {
                        clock-names = "core";
                };
 
+               tsens: thermal-sensor@4a9000 {
+                       compatible = "qcom,ipq5332-tsens";
+                       reg = <0x004a9000 0x1000>,
+                             <0x004a8000 0x1000>;
+                       interrupts = <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "combined";
+                       nvmem-cells = <&tsens_mode>,
+                                     <&tsens_base0>,
+                                     <&tsens_base1>,
+                                     <&tsens_sens11_off>,
+                                     <&tsens_sens12_off>,
+                                     <&tsens_sens13_off>,
+                                     <&tsens_sens14_off>,
+                                     <&tsens_sens15_off>;
+                       nvmem-cell-names = "mode",
+                                          "base0",
+                                          "base1",
+                                          "tsens_sens11_off",
+                                          "tsens_sens12_off",
+                                          "tsens_sens13_off",
+                                          "tsens_sens14_off",
+                                          "tsens_sens15_off";
+                       #qcom,sensors = <5>;
+                       #thermal-sensor-cells = <1>;
+               };
+
+               pcie0_phy: phy@4b0000 {
+                       compatible = "qcom,ipq5332-uniphy-pcie-phy";
+                       reg = <0x004b0000 0x800>;
+
+                       clocks = <&gcc GCC_PCIE3X1_0_PIPE_CLK>,
+                                <&gcc GCC_PCIE3X1_PHY_AHB_CLK>;
+
+                       resets = <&gcc GCC_PCIE3X1_0_PHY_BCR>,
+                                <&gcc GCC_PCIE3X1_PHY_AHB_CLK_ARES>,
+                                <&gcc GCC_PCIE3X1_0_PHY_PHY_BCR>;
+
+                       #clock-cells = <0>;
+
+                       #phy-cells = <0>;
+
+                       num-lanes = <1>;
+
+                       status = "disabled";
+               };
+
+               pcie1_phy: phy@4b1000 {
+                       compatible = "qcom,ipq5332-uniphy-pcie-phy";
+                       reg = <0x004b1000 0x1000>;
+
+                       clocks = <&gcc GCC_PCIE3X2_PIPE_CLK>,
+                                <&gcc GCC_PCIE3X2_PHY_AHB_CLK>;
+
+                       resets = <&gcc GCC_PCIE3X2_PHY_BCR>,
+                                <&gcc GCC_PCIE3X2_PHY_AHB_CLK_ARES>,
+                                <&gcc GCC_PCIE3X2PHY_PHY_BCR>;
+
+                       #clock-cells = <0>;
+
+                       #phy-cells = <0>;
+
+                       num-lanes = <2>;
+
+                       status = "disabled";
+               };
+
                tlmm: pinctrl@1000000 {
                        compatible = "qcom,ipq5332-tlmm";
                        reg = <0x01000000 0x300000>;
                        #interconnect-cells = <1>;
                        clocks = <&xo_board>,
                                 <&sleep_clk>,
-                                <0>,
-                                <0>,
+                                <&pcie1_phy>,
+                                <&pcie0_phy>,
                                 <0>;
                };
 
                                status = "disabled";
                        };
                };
+
+               pcie1: pcie@18000000 {
+                       compatible = "qcom,pcie-ipq5332", "qcom,pcie-ipq9574";
+                       reg = <0x18000000 0xf1c>,
+                             <0x18000f20 0xa8>,
+                             <0x18001000 0x1000>,
+                             <0x00088000 0x3000>,
+                             <0x18100000 0x1000>,
+                             <0x0008b000 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
+                       device_type = "pci";
+                       linux,pci-domain = <1>;
+                       num-lanes = <2>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       ranges = <0x01000000 0x0 0x00000000 0x18200000 0x0 0x00100000>,
+                                <0x02000000 0x0 0x18300000 0x18300000 0x0 0x07d00000>;
+
+                       msi-map = <0x0 &v2m0 0x0 0xffd>;
+
+                       interrupts = <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 410 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 411 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 0 412 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 0 413 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 0 414 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 0 415 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_PCIE3X2_AXI_M_CLK>,
+                                <&gcc GCC_PCIE3X2_AXI_S_CLK>,
+                                <&gcc GCC_PCIE3X2_AXI_S_BRIDGE_CLK>,
+                                <&gcc GCC_PCIE3X2_RCHG_CLK>,
+                                <&gcc GCC_PCIE3X2_AHB_CLK>,
+                                <&gcc GCC_PCIE3X2_AUX_CLK>;
+                       clock-names = "axi_m",
+                                     "axi_s",
+                                     "axi_bridge",
+                                     "rchng",
+                                     "ahb",
+                                     "aux";
+
+                       assigned-clocks = <&gcc GCC_PCIE3X2_AUX_CLK>;
+
+                       assigned-clock-rates = <2000000>;
+
+                       resets = <&gcc GCC_PCIE3X2_PIPE_ARES>,
+                                <&gcc GCC_PCIE3X2_CORE_STICKY_ARES>,
+                                <&gcc GCC_PCIE3X2_AXI_S_STICKY_ARES>,
+                                <&gcc GCC_PCIE3X2_AXI_S_CLK_ARES>,
+                                <&gcc GCC_PCIE3X2_AXI_M_STICKY_ARES>,
+                                <&gcc GCC_PCIE3X2_AXI_M_CLK_ARES>,
+                                <&gcc GCC_PCIE3X2_AUX_CLK_ARES>,
+                                <&gcc GCC_PCIE3X2_AHB_CLK_ARES>;
+                       reset-names = "pipe",
+                                     "sticky",
+                                     "axi_s_sticky",
+                                     "axi_s",
+                                     "axi_m_sticky",
+                                     "axi_m",
+                                     "aux",
+                                     "ahb";
+
+                       phys = <&pcie1_phy>;
+                       phy-names = "pciephy";
+
+                       interconnects = <&gcc MASTER_SNOC_PCIE3_2_M &gcc SLAVE_SNOC_PCIE3_2_M>,
+                                       <&gcc MASTER_ANOC_PCIE3_2_S &gcc SLAVE_ANOC_PCIE3_2_S>;
+                       interconnect-names = "pcie-mem", "cpu-pcie";
+
+                       status = "disabled";
+
+                       pcie@0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+                       };
+               };
+
+               pcie0: pcie@20000000 {
+                       compatible = "qcom,pcie-ipq5332", "qcom,pcie-ipq9574";
+                       reg = <0x20000000 0xf1c>,
+                             <0x20000f20 0xa8>,
+                             <0x20001000 0x1000>,
+                             <0x00080000 0x3000>,
+                             <0x20100000 0x1000>,
+                             <0x00083000 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
+                       device_type = "pci";
+                       linux,pci-domain = <0>;
+                       num-lanes = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       ranges = <0x01000000 0x0 0x00000000 0x20200000 0x0 0x00100000>,
+                                <0x02000000 0x0 0x20300000 0x20300000 0x0 0x0fd00000>;
+
+                       msi-map = <0x0 &v2m0 0x0 0xffd>;
+
+                       interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 0 35 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 0 36 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 0 37 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 0 38 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_PCIE3X1_0_AXI_M_CLK>,
+                                <&gcc GCC_PCIE3X1_0_AXI_S_CLK>,
+                                <&gcc GCC_PCIE3X1_0_AXI_S_BRIDGE_CLK>,
+                                <&gcc GCC_PCIE3X1_0_RCHG_CLK>,
+                                <&gcc GCC_PCIE3X1_0_AHB_CLK>,
+                                <&gcc GCC_PCIE3X1_0_AUX_CLK>;
+                       clock-names = "axi_m",
+                                     "axi_s",
+                                     "axi_bridge",
+                                     "rchng",
+                                     "ahb",
+                                     "aux";
+
+                       assigned-clocks = <&gcc GCC_PCIE3X1_0_AUX_CLK>;
+
+                       assigned-clock-rates = <2000000>;
+
+                       resets = <&gcc GCC_PCIE3X1_0_PIPE_ARES>,
+                                <&gcc GCC_PCIE3X1_0_CORE_STICKY_ARES>,
+                                <&gcc GCC_PCIE3X1_0_AXI_S_STICKY_ARES>,
+                                <&gcc GCC_PCIE3X1_0_AXI_S_CLK_ARES>,
+                                <&gcc GCC_PCIE3X1_0_AXI_M_STICKY_ARES>,
+                                <&gcc GCC_PCIE3X1_0_AXI_M_CLK_ARES>,
+                                <&gcc GCC_PCIE3X1_0_AUX_CLK_ARES>,
+                                <&gcc GCC_PCIE3X1_0_AHB_CLK_ARES>;
+                       reset-names = "pipe",
+                                     "sticky",
+                                     "axi_s_sticky",
+                                     "axi_s",
+                                     "axi_m_sticky",
+                                     "axi_m",
+                                     "aux",
+                                     "ahb";
+
+                       phys = <&pcie0_phy>;
+                       phy-names = "pciephy";
+
+                       interconnects = <&gcc MASTER_SNOC_PCIE3_1_M &gcc SLAVE_SNOC_PCIE3_1_M>,
+                                       <&gcc MASTER_ANOC_PCIE3_1_S &gcc SLAVE_ANOC_PCIE3_1_S>;
+                       interconnect-names = "pcie-mem", "cpu-pcie";
+
+                       status = "disabled";
+
+                       pcie@0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+                       };
+               };
+       };
+
+       thermal-zones {
+               rfa-0-thermal {
+                       thermal-sensors = <&tsens 11>;
+
+                       trips {
+                               rfa-0-critical {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               rfa-1-thermal {
+                       thermal-sensors = <&tsens 12>;
+
+                       trips {
+                               rfa-1-critical {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               misc-thermal {
+                       thermal-sensors = <&tsens 13>;
+
+                       trips {
+                               misc-critical {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               cpu-top-thermal {
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&tsens 14>;
+
+                       trips {
+                               cpu-top-critical {
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+
+                               cpu-passive {
+                                       temperature = <105000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+                       };
+               };
+
+               top-glue-thermal {
+                       thermal-sensors = <&tsens 15>;
+
+                       trips {
+                               top-glue-critical {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "critical";
+                               };
+                       };
+               };
        };
 
        timer {
index b6e4bb3328b380e7aa20e99bf0d8ae03b3a7f808..1f89530cb0353898e0ac83e67dfd32721ede88f8 100644 (file)
@@ -7,6 +7,8 @@
 
 /dts-v1/;
 
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
 #include "ipq5424.dtsi"
 
 / {
                serial0 = &uart1;
        };
 
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&gpio_keys_default>;
+               pinctrl-names = "default";
+
+               button-wps {
+                       label = "wps";
+                       linux,code = <KEY_WPS_BUTTON>;
+                       gpios = <&tlmm 19 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-0 = <&gpio_leds_default>;
+               pinctrl-names = "default";
+
+               led-0 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_WLAN;
+                       gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tx";
+                       default-state = "off";
+               };
+       };
+
        vreg_misc_3p3: regulator-usb-3p3 {
                compatible = "regulator-fixed";
                regulator-min-microvolt = <3300000>;
        dr_mode = "host";
 };
 
+&pcie2 {
+       pinctrl-0 = <&pcie2_default_state>;
+       pinctrl-names = "default";
+
+       perst-gpios = <&tlmm 31 GPIO_ACTIVE_LOW>;
+
+       status = "okay";
+};
+
+&pcie2_phy {
+       status = "okay";
+};
+
+&pcie3 {
+       pinctrl-0 = <&pcie3_default_state>;
+       pinctrl-names = "default";
+
+       perst-gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+
+       status = "okay";
+};
+
+&pcie3_phy {
+       status = "okay";
+};
+
 &qusb_phy_0 {
        vdd-supply = <&vreg_misc_0p925>;
        vdda-pll-supply = <&vreg_misc_1p8>;
        status = "okay";
 };
 
+&sdhc {
+       pinctrl-0 = <&sdc_default_state>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
 &sleep_clk {
        clock-frequency = <32000>;
 };
 };
 
 &tlmm {
+       gpio_keys_default: gpio-keys-default-state {
+               pins = "gpio19";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+
+       gpio_leds_default: gpio-leds-default-state {
+               pins = "gpio42";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-down;
+       };
+
        spi0_default_state: spi0-default-state {
                clk-pins {
                        pins = "gpio6";
                        bias-pull-up;
                };
        };
+
+       pcie2_default_state: pcie2-default-state {
+               pins = "gpio31";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
+
+       pcie3_default_state: pcie3-default-state {
+               pins = "gpio34";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-pull-up;
+       };
 };
 
 &uart1 {
 &xo_board {
        clock-frequency = <24000000>;
 };
-
index 7034d378b1ef5a447d940eeceaae4e707833d599..66bd2261eb25d79051adddef604c55f5b01e6e8b 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,ipq5424-gcc.h>
 #include <dt-bindings/reset/qcom,ipq5424-gcc.h>
+#include <dt-bindings/interconnect/qcom,ipq5424.h>
 #include <dt-bindings/gpio/gpio.h>
 
 / {
                #size-cells = <2>;
                ranges;
 
+               bootloader@8a200000 {
+                       reg = <0x0 0x8a200000 0x0 0x400000>;
+                       no-map;
+               };
+
                tz@8a600000 {
                        reg = <0x0 0x8a600000 0x0 0x200000>;
                        no-map;
                #size-cells = <2>;
                ranges = <0 0 0 0 0x10 0>;
 
+               pcie0_phy: phy@84000 {
+                       compatible = "qcom,ipq5424-qmp-gen3x1-pcie-phy",
+                                    "qcom,ipq9574-qmp-gen3x1-pcie-phy";
+                       reg = <0x0 0x00084000 0x0 0x1000>;
+                       clocks = <&gcc GCC_PCIE0_AUX_CLK>,
+                                <&gcc GCC_PCIE0_AHB_CLK>,
+                                <&gcc GCC_PCIE0_PIPE_CLK>;
+                       clock-names = "aux",
+                                     "cfg_ahb",
+                                     "pipe";
+
+                       assigned-clocks = <&gcc GCC_PCIE0_AUX_CLK>;
+                       assigned-clock-rates = <20000000>;
+
+                       resets = <&gcc GCC_PCIE0_PHY_BCR>,
+                                <&gcc GCC_PCIE0PHY_PHY_BCR>;
+                       reset-names = "phy",
+                                     "common";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "gcc_pcie0_pipe_clk_src";
+
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
+               pcie1_phy: phy@8c000 {
+                       compatible = "qcom,ipq5424-qmp-gen3x1-pcie-phy",
+                                    "qcom,ipq9574-qmp-gen3x1-pcie-phy";
+                       reg = <0x0 0x0008c000 0x0 0x1000>;
+                       clocks = <&gcc GCC_PCIE1_AUX_CLK>,
+                                <&gcc GCC_PCIE1_AHB_CLK>,
+                                <&gcc GCC_PCIE1_PIPE_CLK>;
+                       clock-names = "aux",
+                                     "cfg_ahb",
+                                     "pipe";
+
+                       assigned-clocks = <&gcc GCC_PCIE1_AUX_CLK>;
+                       assigned-clock-rates = <20000000>;
+
+                       resets = <&gcc GCC_PCIE1_PHY_BCR>,
+                                <&gcc GCC_PCIE1PHY_PHY_BCR>;
+                       reset-names = "phy",
+                                     "common";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "gcc_pcie1_pipe_clk_src";
+
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
+               efuse@a4000 {
+                       compatible = "qcom,ipq5424-qfprom", "qcom,qfprom";
+                       reg = <0 0x000a4000 0 0x741>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       tsens_sens9_off: s9@3dc {
+                               reg = <0x3dc 0x1>;
+                               bits = <4 4>;
+                       };
+
+                       tsens_sens10_off: s10@3dd {
+                               reg = <0x3dd 0x1>;
+                               bits = <0 4>;
+                       };
+
+                       tsens_sens11_off: s11@3dd {
+                               reg = <0x3dd 0x1>;
+                               bits = <4 4>;
+                       };
+
+                       tsens_sens12_off: s12@3de {
+                               reg = <0x3de 0x1>;
+                               bits = <0 4>;
+                       };
+
+                       tsens_sens13_off: s13@3de {
+                               reg = <0x3de 0x1>;
+                               bits = <4 4>;
+                       };
+
+                       tsens_sens14_off: s14@3e5 {
+                               reg = <0x3e5 0x2>;
+                               bits = <7 4>;
+                       };
+
+                       tsens_sens15_off: s15@3e6 {
+                               reg = <0x3e6 0x1>;
+                               bits = <3 4>;
+                       };
+
+                       tsens_mode: mode@419 {
+                               reg = <0x419 0x1>;
+                               bits = <0 3>;
+                       };
+
+                       tsens_base0: base0@419 {
+                               reg = <0x419 0x2>;
+                               bits = <3 10>;
+                       };
+
+                       tsens_base1: base1@41a {
+                               reg = <0x41a 0x2>;
+                               bits = <5 10>;
+                       };
+               };
+
+               pcie2_phy: phy@f4000 {
+                       compatible = "qcom,ipq5424-qmp-gen3x2-pcie-phy",
+                                    "qcom,ipq9574-qmp-gen3x2-pcie-phy";
+                       reg = <0x0 0x000f4000 0x0 0x2000>;
+                       clocks = <&gcc GCC_PCIE2_AUX_CLK>,
+                                <&gcc GCC_PCIE2_AHB_CLK>,
+                                <&gcc GCC_PCIE2_PIPE_CLK>;
+                       clock-names = "aux",
+                                     "cfg_ahb",
+                                     "pipe";
+
+                       assigned-clocks = <&gcc GCC_PCIE2_AUX_CLK>;
+                       assigned-clock-rates = <20000000>;
+
+                       resets = <&gcc GCC_PCIE2_PHY_BCR>,
+                                <&gcc GCC_PCIE2PHY_PHY_BCR>;
+                       reset-names = "phy",
+                                     "common";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "gcc_pcie2_pipe_clk_src";
+
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
+               pcie3_phy: phy@fc000 {
+                       compatible = "qcom,ipq5424-qmp-gen3x2-pcie-phy",
+                                    "qcom,ipq9574-qmp-gen3x2-pcie-phy";
+                       reg = <0x0 0x000fc000 0x0 0x2000>;
+                       clocks = <&gcc GCC_PCIE3_AUX_CLK>,
+                                <&gcc GCC_PCIE3_AHB_CLK>,
+                                <&gcc GCC_PCIE3_PIPE_CLK>;
+                       clock-names = "aux",
+                                     "cfg_ahb",
+                                     "pipe";
+
+                       assigned-clocks = <&gcc GCC_PCIE3_AUX_CLK>;
+                       assigned-clock-rates = <20000000>;
+
+                       resets = <&gcc GCC_PCIE3_PHY_BCR>,
+                                <&gcc GCC_PCIE3PHY_PHY_BCR>;
+                       reset-names = "phy",
+                                     "common";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "gcc_pcie3_pipe_clk_src";
+
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
+               tsens: thermal-sensor@4a9000 {
+                       compatible = "qcom,ipq5424-tsens";
+                       reg = <0 0x004a9000 0 0x1000>,
+                             <0 0x004a8000 0 0x1000>;
+                       interrupts = <GIC_SPI 105 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "combined";
+                       nvmem-cells = <&tsens_mode>,
+                                     <&tsens_base0>,
+                                     <&tsens_base1>,
+                                     <&tsens_sens9_off>,
+                                     <&tsens_sens10_off>,
+                                     <&tsens_sens11_off>,
+                                     <&tsens_sens12_off>,
+                                     <&tsens_sens13_off>,
+                                     <&tsens_sens14_off>,
+                                     <&tsens_sens15_off>;
+                       nvmem-cell-names = "mode",
+                                          "base0",
+                                          "base1",
+                                          "tsens_sens9_off",
+                                          "tsens_sens10_off",
+                                          "tsens_sens11_off",
+                                          "tsens_sens12_off",
+                                          "tsens_sens13_off",
+                                          "tsens_sens14_off",
+                                          "tsens_sens15_off";
+                       #qcom,sensors = <7>;
+                       #thermal-sensor-cells = <1>;
+               };
+
                rng: rng@4c3000 {
                        compatible = "qcom,ipq5424-trng", "qcom,trng";
                        reg = <0 0x004c3000 0 0x1000>;
                        reg = <0 0x01800000 0 0x40000>;
                        clocks = <&xo_board>,
                                 <&sleep_clk>,
-                                <0>,
-                                <0>,
-                                <0>,
-                                <0>,
+                                <&pcie0_phy>,
+                                <&pcie1_phy>,
+                                <&pcie2_phy>,
+                                <&pcie3_phy>,
                                 <0>;
                        #clock-cells = <1>;
                        #reset-cells = <1>;
                                 <&xo_board>;
                        clock-names = "iface", "core", "xo";
 
+                       supports-cqe;
+
                        status = "disabled";
                };
 
                        };
                };
 
+               pcie3: pcie@40000000 {
+                       compatible = "qcom,pcie-ipq5424", "qcom,pcie-ipq9574";
+                       reg = <0x0 0x40000000 0x0 0xf1c>,
+                             <0x0 0x40000f20 0x0 0xa8>,
+                             <0x0 0x40001000 0x0 0x1000>,
+                             <0x0 0x000f8000 0x0 0x3000>,
+                             <0x0 0x40100000 0x0 0x1000>,
+                             <0x0 0x000fe000 0x0 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
+                       device_type = "pci";
+                       linux,pci-domain = <3>;
+                       num-lanes = <2>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       ranges = <0x01000000 0x0 0x00000000 0x0 0x40200000 0x0 0x00100000>,
+                                <0x02000000 0x0 0x40300000 0x0 0x40300000 0x0 0x0fd00000>;
+
+                       msi-map = <0x0 &intc 0x0 0x1000>;
+
+                       interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 476 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 477 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 478 IRQ_TYPE_LEVEL_HIGH>;
+
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 479 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 480 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 481 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 482 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_PCIE3_AXI_M_CLK>,
+                                <&gcc GCC_PCIE3_AXI_S_CLK>,
+                                <&gcc GCC_PCIE3_AXI_S_BRIDGE_CLK>,
+                                <&gcc GCC_PCIE3_RCHNG_CLK>,
+                                <&gcc GCC_PCIE3_AHB_CLK>,
+                                <&gcc GCC_PCIE3_AUX_CLK>;
+                       clock-names = "axi_m",
+                                     "axi_s",
+                                     "axi_bridge",
+                                     "rchng",
+                                     "ahb",
+                                     "aux";
+
+                       assigned-clocks = <&gcc GCC_PCIE3_RCHNG_CLK>;
+                       assigned-clock-rates = <100000000>;
+
+                       resets = <&gcc GCC_PCIE3_PIPE_ARES>,
+                                <&gcc GCC_PCIE3_CORE_STICKY_RESET>,
+                                <&gcc GCC_PCIE3_AXI_S_STICKY_RESET>,
+                                <&gcc GCC_PCIE3_AXI_S_ARES>,
+                                <&gcc GCC_PCIE3_AXI_M_STICKY_RESET>,
+                                <&gcc GCC_PCIE3_AXI_M_ARES>,
+                                <&gcc GCC_PCIE3_AUX_ARES>,
+                                <&gcc GCC_PCIE3_AHB_ARES>;
+                       reset-names = "pipe",
+                                     "sticky",
+                                     "axi_s_sticky",
+                                     "axi_s",
+                                     "axi_m_sticky",
+                                     "axi_m",
+                                     "aux",
+                                     "ahb";
+
+                       phys = <&pcie3_phy>;
+                       phy-names = "pciephy";
+                       interconnects = <&gcc MASTER_ANOC_PCIE3 &gcc SLAVE_ANOC_PCIE3>,
+                                       <&gcc MASTER_CNOC_PCIE3 &gcc SLAVE_CNOC_PCIE3>;
+                       interconnect-names = "pcie-mem", "cpu-pcie";
+
+                       status = "disabled";
+
+                       pcie@0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               bus-range = <0x01 0xff>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+                       };
+               };
+
+               pcie2: pcie@50000000 {
+                       compatible = "qcom,pcie-ipq5424", "qcom,pcie-ipq9574";
+                       reg = <0x0 0x50000000 0x0 0xf1c>,
+                             <0x0 0x50000f20 0x0 0xa8>,
+                             <0x0 0x50001000 0x0 0x1000>,
+                             <0x0 0x000f0000 0x0 0x3000>,
+                             <0x0 0x50100000 0x0 0x1000>,
+                             <0x0 0x000f6000 0x0 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
+                       device_type = "pci";
+                       linux,pci-domain = <2>;
+                       num-lanes = <2>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       ranges = <0x01000000 0x0 0x00000000 0x0 0x50200000 0x0 0x00100000>,
+                                <0x02000000 0x0 0x50300000 0x0 0x50300000 0x0 0x0fd00000>;
+
+                       msi-map = <0x0 &intc 0x0 0x1000>;
+
+                       interrupts = <GIC_SPI 455 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 456 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 457 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 458 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 459 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 460 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 463 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 464 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 465 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 466 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 467 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_PCIE2_AXI_M_CLK>,
+                                <&gcc GCC_PCIE2_AXI_S_CLK>,
+                                <&gcc GCC_PCIE2_AXI_S_BRIDGE_CLK>,
+                                <&gcc GCC_PCIE2_RCHNG_CLK>,
+                                <&gcc GCC_PCIE2_AHB_CLK>,
+                                <&gcc GCC_PCIE2_AUX_CLK>;
+                       clock-names = "axi_m",
+                                     "axi_s",
+                                     "axi_bridge",
+                                     "rchng",
+                                     "ahb",
+                                     "aux";
+
+                       assigned-clocks = <&gcc GCC_PCIE2_RCHNG_CLK>;
+                       assigned-clock-rates = <100000000>;
+
+                       resets = <&gcc GCC_PCIE2_PIPE_ARES>,
+                                <&gcc GCC_PCIE2_CORE_STICKY_RESET>,
+                                <&gcc GCC_PCIE2_AXI_S_STICKY_RESET>,
+                                <&gcc GCC_PCIE2_AXI_S_ARES>,
+                                <&gcc GCC_PCIE2_AXI_M_STICKY_RESET>,
+                                <&gcc GCC_PCIE2_AXI_M_ARES>,
+                                <&gcc GCC_PCIE2_AUX_ARES>,
+                                <&gcc GCC_PCIE2_AHB_ARES>;
+                       reset-names = "pipe",
+                                     "sticky",
+                                     "axi_s_sticky",
+                                     "axi_s",
+                                     "axi_m_sticky",
+                                     "axi_m",
+                                     "aux",
+                                     "ahb";
+
+                       phys = <&pcie2_phy>;
+                       phy-names = "pciephy";
+                       interconnects = <&gcc MASTER_ANOC_PCIE2 &gcc SLAVE_ANOC_PCIE2>,
+                                       <&gcc MASTER_CNOC_PCIE2 &gcc SLAVE_CNOC_PCIE2>;
+                       interconnect-names = "pcie-mem", "cpu-pcie";
+
+                       status = "disabled";
+
+                       pcie@0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               bus-range = <0x01 0xff>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+                       };
+               };
+
+               pcie1: pcie@60000000 {
+                       compatible = "qcom,pcie-ipq5424", "qcom,pcie-ipq9574";
+                       reg = <0x0 0x60000000 0x0 0xf1c>,
+                             <0x0 0x60000f20 0x0 0xa8>,
+                             <0x0 0x60001000 0x0 0x1000>,
+                             <0x0 0x00088000 0x0 0x3000>,
+                             <0x0 0x60100000 0x0 0x1000>,
+                             <0x0 0x0008e000 0x0 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
+                       device_type = "pci";
+                       linux,pci-domain = <1>;
+                       num-lanes = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       ranges = <0x01000000 0x0 0x00000000 0x0 0x60200000 0x0 0x00100000>,
+                                <0x02000000 0x0 0x60300000 0x0 0x60300000 0x0 0x0fd00000>;
+
+                       msi-map = <0x0 &intc 0x0 0x1000>;
+
+                       interrupts = <GIC_SPI 440 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 441 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 442 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 443 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 447 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 448 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 449 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 450 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 451 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 452 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_PCIE1_AXI_M_CLK>,
+                                <&gcc GCC_PCIE1_AXI_S_CLK>,
+                                <&gcc GCC_PCIE1_AXI_S_BRIDGE_CLK>,
+                                <&gcc GCC_PCIE1_RCHNG_CLK>,
+                                <&gcc GCC_PCIE1_AHB_CLK>,
+                                <&gcc GCC_PCIE1_AUX_CLK>;
+                       clock-names = "axi_m",
+                                     "axi_s",
+                                     "axi_bridge",
+                                     "rchng",
+                                     "ahb",
+                                     "aux";
+
+                       assigned-clocks = <&gcc GCC_PCIE1_RCHNG_CLK>;
+                       assigned-clock-rates = <100000000>;
+
+                       resets = <&gcc GCC_PCIE1_PIPE_ARES>,
+                                <&gcc GCC_PCIE1_CORE_STICKY_RESET>,
+                                <&gcc GCC_PCIE1_AXI_S_STICKY_RESET>,
+                                <&gcc GCC_PCIE1_AXI_S_ARES>,
+                                <&gcc GCC_PCIE1_AXI_M_STICKY_RESET>,
+                                <&gcc GCC_PCIE1_AXI_M_ARES>,
+                                <&gcc GCC_PCIE1_AUX_ARES>,
+                                <&gcc GCC_PCIE1_AHB_ARES>;
+                       reset-names = "pipe",
+                                     "sticky",
+                                     "axi_s_sticky",
+                                     "axi_s",
+                                     "axi_m_sticky",
+                                     "axi_m",
+                                     "aux",
+                                     "ahb";
+
+                       phys = <&pcie1_phy>;
+                       phy-names = "pciephy";
+                       interconnects = <&gcc MASTER_ANOC_PCIE1 &gcc SLAVE_ANOC_PCIE1>,
+                                       <&gcc MASTER_CNOC_PCIE1 &gcc SLAVE_CNOC_PCIE1>;
+                       interconnect-names = "pcie-mem", "cpu-pcie";
+
+                       status = "disabled";
+
+                       pcie@0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               bus-range = <0x01 0xff>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+                       };
+               };
+
+               pcie0: pcie@70000000 {
+                       compatible = "qcom,pcie-ipq5424", "qcom,pcie-ipq9574";
+                       reg = <0x0 0x70000000 0x0 0xf1c>,
+                             <0x0 0x70000f20 0x0 0xa8>,
+                             <0x0 0x70001000 0x0 0x1000>,
+                             <0x0 0x00080000 0x0 0x3000>,
+                             <0x0 0x70100000 0x0 0x1000>,
+                             <0x0 0x00086000 0x0 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
+                       device_type = "pci";
+                       linux,pci-domain = <0>;
+                       num-lanes = <1>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       ranges = <0x01000000 0x0 0x00000000 0x0 0x70200000 0x0 0x00100000>,
+                                <0x02000000 0x0 0x70300000 0x0 0x70300000 0x0 0x0fd00000>;
+
+                       msi-map = <0x0 &intc 0x0 0x1000>;
+
+                       interrupts = <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 433 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "msi0",
+                                         "msi1",
+                                         "msi2",
+                                         "msi3",
+                                         "msi4",
+                                         "msi5",
+                                         "msi6",
+                                         "msi7",
+                                         "global";
+
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+                       interrupt-map = <0 0 0 1 &intc 0 434 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 2 &intc 0 435 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 3 &intc 0 436 IRQ_TYPE_LEVEL_HIGH>,
+                                       <0 0 0 4 &intc 0 437 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_PCIE0_AXI_M_CLK>,
+                                <&gcc GCC_PCIE0_AXI_S_CLK>,
+                                <&gcc GCC_PCIE0_AXI_S_BRIDGE_CLK>,
+                                <&gcc GCC_PCIE0_RCHNG_CLK>,
+                                <&gcc GCC_PCIE0_AHB_CLK>,
+                                <&gcc GCC_PCIE0_AUX_CLK>;
+                       clock-names = "axi_m",
+                                     "axi_s",
+                                     "axi_bridge",
+                                     "rchng",
+                                     "ahb",
+                                     "aux";
+
+                       assigned-clocks = <&gcc GCC_PCIE0_RCHNG_CLK>;
+                       assigned-clock-rates = <100000000>;
+
+                       resets = <&gcc GCC_PCIE0_PIPE_ARES>,
+                                <&gcc GCC_PCIE0_CORE_STICKY_RESET>,
+                                <&gcc GCC_PCIE0_AXI_S_STICKY_RESET>,
+                                <&gcc GCC_PCIE0_AXI_S_ARES>,
+                                <&gcc GCC_PCIE0_AXI_M_STICKY_RESET>,
+                                <&gcc GCC_PCIE0_AXI_M_ARES>,
+                                <&gcc GCC_PCIE0_AUX_ARES>,
+                                <&gcc GCC_PCIE0_AHB_ARES>;
+                       reset-names = "pipe",
+                                     "sticky",
+                                     "axi_s_sticky",
+                                     "axi_s",
+                                     "axi_m_sticky",
+                                     "axi_m",
+                                     "aux",
+                                     "ahb";
+
+                       phys = <&pcie0_phy>;
+                       phy-names = "pciephy";
+                       interconnects = <&gcc MASTER_ANOC_PCIE0 &gcc SLAVE_ANOC_PCIE0>,
+                                       <&gcc MASTER_CNOC_PCIE0 &gcc SLAVE_CNOC_PCIE0>;
+                       interconnect-names = "pcie-mem", "cpu-pcie";
+
+                       status = "disabled";
+
+                       pcie@0 {
+                               device_type = "pci";
+                               reg = <0x0 0x0 0x0 0x0 0x0>;
+                               bus-range = <0x01 0xff>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+                       };
+               };
+       };
+
+       thermal_zones: thermal-zones {
+               cpu0-thermal {
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&tsens 14>;
+
+                       trips {
+                               cpu-critical {
+                                       temperature = <120000>;
+                                       hysteresis = <9000>;
+                                       type = "critical";
+                               };
+
+                               cpu-passive {
+                                       temperature = <110000>;
+                                       hysteresis = <9000>;
+                                       type = "passive";
+                               };
+                       };
+               };
+
+               cpu1-thermal {
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&tsens 12>;
+
+                       trips {
+                               cpu-critical {
+                                       temperature = <120000>;
+                                       hysteresis = <9000>;
+                                       type = "critical";
+                               };
+
+                               cpu-passive {
+                                       temperature = <110000>;
+                                       hysteresis = <9000>;
+                                       type = "passive";
+                               };
+                       };
+               };
+
+               cpu2-thermal {
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&tsens 11>;
+
+                       trips {
+                               cpu-critical {
+                                       temperature = <120000>;
+                                       hysteresis = <9000>;
+                                       type = "critical";
+                               };
+
+                               cpu-passive {
+                                       temperature = <110000>;
+                                       hysteresis = <9000>;
+                                       type = "passive";
+                               };
+                       };
+               };
+
+               cpu3-thermal {
+                       polling-delay-passive = <100>;
+                       thermal-sensors = <&tsens 13>;
+
+                       trips {
+                               cpu-critical {
+                                       temperature = <120000>;
+                                       hysteresis = <9000>;
+                                       type = "critical";
+                               };
+
+                               cpu-passive {
+                                       temperature = <110000>;
+                                       hysteresis = <9000>;
+                                       type = "passive";
+                               };
+                       };
+               };
+
+               wcss-tile2-thermal {
+                       thermal-sensors = <&tsens 9>;
+
+                       trips {
+                               wcss-tile2-critical {
+                                       temperature = <125000>;
+                                       hysteresis = <9000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               wcss-tile3-thermal {
+                       thermal-sensors = <&tsens 10>;
+
+                       trips {
+                               wcss-tile3-critical {
+                                       temperature = <125000>;
+                                       hysteresis = <9000>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
+               top-glue-thermal {
+                       thermal-sensors = <&tsens 15>;
+
+                       trips {
+                               top-glue-critical {
+                                       temperature = <125000>;
+                                       hysteresis = <9000>;
+                                       type = "critical";
+                               };
+                       };
+               };
        };
 
        timer {
index f5f4827c0e1770e7831715c2ec1b9c63df794cb9..9c69d3027b43feddcda63bfcc1d17249a2af91da 100644 (file)
@@ -7,7 +7,7 @@
 
 /dts-v1/;
 
-#include "ipq6018.dtsi"
+#include "ipq6018-mp5496.dtsi"
 
 / {
        model = "Qualcomm Technologies, Inc. IPQ6018/AP-CP01-C1";
diff --git a/src/arm64/qcom/ipq6018-mp5496.dtsi b/src/arm64/qcom/ipq6018-mp5496.dtsi
new file mode 100644 (file)
index 0000000..d6b111a
--- /dev/null
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * ipq6018-mp5496.dtsi describes common properties (e.g. regulators) that
+ * apply to most devices that make use of the IPQ6018 SoC and MP5496 PMIC.
+ */
+
+#include "ipq6018.dtsi"
+
+&cpu0 {
+       cpu-supply = <&mp5496_s2>;
+};
+
+&cpu1 {
+       cpu-supply = <&mp5496_s2>;
+};
+
+&cpu2 {
+       cpu-supply = <&mp5496_s2>;
+};
+
+&cpu3 {
+       cpu-supply = <&mp5496_s2>;
+};
+
+&rpm_requests {
+       regulators {
+               compatible = "qcom,rpm-mp5496-regulators";
+
+               mp5496_s2: s2 {
+                       regulator-min-microvolt = <725000>;
+                       regulator-max-microvolt = <1062500>;
+                       regulator-always-on;
+               };
+
+               mp5496_l2: l2 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <3300000>;
+               };
+       };
+};
+
+&sdhc {
+       vqmmc-supply = <&mp5496_l2>;
+};
index dbf6716bcb59a04939c2b994d85cf58c12365962..7f0faf26b7079596e0f8451cc3d05a76d231c2b9 100644 (file)
@@ -43,7 +43,6 @@
                        clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
                        clock-names = "cpu";
                        operating-points-v2 = <&cpu_opp_table>;
-                       cpu-supply = <&ipq6018_s2>;
                        #cooling-cells = <2>;
                };
 
@@ -56,7 +55,6 @@
                        clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
                        clock-names = "cpu";
                        operating-points-v2 = <&cpu_opp_table>;
-                       cpu-supply = <&ipq6018_s2>;
                        #cooling-cells = <2>;
                };
 
@@ -69,7 +67,6 @@
                        clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
                        clock-names = "cpu";
                        operating-points-v2 = <&cpu_opp_table>;
-                       cpu-supply = <&ipq6018_s2>;
                        #cooling-cells = <2>;
                };
 
@@ -82,7 +79,6 @@
                        clocks = <&apcs_glb APCS_ALIAS0_CORE_CLK>;
                        clock-names = "cpu";
                        operating-points-v2 = <&cpu_opp_table>;
-                       cpu-supply = <&ipq6018_s2>;
                        #cooling-cells = <2>;
                };
 
                        clock-latency-ns = <200000>;
                };
 
+               opp-1200000000 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <850000>;
+                       opp-supported-hw = <0x4>;
+                       clock-latency-ns = <200000>;
+               };
+
                opp-1320000000 {
                        opp-hz = /bits/ 64 <1320000000>;
                        opp-microvolt = <862500>;
                        clock-latency-ns = <200000>;
                };
 
+               opp-1512000000 {
+                       opp-hz = /bits/ 64 <1512000000>;
+                       opp-microvolt = <937500>;
+                       opp-supported-hw = <0x2>;
+                       clock-latency-ns = <200000>;
+               };
+
                opp-1608000000 {
                        opp-hz = /bits/ 64 <1608000000>;
                        opp-microvolt = <987500>;
                        rpm_requests: rpm-requests {
                                compatible = "qcom,rpm-ipq6018", "qcom,glink-smd-rpm";
                                qcom,glink-channels = "rpm_requests";
-
-                               regulators {
-                                       compatible = "qcom,rpm-mp5496-regulators";
-
-                                       ipq6018_s2: s2 {
-                                               regulator-min-microvolt = <725000>;
-                                               regulator-max-microvolt = <1062500>;
-                                               regulator-always-on;
-                                       };
-                               };
                        };
                };
        };
                };
 
                smem_region: memory@4aa00000 {
+                       compatible = "qcom,smem";
                        reg = <0x0 0x4aa00000 0x0 0x100000>;
                        no-map;
+
+                       hwlocks = <&tcsr_mutex 3>;
                };
 
                q6_region: memory@4ab00000 {
                };
        };
 
-       smem {
-               compatible = "qcom,smem";
-               memory-region = <&smem_region>;
-               hwlocks = <&tcsr_mutex 3>;
-       };
-
        soc: soc@0 {
                #address-cells = <2>;
                #size-cells = <2>;
index ae12f069f26fa53ae15657d5fa2ee297e68c3ec8..bdb396afb9922a4369b4e96a09d0789cef21c046 100644 (file)
                        regulator-always-on;
                        regulator-boot-on;
                };
+
+               mp5496_l5: l5 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-always-on;
+                       regulator-boot-on;
+               };
        };
 };
 
                drive-strength = <8>;
                bias-pull-up;
        };
+
+       qpic_snand_default_state: qpic-snand-default-state {
+               clock-pins {
+                       pins = "gpio5";
+                       function = "qspi_clk";
+                       drive-strength = <8>;
+                       bias-disable;
+               };
+
+               cs-pins {
+                       pins = "gpio4";
+                       function = "qspi_cs";
+                       drive-strength = <8>;
+                       bias-disable;
+               };
+
+               data-pins {
+                       pins = "gpio0", "gpio1", "gpio2", "gpio3";
+                       function = "qspi_data";
+                       drive-strength = <8>;
+                       bias-disable;
+               };
+       };
+};
+
+&qpic_bam {
+       status = "okay";
+};
+
+&qpic_nand {
+       pinctrl-0 = <&qpic_snand_default_state>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       flash@0 {
+               compatible = "spi-nand";
+               reg = <0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               nand-ecc-engine = <&qpic_nand>;
+               nand-ecc-strength = <4>;
+               nand-ecc-step-size = <512>;
+       };
 };
 
 &usb_0_dwc3 {
 };
 
 &usb_0_qmpphy {
-       vdda-pll-supply = <&mp5496_l2>;
+       vdda-pll-supply = <&mp5496_l5>;
        vdda-phy-supply = <&regulator_fixed_0p925>;
 
        status = "okay";
 
 &usb_0_qusbphy {
        vdd-supply = <&regulator_fixed_0p925>;
-       vdda-pll-supply = <&mp5496_l2>;
+       vdda-pll-supply = <&mp5496_l5>;
        vdda-phy-dpdm-supply = <&regulator_fixed_3p3>;
 
        status = "okay";
index 165ebbb59511918ec18991bbc563ed9f4db1c84b..fa7bb521e78603fc4fd6499f398b74c99b018772 100644 (file)
        status = "okay";
 };
 
-&sdhc_1 {
-       pinctrl-0 = <&sdc_default_state>;
-       pinctrl-names = "default";
-       mmc-ddr-1_8v;
-       mmc-hs200-1_8v;
-       mmc-hs400-1_8v;
-       mmc-hs400-enhanced-strobe;
-       max-frequency = <384000000>;
-       bus-width = <8>;
-       status = "okay";
-};
-
 &tlmm {
 
        pcie1_default: pcie1-default-state {
index 9422900289725774da8cfea9848529891038e57a..815b5f9540b80e91e81e02a97b20c0426f40b003 100644 (file)
                        interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>;
                        #dma-cells = <1>;
                        qcom,ee = <1>;
+                       qcom,num-ees = <4>;
+                       num-channels = <16>;
                        qcom,controlled-remotely;
                };
 
                        status = "disabled";
                };
 
+               qpic_bam: dma-controller@7984000 {
+                       compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0";
+                       reg = <0x07984000 0x1c000>;
+                       interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_QPIC_AHB_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+                       status = "disabled";
+               };
+
+               qpic_nand: spi@79b0000 {
+                       compatible = "qcom,ipq9574-snand";
+                       reg = <0x079b0000 0x10000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&gcc GCC_QPIC_CLK>,
+                                <&gcc GCC_QPIC_AHB_CLK>,
+                                <&gcc GCC_QPIC_IO_MACRO_CLK>;
+                       clock-names = "core", "aon", "iom";
+                       dmas = <&qpic_bam 0>,
+                              <&qpic_bam 1>,
+                              <&qpic_bam 2>;
+                       dma-names = "tx", "rx", "cmd";
+                       status = "disabled";
+               };
+
                usb_0_qusbphy: phy@7b000 {
                        compatible = "qcom,ipq9574-qusb2-phy";
                        reg = <0x0007b000 0x180>;
 
                pcie1: pcie@10000000 {
                        compatible = "qcom,pcie-ipq9574";
-                       reg =  <0x10000000 0xf1d>,
-                              <0x10000f20 0xa8>,
-                              <0x10001000 0x1000>,
-                              <0x000f8000 0x4000>,
-                              <0x10100000 0x1000>;
-                       reg-names = "dbi", "elbi", "atu", "parf", "config";
+                       reg = <0x10000000 0xf1d>,
+                             <0x10000f20 0xa8>,
+                             <0x10001000 0x1000>,
+                             <0x000f8000 0x4000>,
+                             <0x10100000 0x1000>,
+                             <0x000fe000 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
                        device_type = "pci";
                        linux,pci-domain = <1>;
                        bus-range = <0x00 0xff>;
 
                pcie3: pcie@18000000 {
                        compatible = "qcom,pcie-ipq9574";
-                       reg =  <0x18000000 0xf1d>,
-                              <0x18000f20 0xa8>,
-                              <0x18001000 0x1000>,
-                              <0x000f0000 0x4000>,
-                              <0x18100000 0x1000>;
-                       reg-names = "dbi", "elbi", "atu", "parf", "config";
+                       reg = <0x18000000 0xf1d>,
+                             <0x18000f20 0xa8>,
+                             <0x18001000 0x1000>,
+                             <0x000f0000 0x4000>,
+                             <0x18100000 0x1000>,
+                             <0x000f6000 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
                        device_type = "pci";
                        linux,pci-domain = <3>;
                        bus-range = <0x00 0xff>;
                        ranges = <0x01000000 0x0 0x00000000 0x18200000 0x0 0x100000>,
                                 <0x02000000 0x0 0x18300000 0x18300000 0x0 0x7d00000>;
 
-                       interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 415 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 494 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 495 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
 
                pcie2: pcie@20000000 {
                        compatible = "qcom,pcie-ipq9574";
-                       reg =  <0x20000000 0xf1d>,
-                              <0x20000f20 0xa8>,
-                              <0x20001000 0x1000>,
-                              <0x00088000 0x4000>,
-                              <0x20100000 0x1000>;
-                       reg-names = "dbi", "elbi", "atu", "parf", "config";
+                       reg = <0x20000000 0xf1d>,
+                             <0x20000f20 0xa8>,
+                             <0x20001000 0x1000>,
+                             <0x00088000 0x4000>,
+                             <0x20100000 0x1000>,
+                             <0x0008e000 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
                        device_type = "pci";
                        linux,pci-domain = <2>;
                        bus-range = <0x00 0xff>;
 
                pcie0: pci@28000000 {
                        compatible = "qcom,pcie-ipq9574";
-                       reg =  <0x28000000 0xf1d>,
-                              <0x28000f20 0xa8>,
-                              <0x28001000 0x1000>,
-                              <0x00080000 0x4000>,
-                              <0x28100000 0x1000>;
-                       reg-names = "dbi", "elbi", "atu", "parf", "config";
+                       reg = <0x28000000 0xf1d>,
+                             <0x28000f20 0xa8>,
+                             <0x28001000 0x1000>,
+                             <0x00080000 0x4000>,
+                             <0x28100000 0x1000>,
+                             <0x00086000 0x1000>;
+                       reg-names = "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "parf",
+                                   "config",
+                                   "mhi";
                        device_type = "pci";
                        linux,pci-domain = <0>;
                        bus-range = <0x00 0xff>;
                        status = "disabled";
                };
 
+               nsscc: clock-controller@39b00000 {
+                       compatible = "qcom,ipq9574-nsscc";
+                       reg = <0x39b00000 0x80000>;
+                       clocks = <&xo_board_clk>,
+                                <&cmn_pll NSS_1200MHZ_CLK>,
+                                <&cmn_pll PPE_353MHZ_CLK>,
+                                <&gcc GPLL0_OUT_AUX>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <0>,
+                                <&gcc GCC_NSSCC_CLK>;
+                       clock-names = "xo",
+                                     "nss_1200",
+                                     "ppe_353",
+                                     "gpll0_out",
+                                     "uniphy0_rx",
+                                     "uniphy0_tx",
+                                     "uniphy1_rx",
+                                     "uniphy1_tx",
+                                     "uniphy2_rx",
+                                     "uniphy2_tx",
+                                     "bus";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #interconnect-cells = <1>;
+               };
        };
 
        thermal-zones {
index b4ce14a79370bc16b7d8fe144e56f4bb27e01534..3a6eba904641c65ee8e982774f4122ef9ddb3704 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index 3459145516a12ae8e054e24b3ed9b73f9d79905a..2de8b6f9531b25f1ee745c5e298d1cab806f0391 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &mpss_mem {
index 77618c7374dfe29cf5660e0834aa2b0fa6f3d67c..29d61f8d5dc9c8099524ecbfdb80ab7afaa811c4 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &mpss_mem {
index f7be7e3718209b9ca96afb13ea1aca05e1388225..742a325245c5c09dcb6227ae262865b17ee5ef46 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index bf7fc89dd106f670e7cda270c7284a6a3d7d052d..aa414b5d7ee47a0e20ca2341c9a3250503184a69 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &lpass {
index a823a1c4020894edf845130e72803b48dbd24ac8..22bc73b94344aff42f560304c99cbb7b8995fdfd 100644 (file)
@@ -59,6 +59,9 @@
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index 07345e694f6f46bbf71ed3c551b2a80d5f352d2c..c50374979939c26186e97d19047de77356a9c3c1 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index 7f0c2c1b8a94b2c4d79e5e0b2b7188f4e2b2d281..eb449112a22684492e6b6f9705389d44f2cec379 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &pm8916_bms {
index 2cc54eaf72027a213f9d779c57fa22386bda934a..887764dc55b21a5892510f822004b054eb65fa0a 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &mpss_mem {
index 0399616226330b17d0076460c116f4ae27b4b00f..75103168c1fcdcf9ae968acee9a639d04aa61b62 100644 (file)
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
                direction = <Q6ASM_DAI_RX>;
        };
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
                direction = <Q6ASM_DAI_TX>;
        };
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
                direction = <Q6ASM_DAI_RX>;
        };
        dai@3 {
-               reg = <3>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>;
                direction = <Q6ASM_DAI_RX>;
                is-compress-dai;
        };
index 6a27d0ecd2ad23b462191a5a328a49a76ab13b42..4e202e7ed7db1921f347ca8b4a01ccec593a8d8e 100644 (file)
@@ -69,6 +69,9 @@
 };
 
 &blsp_uart1 {
+       pinctrl-0 = <&blsp_uart1_console_default>;
+       pinctrl-1 = <&blsp_uart1_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
        status = "okay";
 };
 
-/* CTS/RTX are not used */
-&blsp_uart1_default {
-       pins = "gpio0", "gpio1";
-};
-&blsp_uart1_sleep {
-       pins = "gpio0", "gpio1";
-};
-
 &tlmm {
        gpio_keys_default: gpio-keys-default-state {
                pins = "gpio107";
index c11a845e91bb5029e89905ec7dee3b07646dd4cb..63d476523544babc9213e34e227870a447410eca 100644 (file)
@@ -23,5 +23,8 @@
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
index e6355e5e2177df9e3beba6b2d96a15fb069ce57a..6f75707b6f9b4707cbed7e12ab60fa888d6a1f06 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &gpu {
index 7a7e99b015d9bf9686d2b41f7efb76a093c1730d..fb790b02736acff017d12318de1c01100a33c808 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index fbd2caf405d5f686a40a59ff7e0bfc78f164e03c..ff9679d3f664cbb203ff42b4cf27468622cc5cf3 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index 5ca2ada266f495e4584a5143a8cce6f1f1c4ad78..697f25d51d9d05087500231f4d9ad77fe81ea3b3 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &mpss_mem {
index caad1dead2e03c30dd6eb09b457439a9b0446126..71b5c98458ff475e101a0a40d3601b5ca144ec92 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &gpu {
index c77ed04bb6c36dbc0cb7c0b09f50d1f18aafa4c9..5719933fa8e01b0b90ef7477c0bf181af379a524 100644 (file)
@@ -72,6 +72,9 @@
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index 1a7c347dc3f08409f7db3b246c04687c666bba32..ebe85cd85ddf30b9905975318746403e0cecf7ee 100644 (file)
@@ -93,6 +93,9 @@
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index 510b3b3c4e3c4223c64bcfa563e0e080d033d7b7..68c8856d4c2ed22370822eb295c0000fd80226f5 100644 (file)
 
 &blsp_uart2 {
        status = "okay";
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
 };
 
 &mpss_mem {
index 8f35c9af18782aa1da7089988692e6588c4b7c5d..de9fdc0dfc5f9b223ee252b80fc18d45c9bb6582 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include <dt-bindings/arm/coresight-cti-dt.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8916.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
 #include <dt-bindings/interconnect/qcom,msm8916.h>
                                bias-pull-down;
                        };
 
-                       blsp_uart1_default: blsp-uart1-default-state {
-                               /* TX, RX, CTS_N, RTS_N */
-                               pins = "gpio0", "gpio1", "gpio2", "gpio3";
-                               function = "blsp_uart1";
-                               drive-strength = <16>;
-                               bias-disable;
+                       blsp_uart1_console_default: blsp-uart1-console-default-state {
+                               tx-pins {
+                                       pins = "gpio0";
+                                       function = "blsp_uart1";
+                                       drive-strength = <16>;
+                                       bias-disable;
+                                       bootph-all;
+                               };
+
+                               rx-pins {
+                                       pins = "gpio1";
+                                       function = "blsp_uart1";
+                                       drive-strength = <16>;
+                                       bias-pull-up;
+                                       bootph-all;
+                               };
                        };
 
-                       blsp_uart1_sleep: blsp-uart1-sleep-state {
-                               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+                       blsp_uart1_console_sleep: blsp-uart1-console-sleep-state {
+                               pins = "gpio0", "gpio1";
                                function = "gpio";
                                drive-strength = <2>;
                                bias-pull-down;
                        };
 
-                       blsp_uart2_default: blsp-uart2-default-state {
-                               pins = "gpio4", "gpio5";
-                               function = "blsp_uart2";
-                               drive-strength = <16>;
-                               bias-disable;
+                       blsp_uart2_console_default: blsp-uart2-console-default-state {
+                               tx-pins {
+                                       pins = "gpio4";
+                                       function = "blsp_uart2";
+                                       drive-strength = <16>;
+                                       bias-disable;
+                                       bootph-all;
+                               };
+
+                               rx-pins {
+                                       pins = "gpio5";
+                                       function = "blsp_uart2";
+                                       drive-strength = <16>;
+                                       bias-pull-up;
+                                       bootph-all;
+                               };
                        };
 
-                       blsp_uart2_sleep: blsp-uart2-sleep-state {
+                       blsp_uart2_console_sleep: blsp-uart2-console-sleep-state {
                                pins = "gpio4", "gpio5";
                                function = "gpio";
                                drive-strength = <2>;
                        reg = <0x01800000 0x80000>;
                        clocks = <&xo_board>,
                                 <&sleep_clk>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
                                 <0>,
                                 <0>,
                                 <0>;
 
                                assigned-clocks = <&gcc BYTE0_CLK_SRC>,
                                                  <&gcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                clocks = <&gcc GCC_MDSS_MDP_CLK>,
                                         <&gcc GCC_MDSS_AHB_CLK>,
                        clock-names = "core", "iface";
                        dmas = <&blsp_dma 0>, <&blsp_dma 1>;
                        dma-names = "tx", "rx";
-                       pinctrl-names = "default", "sleep";
-                       pinctrl-0 = <&blsp_uart1_default>;
-                       pinctrl-1 = <&blsp_uart1_sleep>;
                        status = "disabled";
                };
 
                        clock-names = "core", "iface";
                        dmas = <&blsp_dma 2>, <&blsp_dma 3>;
                        dma-names = "tx", "rx";
-                       pinctrl-names = "default", "sleep";
-                       pinctrl-0 = <&blsp_uart2_default>;
-                       pinctrl-1 = <&blsp_uart2_sleep>;
                        status = "disabled";
                };
 
index f1d22535fedd94467ba3f0a88b2110ce5360e7e1..9db503e2188866af1e17bb0c62356a762d4b2f3d 100644 (file)
        qcom,msm-id = <QCOM_ID_MSM8917 0>;
        qcom,board-id = <0x1000b 2>, <0x2000b 2>;
 
+       pwm_backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pm8937_pwm 0 100000>;
+               brightness-levels = <0 255>;
+               num-interpolated-steps = <255>;
+               default-brightness-level = <128>;
+       };
+
        battery: battery {
                compatible = "simple-battery";
                charge-full-design-microamp-hours = <3000000>;
                monitored-battery = <&battery>;
        };
 
-       bq25601@6b{
+       bq25601@6b {
                compatible = "ti,bq25601";
                reg = <0x6b>;
                interrupts-extended = <&tlmm 61 IRQ_TYPE_EDGE_FALLING>;
        };
 };
 
+&pm8937_gpios {
+       pwm_enable_default: pwm-enable-default-state {
+               pins = "gpio8";
+               function = "dtest2";
+               output-low;
+               bias-disable;
+               qcom,drive-strength = <2>;
+       };
+};
+
+&pm8937_pwm {
+       pinctrl-0 = <&pwm_enable_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
 &pm8937_resin {
        linux,code = <KEY_VOLUMEDOWN>;
 
index 7bf58dd0146eecdc96e29187f6dd475598669c02..8a642fce2e40d6d252a1cfbdfed602e6789ef09a 100644 (file)
@@ -1,5 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8917.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
                                bits = <1 6>;
                        };
 
-                       tsens_s9_p1: s9-p1@230{
+                       tsens_s9_p1: s9-p1@230 {
                                reg = <0x230 1>;
                                bits = <0 6>;
                        };
                        #power-domain-cells = <1>;
                        clocks = <&xo_board>,
                                 <&sleep_clk>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>;
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>;
                        clock-names = "xo",
                                      "sleep_clk",
                                      "dsi0pll",
 
                                assigned-clocks = <&gcc BYTE0_CLK_SRC>,
                                                  <&gcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                clocks = <&gcc GCC_MDSS_MDP_CLK>,
                                         <&gcc GCC_MDSS_AHB_CLK>,
index 3cec51891aed95968f7b5cb099ae2107691635fb..18381a66daef8642da27b3ea8c48964c1ccf121b 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index b845da4fa23e612f04cf8a8f15b8892e396a8c41..13422a19c26a15812657e92ab0b52d6f53f5c944 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index ceba6e73b2112687d16ee595003c80ea1a93143a..07613080e79e9bfb21493a0b61c85bc172d5e3f6 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index 800e0747a2f79f6ef9a7d86d56c1a2006207b1c7..a5187355f9fa09148b9f04970da6855a49cdd059 100644 (file)
 };
 
 &blsp_uart2 {
+       pinctrl-0 = <&blsp_uart2_console_default>;
+       pinctrl-1 = <&blsp_uart2_console_sleep>;
+       pinctrl-names = "default", "sleep";
        status = "okay";
 };
 
index 7cd5660de1b33def5b9dc8a0d02583c3eaffb17f..68b92fdb996c26e7a1aadedf0f52e1afca85c4ab 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright (c) 2020-2023, Linaro Limited
  */
 
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8939.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
 #include <dt-bindings/interconnect/qcom,msm8939.h>
@@ -46,6 +47,7 @@
                        compatible = "arm,cortex-a53";
                        device_type = "cpu";
                        enable-method = "spin-table";
+                       cpu-release-addr = /bits/ 64 <0>;
                        reg = <0x100>;
                        next-level-cache = <&l2_1>;
                        qcom,acc = <&acc0>;
@@ -64,6 +66,7 @@
                        compatible = "arm,cortex-a53";
                        device_type = "cpu";
                        enable-method = "spin-table";
+                       cpu-release-addr = /bits/ 64 <0>;
                        reg = <0x101>;
                        next-level-cache = <&l2_1>;
                        qcom,acc = <&acc1>;
@@ -77,6 +80,7 @@
                        compatible = "arm,cortex-a53";
                        device_type = "cpu";
                        enable-method = "spin-table";
+                       cpu-release-addr = /bits/ 64 <0>;
                        reg = <0x102>;
                        next-level-cache = <&l2_1>;
                        qcom,acc = <&acc2>;
@@ -90,6 +94,7 @@
                        compatible = "arm,cortex-a53";
                        device_type = "cpu";
                        enable-method = "spin-table";
+                       cpu-release-addr = /bits/ 64 <0>;
                        reg = <0x103>;
                        next-level-cache = <&l2_1>;
                        qcom,acc = <&acc3>;
                        compatible = "arm,cortex-a53";
                        device_type = "cpu";
                        enable-method = "spin-table";
+                       cpu-release-addr = /bits/ 64 <0>;
                        reg = <0x0>;
                        qcom,acc = <&acc4>;
                        qcom,saw = <&saw4>;
                        compatible = "arm,cortex-a53";
                        device_type = "cpu";
                        enable-method = "spin-table";
+                       cpu-release-addr = /bits/ 64 <0>;
                        reg = <0x1>;
                        next-level-cache = <&l2_0>;
                        qcom,acc = <&acc5>;
                        compatible = "arm,cortex-a53";
                        device_type = "cpu";
                        enable-method = "spin-table";
+                       cpu-release-addr = /bits/ 64 <0>;
                        reg = <0x2>;
                        next-level-cache = <&l2_0>;
                        qcom,acc = <&acc6>;
                        compatible = "arm,cortex-a53";
                        device_type = "cpu";
                        enable-method = "spin-table";
+                       cpu-release-addr = /bits/ 64 <0>;
                        reg = <0x3>;
                        next-level-cache = <&l2_0>;
                        qcom,acc = <&acc7>;
                                bias-pull-down;
                        };
 
-                       blsp_uart1_default: blsp-uart1-default-state {
-                               pins = "gpio0", "gpio1", "gpio2", "gpio3";
-                               function = "blsp_uart1";
-                               drive-strength = <16>;
-                               bias-disable;
+                       blsp_uart1_console_default: blsp-uart1-console-default-state {
+                               tx-pins {
+                                       pins = "gpio0";
+                                       function = "blsp_uart1";
+                                       drive-strength = <16>;
+                                       bias-disable;
+                                       bootph-all;
+                               };
+
+                               rx-pins {
+                                       pins = "gpio1";
+                                       function = "blsp_uart1";
+                                       drive-strength = <16>;
+                                       bias-pull-up;
+                                       bootph-all;
+                               };
                        };
 
-                       blsp_uart1_sleep: blsp-uart1-sleep-state {
-                               pins = "gpio0", "gpio1", "gpio2", "gpio3";
+                       blsp_uart1_console_sleep: blsp-uart1-console-sleep-state {
+                               pins = "gpio0", "gpio1";
                                function = "gpio";
                                drive-strength = <2>;
                                bias-pull-down;
                        };
 
-                       blsp_uart2_default: blsp-uart2-default-state {
-                               pins = "gpio4", "gpio5";
-                               function = "blsp_uart2";
-                               drive-strength = <16>;
-                               bias-disable;
+                       blsp_uart2_console_default: blsp-uart2-console-default-state {
+                               tx-pins {
+                                       pins = "gpio4";
+                                       function = "blsp_uart2";
+                                       drive-strength = <16>;
+                                       bias-disable;
+                                       bootph-all;
+                               };
+
+                               rx-pins {
+                                       pins = "gpio5";
+                                       function = "blsp_uart2";
+                                       drive-strength = <16>;
+                                       bias-pull-up;
+                                       bootph-all;
+                               };
                        };
 
-                       blsp_uart2_sleep: blsp-uart2-sleep-state {
+                       blsp_uart2_console_sleep: blsp-uart2-console-sleep-state {
                                pins = "gpio4", "gpio5";
                                function = "gpio";
                                drive-strength = <2>;
                        reg = <0x01800000 0x80000>;
                        clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
                                 <&sleep_clk>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
                                 <0>,
                                 <0>,
                                 <0>;
                                              "core";
                                assigned-clocks = <&gcc BYTE0_CLK_SRC>,
                                                  <&gcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                phys = <&mdss_dsi0_phy>;
                                status = "disabled";
                                              "core";
                                assigned-clocks = <&gcc BYTE1_CLK_SRC>,
                                                  <&gcc PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
                                phys = <&mdss_dsi1_phy>;
                                status = "disabled";
 
                        clock-names = "core", "iface";
                        dmas = <&blsp_dma 0>, <&blsp_dma 1>;
                        dma-names = "tx", "rx";
-                       pinctrl-0 = <&blsp_uart1_default>;
-                       pinctrl-1 = <&blsp_uart1_sleep>;
-                       pinctrl-names = "default", "sleep";
                        status = "disabled";
                };
 
                        clock-names = "core", "iface";
                        dmas = <&blsp_dma 2>, <&blsp_dma 3>;
                        dma-names = "tx", "rx";
-                       pinctrl-0 = <&blsp_uart2_default>;
-                       pinctrl-1 = <&blsp_uart2_sleep>;
-                       pinctrl-names = "default", "sleep";
                        status = "disabled";
                };
 
index af4c341e2533ef2cca593e0dc97003334d3fd6b7..273e79fb75695af1fd7a6f77273b95fe3b913fac 100644 (file)
@@ -1,9 +1,12 @@
 // SPDX-License-Identifier: BSD-3-Clause
 /* Copyright (c) 2022, The Linux Foundation. All rights reserved. */
 
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8953.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interconnect/qcom,msm8953.h>
+#include <dt-bindings/interconnect/qcom,rpm-icc.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/soc/qcom,apr.h>
@@ -44,6 +47,8 @@
                        reg = <0x0>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
+                       interconnects = <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &bimc SLV_EBI RPM_ACTIVE_TAG>;
                        next-level-cache = <&l2_0>;
                        #cooling-cells = <2>;
                };
@@ -54,6 +59,8 @@
                        reg = <0x1>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
+                       interconnects = <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &bimc SLV_EBI RPM_ACTIVE_TAG>;
                        next-level-cache = <&l2_0>;
                        #cooling-cells = <2>;
                };
@@ -64,6 +71,8 @@
                        reg = <0x2>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
+                       interconnects = <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &bimc SLV_EBI RPM_ACTIVE_TAG>;
                        next-level-cache = <&l2_0>;
                        #cooling-cells = <2>;
                };
@@ -74,6 +83,8 @@
                        reg = <0x3>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
+                       interconnects = <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &bimc SLV_EBI RPM_ACTIVE_TAG>;
                        next-level-cache = <&l2_0>;
                        #cooling-cells = <2>;
                };
@@ -84,6 +95,8 @@
                        reg = <0x100>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
+                       interconnects = <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &bimc SLV_EBI RPM_ACTIVE_TAG>;
                        next-level-cache = <&l2_1>;
                        #cooling-cells = <2>;
                };
                        reg = <0x101>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
+                       interconnects = <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &bimc SLV_EBI RPM_ACTIVE_TAG>;
                        next-level-cache = <&l2_1>;
                        #cooling-cells = <2>;
                };
                        reg = <0x102>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
+                       interconnects = <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &bimc SLV_EBI RPM_ACTIVE_TAG>;
                        next-level-cache = <&l2_1>;
                        #cooling-cells = <2>;
                };
                        reg = <0x103>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
+                       interconnects = <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &bimc SLV_EBI RPM_ACTIVE_TAG>;
                        next-level-cache = <&l2_1>;
                        #cooling-cells = <2>;
                };
                        clock-names = "core";
                };
 
+               bimc: interconnect@400000 {
+                       compatible = "qcom,msm8953-bimc";
+                       reg = <0x00400000 0x5a000>;
+
+                       #interconnect-cells = <2>;
+               };
+
                tsens0: thermal-sensor@4a9000 {
                        compatible = "qcom,msm8953-tsens", "qcom,tsens-v2";
                        reg = <0x004a9000 0x1000>, /* TM */
                        reg = <0x004ab000 0x4>;
                };
 
+               pcnoc: interconnect@500000 {
+                       compatible = "qcom,msm8953-pcnoc";
+                       reg = <0x00500000 0x12080>;
+
+                       clocks = <&gcc GCC_PCNOC_USB3_AXI_CLK>;
+                       clock-names = "pcnoc_usb3_axi";
+
+                       #interconnect-cells = <2>;
+               };
+
+               snoc: interconnect@580000 {
+                       compatible = "qcom,msm8953-snoc";
+                       reg = <0x00580000 0x16080>;
+
+                       #interconnect-cells = <2>;
+
+                       snoc_mm: interconnect-snoc {
+                               compatible = "qcom,msm8953-snoc-mm";
+
+                               #interconnect-cells = <2>;
+                       };
+               };
+
                tlmm: pinctrl@1000000 {
                        compatible = "qcom,msm8953-pinctrl";
                        reg = <0x01000000 0x300000>;
                                bias-disable;
                        };
 
+                       uart_5_default: uart-5-default-state {
+                               pins = "gpio16", "gpio17", "gpio18", "gpio19";
+                               function = "blsp_uart5";
+                               drive-strength = <16>;
+                               bias-disable;
+                       };
+
+                       uart_5_sleep: uart-5-sleep-state {
+                               pins = "gpio16", "gpio17", "gpio18", "gpio19";
+                               function = "gpio";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
                        wcnss_pin_a: wcnss-active-state {
 
                                wcss-wlan2-pins {
                        #power-domain-cells = <1>;
                        clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
                                 <&sleep_clk>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi1_phy 1>,
-                                <&mdss_dsi1_phy 0>;
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>;
                        clock-names = "xo",
                                      "sleep",
                                      "dsi0pll",
                        interrupt-controller;
                        #interrupt-cells = <1>;
 
+                       interconnects = <&snoc_mm MAS_MDP RPM_ALWAYS_TAG
+                                        &bimc SLV_EBI RPM_ALWAYS_TAG>,
+                                       <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &pcnoc SLV_DISP_SS_CFG RPM_ACTIVE_TAG>;
+                       interconnect-names = "mdp0-mem",
+                                            "cpu-cfg";
+
                        clocks = <&gcc GCC_MDSS_AHB_CLK>,
                                 <&gcc GCC_MDSS_AXI_CLK>,
                                 <&gcc GCC_MDSS_VSYNC_CLK>,
 
                                assigned-clocks = <&gcc BYTE0_CLK_SRC>,
                                                  <&gcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                clocks = <&gcc GCC_MDSS_MDP_CLK>,
                                         <&gcc GCC_MDSS_AHB_CLK>,
 
                                assigned-clocks = <&gcc BYTE1_CLK_SRC>,
                                                  <&gcc PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>,
-                                                        <&mdss_dsi1_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                clocks = <&gcc GCC_MDSS_MDP_CLK>,
                                         <&gcc GCC_MDSS_AHB_CLK>,
                                      "alwayson";
                        power-domains = <&gcc OXILI_GX_GDSC>;
 
+                       interconnects = <&bimc MAS_OXILI RPM_ALWAYS_TAG
+                                        &bimc SLV_EBI RPM_ALWAYS_TAG>,
+                                       <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &pcnoc SLV_GPU_CFG RPM_ACTIVE_TAG>;
+
                        iommus = <&gpu_iommu 0>;
                        operating-points-v2 = <&gpu_opp_table>;
 
                                          <&gcc GCC_USB30_MASTER_CLK>;
                        assigned-clock-rates = <19200000>, <133330000>;
 
+                       interconnects = <&pcnoc MAS_USB3 RPM_ALWAYS_TAG
+                                        &bimc SLV_EBI RPM_ALWAYS_TAG>,
+                                       <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &pcnoc SLV_USB3 RPM_ACTIVE_TAG>;
+                       interconnect-names = "usb-ddr",
+                                            "apps-usb";
+
                        power-domains = <&gcc USB30_GDSC>;
 
                        qcom,select-utmi-as-pipe-clk;
                                 <&rpmcc RPM_SMD_XO_CLK_SRC>;
                        clock-names = "iface", "core", "xo";
 
+                       interconnects = <&pcnoc MAS_SDCC_1 RPM_ALWAYS_TAG
+                                        &bimc SLV_EBI RPM_ALWAYS_TAG>,
+                                       <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &pcnoc SLV_SDCC_1 RPM_ACTIVE_TAG>;
+                       interconnect-names = "sdhc-ddr",
+                                            "cpu-sdhc";
+
                        power-domains = <&rpmpd MSM8953_VDDCX>;
                        operating-points-v2 = <&sdhc1_opp_table>;
 
 
                                opp-25000000 {
                                        opp-hz = /bits/ 64 <25000000>;
+                                       opp-peak-kBps = <200000>, <100000>;
+                                       opp-avg-kBps = <65360>, <32768>;
                                        required-opps = <&rpmpd_opp_low_svs>;
                                };
 
                                opp-50000000 {
                                        opp-hz = /bits/ 64 <50000000>;
+                                       opp-peak-kBps = <400000>, <200000>;
+                                       opp-avg-kBps = <130718>, <65360>;
                                        required-opps = <&rpmpd_opp_svs>;
                                };
 
                                opp-100000000 {
                                        opp-hz = /bits/ 64 <100000000>;
+                                       opp-peak-kBps = <400000>, <400000>;
+                                       opp-avg-kBps = <130718>, <65360>;
                                        required-opps = <&rpmpd_opp_svs>;
                                };
 
                                opp-192000000 {
                                        opp-hz = /bits/ 64 <192000000>;
+                                       opp-peak-kBps = <800000>, <600000>;
+                                       opp-avg-kBps = <261438>, <130718>;
                                        required-opps = <&rpmpd_opp_nom>;
                                };
 
                                opp-384000000 {
                                        opp-hz = /bits/ 64 <384000000>;
+                                       opp-peak-kBps = <800000>, <800000>;
+                                       opp-avg-kBps = <261438>, <300000>;
                                        required-opps = <&rpmpd_opp_nom>;
                                };
                        };
                                 <&rpmcc RPM_SMD_XO_CLK_SRC>;
                        clock-names = "iface", "core", "xo";
 
+                       interconnects = <&pcnoc MAS_SDCC_2 RPM_ALWAYS_TAG
+                                        &bimc SLV_EBI RPM_ALWAYS_TAG>,
+                                       <&bimc MAS_APPS_PROC RPM_ACTIVE_TAG
+                                        &pcnoc SLV_SDCC_2 RPM_ACTIVE_TAG>;
+                       interconnect-names = "sdhc-ddr",
+                                            "cpu-sdhc";
+
                        power-domains = <&rpmpd MSM8953_VDDCX>;
                        operating-points-v2 = <&sdhc2_opp_table>;
 
 
                                opp-25000000 {
                                        opp-hz = /bits/ 64 <25000000>;
+                                       opp-peak-kBps = <200000>, <100000>;
+                                       opp-avg-kBps = <65360>, <32768>;
                                        required-opps = <&rpmpd_opp_low_svs>;
                                };
 
                                opp-50000000 {
                                        opp-hz = /bits/ 64 <50000000>;
+                                       opp-peak-kBps = <400000>, <400000>;
+                                       opp-avg-kBps = <130718>, <65360>;
                                        required-opps = <&rpmpd_opp_svs>;
                                };
 
                                opp-100000000 {
                                        opp-hz = /bits/ 64 <100000000>;
+                                       opp-peak-kBps = <800000>, <400000>;
+                                       opp-avg-kBps = <130718>, <130718>;
                                        required-opps = <&rpmpd_opp_svs>;
                                };
 
                                opp-177770000 {
                                        opp-hz = /bits/ 64 <177770000>;
+                                       opp-peak-kBps = <600000>, <600000>;
+                                       opp-avg-kBps = <261438>, <130718>;
                                        required-opps = <&rpmpd_opp_nom>;
                                };
 
                                opp-200000000 {
                                        opp-hz = /bits/ 64 <200000000>;
+                                       opp-peak-kBps = <800000>, <800000>;
+                                       opp-avg-kBps = <261438>, <130718>;
                                        required-opps = <&rpmpd_opp_nom>;
                                };
                        };
                        qcom,controlled-remotely;
                };
 
+               uart_5: serial@7aef000 {
+                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+                       reg = <0x07aef000 0x200>;
+                       interrupts = <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&gcc GCC_BLSP2_UART1_APPS_CLK>,
+                                <&gcc GCC_BLSP2_AHB_CLK>;
+                       clock-names = "core",
+                                     "iface";
+                       dmas = <&blsp2_dma 0>, <&blsp2_dma 1>;
+                       dma-names = "tx", "rx";
+
+                       pinctrl-0 = <&uart_5_default>;
+                       pinctrl-1 = <&uart_5_sleep>;
+                       pinctrl-names = "default", "sleep";
+
+                       status = "disabled";
+               };
+
                i2c_5: i2c@7af5000 {
                        compatible = "qcom,i2c-qup-v2.2.1";
                        reg = <0x07af5000 0x600>;
                                                        #sound-dai-cells = <1>;
 
                                                        dai@0 {
-                                                               reg = <0>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
                                                                direction = <Q6ASM_DAI_RX>;
                                                        };
                                                        dai@1 {
-                                                               reg = <1>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
                                                                direction = <Q6ASM_DAI_TX>;
                                                        };
                                                        dai@2 {
-                                                               reg = <2>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
                                                                direction = <Q6ASM_DAI_RX>;
                                                        };
                                                        dai@3 {
-                                                               reg = <3>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>;
                                                                direction = <Q6ASM_DAI_RX>;
                                                                is-compress-dai;
                                                        };
index d036f31dfdca162debe18ed6ed9a7767a34aced6..e2ac2fd6882fcf47e846a92d45e0fcb9beba633a 100644 (file)
@@ -6,6 +6,7 @@
  * Copyright (c) 2022, Marijn Suijten <marijn.suijten@somainline.org>
  */
 
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8976.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
 #include <dt-bindings/gpio/gpio.h>
 
                        clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
                                 <&rpmcc RPM_SMD_XO_A_CLK_SRC>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi1_phy 1>,
-                                <&mdss_dsi1_phy 0>;
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>;
                        clock-names = "xo",
                                      "xo_a",
                                      "dsi0pll",
 
                                assigned-clocks = <&gcc GCC_MDSS_BYTE0_CLK_SRC>,
                                                  <&gcc GCC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                phys = <&mdss_dsi0_phy>;
 
 
                                assigned-clocks = <&gcc GCC_MDSS_BYTE1_CLK_SRC>,
                                                  <&gcc GCC_MDSS_PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>,
-                                                        <&mdss_dsi1_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                phys = <&mdss_dsi1_phy>;
 
index 4520d5d51a2998580d9bf8ed27cc662939ad82c2..6a231afad85d4a0b5d70fffbaca2fab7579b24aa 100644 (file)
 
 &cpu0 {
        enable-method = "spin-table";
+       cpu-release-addr = /bits/ 64 <0>;
 };
 
 &cpu1 {
        enable-method = "spin-table";
+       cpu-release-addr = /bits/ 64 <0>;
 };
 
 &cpu2 {
        enable-method = "spin-table";
+       cpu-release-addr = /bits/ 64 <0>;
 };
 
 &cpu3 {
        enable-method = "spin-table";
+       cpu-release-addr = /bits/ 64 <0>;
 };
 
 &cpu4 {
        enable-method = "spin-table";
+       cpu-release-addr = /bits/ 64 <0>;
 };
 
 &cpu5 {
        enable-method = "spin-table";
+       cpu-release-addr = /bits/ 64 <0>;
 };
 
 &pm8994_resin {
index 38035e0db80be9c4829b67233ba5c4ce8a2baa21..63ab564655bc8babcb2090ec2bd185e0ff35f4d4 100644 (file)
        #size-cells = <0>;
 
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                };
+
+               vreg_lvs2a: lvs2 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+               };
        };
 };
 
index dfe75119b8d25fce4a6a14e0ab4f07414aadc8c5..220eeb31fdc70b89b3e237d1f6643c465bda5238 100644 (file)
@@ -41,6 +41,8 @@
 
 &slpi_pil {
        firmware-name = "qcom/msm8996/oneplus3/slpi.mbn";
+       px-supply = <&vreg_lvs2a>;
+
        status = "okay";
 };
 
index 51fce65e89f1142cff98fcdecde9744b87decdc3..f772618e80c702cb8995965dffbf5992a9f66490 100644 (file)
@@ -42,6 +42,8 @@
 
 &slpi_pil {
        firmware-name = "qcom/msm8996/oneplus3t/slpi.mbn";
+       px-supply = <&vreg_lvs2a>;
+
        status = "okay";
 };
 
index dbad8f57f2fa34575440caa7f0a19d5893efcfbb..bd3f39e1b98fb6360950b646fd05c6b7036dd0d5 100644 (file)
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
 &sound {
        compatible = "qcom,apq8096-sndcard";
        model = "gemini";
-       audio-routing = "RX_BIAS", "MCLK",
-               "MM_DL1",  "MultiMedia1 Playback",
-               "MM_DL2",  "MultiMedia2 Playback",
-               "MultiMedia3 Capture", "MM_UL3";
+       audio-routing = "RX_BIAS", "MCLK";
 
        mm1-dai-link {
                link-name = "MultiMedia1";
index 4719e1fc70d2cb15a6a63d3e28622ae078a367ef..ede851fbf628428f5740ca8add65ffc05360cc62 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8996.h>
 #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
                        clocks = <&xo_board>,
                                 <&gcc GPLL0>,
                                 <&gcc GCC_MMSS_NOC_CFG_AHB_CLK>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi1_phy 1>,
-                                <&mdss_dsi1_phy 0>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
                                 <&mdss_hdmi_phy>;
                        clock-names = "xo",
                                      "gpll0",
                                              "core_mmss",
                                              "pixel",
                                              "core";
-                               assigned-clocks = <&mmcc BYTE0_CLK_SRC>, <&mmcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clocks = <&mmcc BYTE0_CLK_SRC>,
+                                                 <&mmcc PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                phys = <&mdss_dsi0_phy>;
                                status = "disabled";
                                              "core_mmss",
                                              "pixel",
                                              "core";
-                               assigned-clocks = <&mmcc BYTE1_CLK_SRC>, <&mmcc PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
+                               assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
+                                                 <&mmcc PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                phys = <&mdss_dsi1_phy>;
                                status = "disabled";
index 5e3fd1637f449675411b556b9cace21383b1935d..443599a5a5dd573a1ac2a83f64c5016c36d27020 100644 (file)
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
index 5e3b9130e9c2c9e58c334e5ff2a340b82bbfbcfe..33d84ac541e1c52028ffa4d86d602e0dc876988f 100644 (file)
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
index f1ceaedd9520c13df0f6cf086907b355264ddc80..f5558495cb02e44597591331d5d28a488b120204 100644 (file)
 &qusb2phy {
        status = "okay";
 
+       vdd-supply = <&vreg_l1a_0p875>;
        vdda-pll-supply = <&vreg_l12a_1p8>;
        vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
 };
index 901f6ac0084db3df02608b2e52a8e8837aad7d96..c11b972771c3881a57ba5a4dfbdcea487da7c6f1 100644 (file)
        };
 };
 
+&venus {
+       firmware-name = "qcom/msm8998/LENOVO/81F1/qcvss8998.mbn";
+
+       status = "okay";
+};
+
 &wifi {
-       qcom,ath10k-calibration-variant = "Lenovo_Miix630";
+       qcom,calibration-variant = "Lenovo_Miix630";
 };
index 7c77612fb99026e42adf125c538735b3ef6e57d4..ad425267e9021174e95e7356b0b3c491fd5873aa 100644 (file)
 &qusb2phy {
        status = "okay";
 
+       vdd-supply = <&vreg_l1a_0p875>;
        vdda-pll-supply = <&vreg_l12a_1p8>;
        vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
 };
index d8cc0d729e99c5ead32f38c12bf65a930d369c08..3650f2501886bdde23c500bf5fce205de33fccc4 100644 (file)
 &qusb2phy {
        status = "okay";
 
+       vdd-supply = <&vreg_l1a_0p875>;
        vdda-pll-supply = <&vreg_l12a_1p8>;
        vdda-phy-dpdm-supply = <&vreg_l24a_3p075>;
 };
index c2caad85c668df2ebe900bc560e39480ae03e353..58cee37cb8eecbdd43a474d548dcae1606aba6c7 100644 (file)
@@ -2,6 +2,7 @@
 /* Copyright (c) 2016, The Linux Foundation. All rights reserved. */
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-msm8998.h>
 #include <dt-bindings/clock/qcom,gpucc-msm8998.h>
 #include <dt-bindings/clock/qcom,mmcc-msm8998.h>
                                      "gpll0_div";
                        clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
                                 <&gcc GCC_MMSS_GPLL0_CLK>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi1_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_hdmi_phy 0>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_hdmi_phy>,
                                 <0>,
                                 <0>,
                                 <&gcc GCC_MMSS_GPLL0_DIV_CLK>;
                                compatible = "qcom,msm8998-dpu";
                                reg = <0x0c901000 0x8f000>,
                                      <0x0c9a8e00 0xf0>,
-                                     <0x0c9b0000 0x2008>,
-                                     <0x0c9b8000 0x1040>;
+                                     <0x0c9b0000 0x3000>,
+                                     <0x0c9b8000 0x3000>;
                                reg-names = "mdp",
                                            "regdma",
                                            "vbif",
                                              "bus";
                                assigned-clocks = <&mmcc BYTE0_CLK_SRC>,
                                                  <&mmcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmpd MSM8998_VDDCX>;
                                              "bus";
                                assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
                                                  <&mmcc PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>,
-                                                        <&mdss_dsi1_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmpd MSM8998_VDDCX>;
index 42b3575b36ff4d37df11ccb5ed68e965e3716300..77809c3534a744f1aa4d8941736e590b9cdb28c5 100644 (file)
                #address-cells = <1>;
                #size-cells = <0>;
 
+               pm8937_pwm: pwm {
+                       compatible = "qcom,pm8937-pwm", "qcom,pm8916-pwm";
+
+                       #pwm-cells = <2>;
+
+                       status = "disabled";
+               };
+
                pm8937_spmi_regulators: regulators {
                        compatible = "qcom,pm8937-regulators";
                };
index f0746123e594d5ce5cc314c956eaca11556a9211..f49ac1c1f8a3ee652d70fab1bb1ad03a5eec7c3c 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <dt-bindings/clock/qcom,dispcc-qcm2290.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-qcm2290.h>
 #include <dt-bindings/clock/qcom,qcm2290-gpucc.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
                                bias-disable;
                        };
 
+                       qup_uart3_default: qup-uart3-default-state {
+                               pins = "gpio8", "gpio9", "gpio10", "gpio11";
+                               function = "qup3";
+                               drive-strength = <2>;
+                               bias-disable;
+                       };
+
                        qup_uart4_default: qup-uart4-default-state {
                                pins = "gpio12", "gpio13";
                                function = "qup4";
                        #interconnect-cells = <2>;
                };
 
+               cryptobam: dma-controller@1b04000 {
+                       compatible = "qcom,bam-v1.7.0";
+                       reg = <0x0 0x01b04000 0x0 0x24000>;
+                       interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&rpmcc RPM_SMD_CE1_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+                       qcom,controlled-remotely;
+                       iommus = <&apps_smmu 0x0084 0x11>,
+                                <&apps_smmu 0x0086 0x11>;
+               };
+
+               crypto: crypto@1b3a000 {
+                       compatible = "qcom,qcm2290-qce", "qcom,ipq4019-qce", "qcom,qce";
+                       reg = <0x0 0x01b3a000 0x0 0x6000>;
+                       clocks = <&rpmcc RPM_SMD_CE1_CLK>;
+                       clock-names = "core";
+                       dmas = <&cryptobam 6>, <&cryptobam 7>;
+                       dma-names = "rx", "tx";
+                       iommus = <&apps_smmu 0x0084 0x11>,
+                                <&apps_smmu 0x0086 0x11>;
+               };
+
                qfprom@1b44000 {
                        compatible = "qcom,qcm2290-qfprom", "qcom,qfprom";
                        reg = <0x0 0x01b44000 0x0 0x3000>;
                                interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
                                                <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
-                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                                                &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
                                #address-cells = <1>;
                                interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
                                                <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
-                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                                                &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
                                status = "disabled";
                                interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
                                                <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
-                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                                                &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
                                #address-cells = <1>;
                                interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
                                                <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
-                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                                                &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
                                #address-cells = <1>;
                                interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
                                                <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
-                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                                                &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
                                #address-cells = <1>;
                                status = "disabled";
                        };
 
+                       uart3: serial@4a8c000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0x04a8c000 0x0 0x4000>;
+                               interrupts = <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart3_default>;
+                               pinctrl-names = "default";
+                               interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
+                                                &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
+                                               <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
+                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               status = "disabled";
+                       };
+
                        i2c4: i2c@4a90000 {
                                compatible = "qcom,geni-i2c";
                                reg = <0x0 0x04a90000 0x0 0x4000>;
                                interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
                                                <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
-                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                                                &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
                                #address-cells = <1>;
                                interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
                                                <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
-                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                                                &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
                                status = "disabled";
                                interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
                                                 &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
                                                <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
-                                                &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+                                                &config_noc SLAVE_QUP_0 RPM_ALWAYS_TAG>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
                                #address-cells = <1>;
                        mdp: display-controller@5e01000 {
                                compatible = "qcom,qcm2290-dpu";
                                reg = <0x0 0x05e01000 0x0 0x8f000>,
-                                     <0x0 0x05eb0000 0x0 0x2008>;
+                                     <0x0 0x05eb0000 0x0 0x3000>;
                                reg-names = "mdp",
                                            "vbif";
 
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmpd QCM2290_VDDCX>;
                                 <&rpmcc RPM_SMD_XO_A_CLK_SRC>,
                                 <&gcc GCC_DISP_GPLL0_CLK_SRC>,
                                 <&gcc GCC_DISP_GPLL0_DIV_CLK_SRC>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>;
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
                        clock-names = "bi_tcxo",
                                      "bi_tcxo_ao",
                                      "gcc_disp_gpll0_clk_src",
index 769c66cb5d19dbf50e137b3a72de2e36ec4daecf..e115b6a52b299ef663ccfb614785f8f89091f39d 100644 (file)
@@ -14,6 +14,8 @@
 #include <dt-bindings/leds/common.h>
 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
+#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
 #include "sc7280.dtsi"
 #include "pm7250b.dtsi"
 #include "pm7325.dtsi"
                                        reg = <1>;
 
                                        pmic_glink_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_dwc3_ss>;
+                                               remote-endpoint = <&redriver_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_sbu: endpoint {
+                                               remote-endpoint = <&ocp96011_sbu_mux>;
                                        };
                                };
                        };
                vin-supply = <&vreg_s8b>;
        };
 
+       vreg_oled_dvdd: regulator-oled-dvdd {
+               compatible = "regulator-fixed";
+               regulator-name = "oled_dvdd";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+
+               gpio = <&tlmm 51 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_s1b>;
+
+               regulator-boot-on;
+       };
+
+       vreg_oled_vci: regulator-oled-vci {
+               compatible = "regulator-fixed";
+               regulator-name = "oled_vci";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+
+               gpio = <&pm8350c_gpios 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_l13c>;
+
+               regulator-boot-on;
+       };
+
+       vreg_usb_redrive_1v8: regulator-usb-redrive-1v8 {
+               compatible = "regulator-fixed";
+               regulator-name = "USB_REDRIVE_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 61 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_bob>;
+
+               regulator-boot-on;
+
+               pinctrl-0 = <&usb_redrive_1v8_en_default>;
+               pinctrl-names = "default";
+       };
+
        reserved-memory {
                cont_splash_mem: cont-splash@e1000000 {
                        reg = <0x0 0xe1000000 0x0 0x2300000>;
        };
 };
 
-&dispcc {
-       /* Disable for now so simple-framebuffer continues working */
-       status = "disabled";
-};
-
 &gcc {
        protected-clocks = <GCC_CFG_NOC_LPASS_CLK>,
                           <GCC_EDP_CLKREF_EN>,
        status = "okay";
 };
 
+&gpu {
+       status = "okay";
+};
+
+&gpu_zap_shader {
+       firmware-name = "qcom/qcm6490/fairphone5/a660_zap.mbn";
+};
+
 &i2c1 {
        status = "okay";
 
        };
 
        /* Pixelworks @ 26 */
-       /* FSA4480 USB audio switch @ 42 */
+
+       typec-mux@42 {
+               compatible = "ocs,ocp96011", "fcs,fsa4480";
+               reg = <0x42>;
+
+               interrupts-extended = <&tlmm 7 IRQ_TYPE_LEVEL_LOW>;
+
+               vcc-supply = <&vreg_bob>;
+
+               mode-switch;
+               orientation-switch;
+
+               port {
+                       ocp96011_sbu_mux: endpoint {
+                               remote-endpoint = <&pmic_glink_sbu>;
+                               data-lanes = <1 0>;
+                       };
+               };
+       };
+
        /* AW86927FCR haptics @ 5a */
 };
 
 &i2c4 {
        status = "okay";
 
-       /* PTN36502 USB redriver @ 1a */
+       typec-mux@1a {
+               compatible = "nxp,ptn36502";
+               reg = <0x1a>;
+
+               vdd18-supply = <&vreg_usb_redrive_1v8>;
+
+               retimer-switch;
+               orientation-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               redriver_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               redriver_ss_in: endpoint {
+                                       remote-endpoint = <&usb_dp_qmpphy_out>;
+                               };
+                       };
+               };
+       };
 };
 
 &i2c9 {
        status = "okay";
 };
 
+&mdss {
+       status = "okay";
+};
+
+&mdss_dp {
+       status = "okay";
+};
+
+&mdss_dp_out {
+       data-lanes = <0 1>;
+};
+
+&mdss_dsi {
+       vdda-supply = <&vreg_l6b>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "fairphone,fp5-rm692e5-boe", "raydium,rm692e5";
+               reg = <0>;
+
+               reset-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>;
+
+               vci-supply = <&vreg_oled_vci>;
+               vddio-supply = <&vreg_l12c>;
+               dvdd-supply = <&vreg_oled_dvdd>;
+
+               pinctrl-0 = <&disp_reset_n_active>, <&mdp_vsync>;
+               pinctrl-1 = <&disp_reset_n_suspend>, <&mdp_vsync>;
+               pinctrl-names = "default", "sleep";
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&mdss_dsi0_out>;
+                       };
+               };
+       };
+};
+
+&mdss_dsi0_out {
+       data-lanes = <0 1 2 3>;
+       remote-endpoint = <&panel_in>;
+};
+
+&mdss_dsi_phy {
+       vdds-supply = <&vreg_l10c>;
+       status = "okay";
+};
+
 &pm7250b_adc {
        pinctrl-0 = <&pm7250b_adc_default>;
        pinctrl-names = "default";
        status = "okay";
 };
 
+&sound {
+       compatible = "fairphone,fp5-sndcard";
+       model = "Fairphone 5";
+
+       mm1-dai-link {
+               link-name = "MultiMedia1";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
+               };
+       };
+
+       displayport-rx-dai-link {
+               link-name = "DisplayPort Playback";
+
+               codec {
+                       sound-dai = <&mdss_dp>;
+               };
+
+               cpu {
+                       sound-dai = <&q6afedai DISPLAY_PORT_RX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+       };
+};
+
 &spi13 {
        status = "okay";
 
-       /* Goodix touchscreen @ 0 */
+       touchscreen@0 {
+               compatible = "goodix,gt9897";
+               reg = <0>;
+               interrupts-extended = <&tlmm 81 IRQ_TYPE_LEVEL_LOW>;
+               reset-gpios = <&tlmm 105 GPIO_ACTIVE_LOW>;
+               avdd-supply = <&vreg_l3c>;
+               vddio-supply = <&vreg_l2c>;
+               spi-max-frequency = <1000000>;
+               touchscreen-size-x = <1224>;
+               touchscreen-size-y = <2700>;
+       };
 };
 
 &tlmm {
                bias-disable;
        };
 
+       disp_reset_n_active: disp-reset-n-active-state {
+               pins = "gpio44";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-disable;
+       };
+
+       disp_reset_n_suspend: disp-reset-n-suspend-state {
+               pins = "gpio44";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
        hall_sensor_default: hall-sensor-default-state {
                pins = "gpio155";
                function = "gpio";
                bias-pull-up;
        };
 
+       mdp_vsync: mdp-vsync-state {
+               pins = "gpio80";
+               function = "mdp_vsync";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
        pm8008_int_default: pm8008-int-default-state {
                pins = "gpio25";
                function = "gpio";
                function = "gpio";
                bias-pull-down;
        };
+
+       usb_redrive_1v8_en_default: usb-redrive-1v8-en-default-state {
+               pins = "gpio61";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-high;
+       };
 };
 
 &uart5 {
        remote-endpoint = <&pmic_glink_hs_in>;
 };
 
-&usb_1_dwc3_ss {
-       remote-endpoint = <&pmic_glink_ss_in>;
-};
-
 &usb_1_hsphy {
        vdda-pll-supply = <&vreg_l10c>;
        vdda18-supply = <&vreg_l1c>;
        status = "okay";
 };
 
+&usb_dp_qmpphy_out {
+       remote-endpoint = <&redriver_ss_in>;
+};
+
 &venus {
        firmware-name = "qcom/qcm6490/fairphone5/venus.mbn";
        status = "okay";
 };
 
 &wifi {
-       qcom,ath11k-calibration-variant = "Fairphone_5";
+       qcom,calibration-variant = "Fairphone_5";
        status = "okay";
 };
index 9209efcc49b57a853c4dd55ac52cd4dc98d7fe86..7a155ef6492e176390faa3f2dbe419f5cfa62f0d 100644 (file)
        };
 };
 
+&gcc {
+       protected-clocks = <GCC_AGGRE_NOC_PCIE_1_AXI_CLK> ,<GCC_PCIE_1_AUX_CLK>,
+                          <GCC_PCIE_1_AUX_CLK_SRC>, <GCC_PCIE_1_CFG_AHB_CLK>,
+                          <GCC_PCIE_1_MSTR_AXI_CLK>, <GCC_PCIE_1_PHY_RCHNG_CLK_SRC>,
+                          <GCC_PCIE_1_PIPE_CLK>, <GCC_PCIE_1_PIPE_CLK_SRC>,
+                          <GCC_PCIE_1_SLV_AXI_CLK>, <GCC_PCIE_1_SLV_Q2A_AXI_CLK>,
+                          <GCC_QSPI_CNOC_PERIPH_AHB_CLK>, <GCC_QSPI_CORE_CLK>,
+                          <GCC_QSPI_CORE_CLK_SRC>,<GCC_USB30_SEC_MASTER_CLK>,
+                          <GCC_USB30_SEC_MASTER_CLK_SRC>, <GCC_USB30_SEC_MOCK_UTMI_CLK>,
+                          <GCC_USB30_SEC_MOCK_UTMI_CLK_SRC>,
+                          <GCC_USB30_SEC_MOCK_UTMI_POSTDIV_CLK_SRC>, <GCC_USB30_SEC_SLEEP_CLK>,
+                          <GCC_USB3_SEC_PHY_AUX_CLK>, <GCC_USB3_SEC_PHY_AUX_CLK_SRC>,
+                          <GCC_USB3_SEC_PHY_COM_AUX_CLK>, <GCC_USB3_SEC_PHY_PIPE_CLK>,
+                          <GCC_USB3_SEC_PHY_PIPE_CLK_SRC>, <GCC_CFG_NOC_LPASS_CLK>,
+                          <GCC_MSS_GPLL0_MAIN_DIV_CLK_SRC>, <GCC_MSS_CFG_AHB_CLK>,
+                          <GCC_MSS_OFFLINE_AXI_CLK>, <GCC_MSS_SNOC_AXI_CLK>,
+                          <GCC_MSS_Q6_MEMNOC_AXI_CLK>, <GCC_MSS_Q6SS_BOOT_CLK_SRC>,
+                          <GCC_SEC_CTRL_CLK_SRC>, <GCC_WPSS_AHB_CLK>,
+                          <GCC_WPSS_AHB_BDG_MST_CLK>, <GCC_WPSS_RSCP_CLK>;
+};
+
 &gpu {
        status = "okay";
 };
 
 &wifi {
        memory-region = <&wlan_fw_mem>;
-       qcom,ath11k-calibration-variant = "Qualcomm_qcm6490idp";
+       qcom,calibration-variant = "Qualcomm_qcm6490idp";
 
        status = "okay";
 };
+
+&lpass_audiocc {
+       compatible = "qcom,qcm6490-lpassaudiocc";
+       /delete-property/ power-domains;
+};
index 75930f95769663f6ac3e2dd0c5f7d224085dda40..b9a0f7ac4d9c9d17b6b404641acd5d79880fba79 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: BSD-3-Clause
 /*
  * Copyright (c) 2023, Luca Weiss <luca.weiss@fairphone.com>
- * Copyright (c) 2024, Caleb Connolly <caleb@postmarketos.org>
+ * Copyright (c) 2024, Casey Connolly <casey.connolly@linaro.org>
  */
 
 /dts-v1/;
 };
 
 &wifi {
-       qcom,ath11k-calibration-variant = "SHIFTphone_8";
+       qcom,calibration-variant = "SHIFTphone_8";
 
        status = "okay";
 };
index f4abfad474ea62dea13d05eb874530947e1e8d3e..bb8b6c3ebd03f086b44493024ce782acf6f9e1ed 100644 (file)
                #size-cells = <2>;
                ranges;
 
+               aop_cmd_db_mem: aop-cmd-db@85f20000 {
+                       compatible = "qcom,cmd-db";
+                       reg = <0x0 0x85f20000 0x0 0x20000>;
+                       no-map;
+               };
+
                smem_region: smem@86000000 {
                        compatible = "qcom,smem";
                        reg = <0x0 0x86000000 0x0 0x200000>;
                        };
                };
 
+               rng@793000 {
+                       compatible = "qcom,qcs615-trng", "qcom,trng";
+                       reg = <0x0 0x00793000 0x0 0x1000>;
+               };
+
                sdhc_1: mmc@7c4000 {
                        compatible = "qcom,qcs615-sdhci", "qcom,sdhci-msm-v5";
                        reg = <0x0 0x007c4000 0x0 0x1000>,
                                      "bus_aggr_clk",
                                      "iface_clk",
                                      "core_clk_unipro",
-                                     "core_clk_ice",
                                      "ref_clk",
                                      "tx_lane0_sync_clk",
-                                     "rx_lane0_sync_clk";
+                                     "rx_lane0_sync_clk",
+                                     "ice_core_clk";
 
                        resets = <&gcc GCC_UFS_PHY_BCR>;
                        reset-names = "rst";
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <37500000>,
-                                                /bits/ 64 <75000000>,
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <0>,
-                                                /bits/ 64 <0>;
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <75000000>;
                                        required-opps = <&rpmhpd_opp_low_svs>;
                                };
 
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <75000000>,
-                                                /bits/ 64 <150000000>,
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <0>,
-                                                /bits/ 64 <0>;
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <150000000>;
                                        required-opps = <&rpmhpd_opp_svs>;
                                };
 
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <150000000>,
-                                                /bits/ 64 <300000000>,
                                                 /bits/ 64 <0>,
                                                 /bits/ 64 <0>,
-                                                /bits/ 64 <0>;
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <300000000>;
                                        required-opps = <&rpmhpd_opp_nom>;
                                };
                        };
                        status = "disabled";
                };
 
+               cryptobam: dma-controller@1dc4000 {
+                       compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0";
+                       reg = <0x0 0x01dc4000 0x0 0x24000>;
+                       interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+                       qcom,controlled-remotely;
+                       num-channels = <16>;
+                       qcom,num-ees = <4>;
+                       iommus = <&apps_smmu 0x0104 0x0011>;
+               };
+
+               crypto: crypto@1dfa000 {
+                       compatible = "qcom,qcs615-qce", "qcom,sm8150-qce", "qcom,qce";
+                       reg = <0x0 0x01dfa000 0x0 0x6000>;
+                       dmas = <&cryptobam 4>, <&cryptobam 5>;
+                       dma-names = "rx", "tx";
+                       iommus = <&apps_smmu 0x0104 0x0011>;
+                       interconnects = <&aggre1_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "memory";
+               };
+
                tcsr_mutex: hwlock@1f40000 {
                        compatible = "qcom,tcsr-mutex";
                        reg = <0x0 0x01f40000 0x0 0x20000>;
                        in-ports {
                                port {
                                        replicator0_in: endpoint {
-                                               remote-endpoint= <&tmc_etf_out>;
+                                               remote-endpoint = <&tmc_etf_out>;
                                        };
                                };
                        };
                                        reg = <1>;
 
                                        replicator0_out1: endpoint {
-                                               remote-endpoint= <&replicator1_in>;
+                                               remote-endpoint = <&replicator1_in>;
                                        };
                                };
                        };
                        in-ports {
                                port {
                                        replicator1_in: endpoint {
-                                               remote-endpoint= <&replicator0_out1>;
+                                               remote-endpoint = <&replicator0_out1>;
                                        };
                                };
                        };
                        out-ports {
                                port {
                                        replicator1_out: endpoint {
-                                               remote-endpoint= <&funnel_swao_in6>;
+                                               remote-endpoint = <&funnel_swao_in6>;
                                        };
                                };
                        };
                                        reg = <6>;
 
                                        funnel_swao_in6: endpoint {
-                                               remote-endpoint= <&replicator1_out>;
+                                               remote-endpoint = <&replicator1_out>;
                                        };
                                };
 
                                        reg = <7>;
 
                                        funnel_swao_in7: endpoint {
-                                               remote-endpoint= <&tpda_swao_out>;
+                                               remote-endpoint = <&tpda_swao_out>;
                                        };
                                };
                        };
                        in-ports {
                                port {
                                        tmc_etf_swao_in: endpoint {
-                                               remote-endpoint= <&funnel_swao_out>;
+                                               remote-endpoint = <&funnel_swao_out>;
                                        };
                                };
                        };
                        out-ports {
                                port {
                                        tmc_etf_swao_out: endpoint {
-                                               remote-endpoint= <&replicator_swao_in>;
+                                               remote-endpoint = <&replicator_swao_in>;
                                        };
                                };
                        };
                        interrupt-controller;
                };
 
-               aoss_qmp: power-controller@c300000 {
+               aoss_qmp: power-management@c300000 {
                        compatible = "qcom,qcs615-aoss-qmp", "qcom,aoss-qmp";
                        reg = <0x0 0x0c300000 0x0 0x400>;
                        interrupts = <GIC_SPI 389 IRQ_TYPE_EDGE_RISING>;
                        mboxes = <&apss_shared 0>;
 
                        #clock-cells = <0>;
-                       #power-domain-cells = <1>;
                };
 
                sram@c3f0000 {
                        #interrupt-cells = <4>;
                        #address-cells = <2>;
                        #size-cells = <0>;
-                       cell-index = <0>;
                        qcom,channel = <0>;
                        qcom,ee = <0>;
                };
                                snps,dis-u1-entry-quirk;
                                snps,dis-u2-entry-quirk;
                                snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
                                snps,dis_enblslpm_quirk;
                                snps,has-lpm-erratum;
                                snps,hird-threshold = /bits/ 8 <0x10>;
                                phy-names = "usb2-phy";
 
                                snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
                                snps,dis_enblslpm_quirk;
                                snps,has-lpm-erratum;
                                snps,hird-threshold = /bits/ 8 <0x10>;
diff --git a/src/arm64/qcom/qcs6490-rb3gen2-industrial-mezzanine.dtso b/src/arm64/qcom/qcs6490-rb3gen2-industrial-mezzanine.dtso
new file mode 100644 (file)
index 0000000..619a42b
--- /dev/null
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025, Qualcomm Innovation Center, Inc. All rights reserved.
+*/
+
+/dts-v1/;
+/plugin/;
+#include <dt-bindings/clock/qcom,gcc-sc7280.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+
+&spi11 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       st33htpm0: tpm@0 {
+               compatible = "st,st33htpm-spi", "tcg,tpm_tis-spi";
+               reg = <0>;
+               spi-max-frequency = <20000000>;
+       };
+};
diff --git a/src/arm64/qcom/qcs6490-rb3gen2-vision-mezzanine.dtso b/src/arm64/qcom/qcs6490-rb3gen2-vision-mezzanine.dtso
new file mode 100644 (file)
index 0000000..b9e4a52
--- /dev/null
@@ -0,0 +1,89 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024-2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+/*
+ * Camera Sensor overlay on top of rb3gen2 core kit.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/clock/qcom,camcc-sc7280.h>
+#include <dt-bindings/gpio/gpio.h>
+
+&camss {
+       vdda-phy-supply = <&vreg_l10c_0p88>;
+       vdda-pll-supply = <&vreg_l6b_1p2>;
+
+       status = "okay";
+
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* The port index denotes CSIPHY id i.e. csiphy3 */
+               port@3 {
+                       reg = <3>;
+
+                       csiphy3_ep: endpoint {
+                               clock-lanes = <7>;
+                               data-lanes = <0 1 2 3>;
+                               remote-endpoint = <&imx577_ep>;
+                       };
+               };
+       };
+};
+
+&cci1 {
+       status = "okay";
+};
+
+&cci1_i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       camera@1a {
+               compatible = "sony,imx577";
+
+               reg = <0x1a>;
+
+               reset-gpios = <&tlmm 78 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default", "suspend";
+               pinctrl-0 = <&cam2_default>;
+               pinctrl-1 = <&cam2_suspend>;
+
+               clocks = <&camcc CAM_CC_MCLK3_CLK>;
+               assigned-clocks = <&camcc CAM_CC_MCLK3_CLK>;
+               assigned-clock-rates = <24000000>;
+
+               dovdd-supply = <&vreg_l18b_1p8>;
+               avdd-supply = <&vph_pwr>;
+               dvdd-supply = <&vph_pwr>;
+
+               port {
+                       imx577_ep: endpoint {
+                               link-frequencies = /bits/ 64 <600000000>;
+                               data-lanes = <1 2 3 4>;
+                               remote-endpoint = <&csiphy3_ep>;
+                       };
+               };
+       };
+};
+
+&tlmm {
+       cam2_default: cam2-default-state {
+               pins = "gpio67";
+               function = "cam_mclk";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       cam2_suspend: cam2-suspend-state {
+               pins = "gpio67";
+               function = "cam_mclk";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+};
index 7a36c90ad4ec8b52f30b22b1621404857d6ef336..5fbcd48f2e2d839835fa464a8d5682f00557f82e 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: BSD-3-Clause
 /*
- * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
  */
 
 /dts-v1/;
@@ -9,6 +9,8 @@
 #define PM7250B_SID 8
 #define PM7250B_SID1 9
 
+#include <dt-bindings/iio/qcom,spmi-adc7-pmk8350.h>
+#include <dt-bindings/iio/qcom,spmi-adc7-pm7325.h>
 #include <dt-bindings/leds/common.h>
 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
@@ -34,6 +36,7 @@
 
        aliases {
                serial0 = &uart5;
+               serial1 = &uart7;
        };
 
        chosen {
 
                #address-cells = <1>;
                #size-cells = <0>;
+               orientation-gpios = <&tlmm 140 GPIO_ACTIVE_HIGH>;
 
                connector@0 {
                        compatible = "usb-c-connector";
                };
        };
 
+       thermal-zones {
+               sdm-skin-thermal {
+                       thermal-sensors = <&pmk8350_adc_tm 3>;
+
+                       trips {
+                               active-config0 {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+                       };
+               };
+
+               quiet-thermal {
+                       thermal-sensors = <&pmk8350_adc_tm 1>;
+
+                       trips {
+                               active-config0 {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+                       };
+               };
+
+               xo-thermal {
+                       thermal-sensors = <&pmk8350_adc_tm 0>;
+
+                       trips {
+                               active-config0 {
+                                       temperature = <125000>;
+                                       hysteresis = <1000>;
+                                       type = "passive";
+                               };
+                       };
+               };
+       };
+
        vph_pwr: vph-pwr-regulator {
                compatible = "regulator-fixed";
                regulator-name = "vph_pwr";
                regulator-min-microvolt = <3700000>;
                regulator-max-microvolt = <3700000>;
        };
+
+       wcn6750-pmu {
+               compatible = "qcom,wcn6750-pmu";
+               pinctrl-0 = <&bt_en>;
+               pinctrl-names = "default";
+               vddaon-supply = <&vreg_s7b_0p972>;
+               vddasd-supply = <&vreg_l11c_2p8>;
+               vddpmu-supply = <&vreg_s7b_0p972>;
+               vddrfa0p8-supply = <&vreg_s7b_0p972>;
+               vddrfa1p2-supply = <&vreg_s8b_1p272>;
+               vddrfa1p7-supply = <&vreg_s1b_1p872>;
+               vddrfa2p2-supply = <&vreg_s1c_2p19>;
+
+               bt-enable-gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>;
+
+               regulators {
+                       vreg_pmu_rfa_cmn: ldo0 {
+                               regulator-name = "vreg_pmu_rfa_cmn";
+                       };
+
+                       vreg_pmu_aon_0p59: ldo1 {
+                               regulator-name = "vreg_pmu_aon_0p59";
+                       };
+
+                       vreg_pmu_wlcx_0p8: ldo2 {
+                               regulator-name = "vreg_pmu_wlcx_0p8";
+                       };
+
+                       vreg_pmu_wlmx_0p85: ldo3 {
+                               regulator-name = "vreg_pmu_wlmx_0p85";
+                       };
+
+                       vreg_pmu_btcmx_0p85: ldo4 {
+                               regulator-name = "vreg_pmu_btcmx_0p85";
+                       };
+
+                       vreg_pmu_rfa_0p8: ldo5 {
+                               regulator-name = "vreg_pmu_rfa_0p8";
+                       };
+
+                       vreg_pmu_rfa_1p2: ldo6 {
+                               regulator-name = "vreg_pmu_rfa_1p2";
+                       };
+
+                       vreg_pmu_rfa_1p7: ldo7 {
+                               regulator-name = "vreg_pmu_rfa_1p7";
+                       };
+
+                       vreg_pmu_pcie_0p9: ldo8 {
+                               regulator-name = "vreg_pmu_pcie_0p9";
+                       };
+
+                       vreg_pmu_pcie_1p8: ldo9 {
+                               regulator-name = "vreg_pmu_pcie_1p8";
+                       };
+               };
+       };
 };
 
 &apps_rsc {
        };
 };
 
+&pm7325_temp_alarm {
+       io-channels = <&pmk8350_vadc PM7325_ADC7_DIE_TEMP>;
+       io-channel-names = "thermal";
+};
+
+&pmk8350_adc_tm {
+       status = "okay";
+
+       xo-therm@0 {
+               reg = <0>;
+               io-channels = <&pmk8350_vadc PMK8350_ADC7_AMUX_THM1_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+
+       quiet-therm@1 {
+               reg = <1>;
+               io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM1_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+
+       sdm-skin-therm@3 {
+               reg = <3>;
+               io-channels = <&pmk8350_vadc PM7325_ADC7_AMUX_THM3_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time-us = <200>;
+       };
+};
+
 &pm8350c_pwm {
        nvmem = <&pmk8350_sdam_21>,
                <&pmk8350_sdam_22>;
        status = "okay";
 };
 
+&pmk8350_vadc {
+       channel@3 {
+               reg = <PMK8350_ADC7_DIE_TEMP>;
+               label = "pmk8350_die_temp";
+               qcom,pre-scaling = <1 1>;
+       };
+
+       channel@44 {
+               reg = <PMK8350_ADC7_AMUX_THM1_100K_PU>;
+               label = "xo_therm";
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               qcom,ratiometric;
+       };
+
+       channel@103 {
+               reg = <PM7325_ADC7_DIE_TEMP>;
+               label = "pm7325_die_temp";
+               qcom,pre-scaling = <1 1>;
+       };
+
+       channel@144 {
+               reg = <PM7325_ADC7_AMUX_THM1_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm7325_quiet_therm";
+       };
+
+       channel@146 {
+               reg = <PM7325_ADC7_AMUX_THM3_100K_PU>;
+               qcom,ratiometric;
+               qcom,hw-settle-time = <200>;
+               qcom,pre-scaling = <1 1>;
+               label = "pm7325_sdm_skin_therm";
+       };
+};
+
 &pon_pwrkey {
        status = "okay";
 };
        status = "okay";
 };
 
+&qup_uart7_cts {
+       /*
+        * Configure a bias-bus-hold on CTS to lower power
+        * usage when Bluetooth is turned off. Bus hold will
+        * maintain a low power state regardless of whether
+        * the Bluetooth module drives the pin in either
+        * direction or leaves the pin fully unpowered.
+        */
+       bias-bus-hold;
+};
+
+&qup_uart7_rts {
+       /* We'll drive RTS, so no pull */
+       drive-strength = <2>;
+       bias-disable;
+};
+
+&qup_uart7_rx {
+       /*
+        * Configure a pull-up on RX. This is needed to avoid
+        * garbage data when the TX pin of the Bluetooth module is
+        * in tri-state (module powered off or not driving the
+        * signal yet).
+        */
+       bias-pull-up;
+};
+
+&qup_uart7_tx {
+       /* We'll drive TX, so no pull */
+       drive-strength = <2>;
+       bias-disable;
+};
+
 &qupv3_id_0 {
        status = "okay";
 };
 &tlmm {
        gpio-reserved-ranges = <32 2>, /* ADSP */
                               <48 4>; /* NFC */
+
+       bt_en: bt-en-state {
+               pins = "gpio85";
+               function = "gpio";
+               output-low;
+               bias-disable;
+       };
+
+       qup_uart7_sleep_cts: qup-uart7-sleep-cts-state {
+               pins = "gpio28";
+               function = "gpio";
+               /*
+                * Configure a bias-bus-hold on CTS to lower power
+                * usage when Bluetooth is turned off. Bus hold will
+                * maintain a low power state regardless of whether
+                * the Bluetooth module drives the pin in either
+                * direction or leaves the pin fully unpowered.
+                */
+               bias-bus-hold;
+       };
+
+       qup_uart7_sleep_rts: qup-uart7-sleep-rts-state {
+               pins = "gpio29";
+               function = "gpio";
+               /*
+                * Configure pull-down on RTS. As RTS is active low
+                * signal, pull it low to indicate the BT SoC that it
+                * can wakeup the system anytime from suspend state by
+                * pulling RX low (by sending wakeup bytes).
+                */
+               bias-pull-down;
+       };
+
+       qup_uart7_sleep_rx: qup-uart7-sleep-rx-state {
+               pins = "gpio31";
+               function = "gpio";
+               /*
+                * Configure a pull-up on RX. This is needed to avoid
+                * garbage data when the TX pin of the Bluetooth module
+                * is floating which may cause spurious wakeups.
+                */
+               bias-pull-up;
+       };
+
+       qup_uart7_sleep_tx: qup-uart7-sleep-tx-state {
+               pins = "gpio30";
+               function = "gpio";
+               /*
+                * Configure pull-up on TX when it isn't actively driven
+                * to prevent BT SoC from receiving garbage during sleep.
+                */
+               bias-pull-up;
+       };
 };
 
 &uart5 {
        status = "okay";
 };
 
+&uart7 {
+       /delete-property/ interrupts;
+       interrupts-extended = <&intc GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>,
+                             <&tlmm 31 IRQ_TYPE_EDGE_FALLING>;
+       pinctrl-1 = <&qup_uart7_sleep_cts>,
+                   <&qup_uart7_sleep_rts>,
+                   <&qup_uart7_sleep_tx>,
+                   <&qup_uart7_sleep_rx>;
+       pinctrl-names = "default",
+                       "sleep";
+
+       status = "okay";
+
+       bluetooth: bluetooth {
+               compatible = "qcom,wcn6750-bt";
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddbtcmx-supply = <&vreg_pmu_btcmx_0p85>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               max-speed = <3200000>;
+       };
+};
+
 &usb_1 {
        status = "okay";
 };
 
 &wifi {
        memory-region = <&wlan_fw_mem>;
-       qcom,ath11k-calibration-variant = "Qualcomm_rb3gen2";
+       qcom,calibration-variant = "Qualcomm_rb3gen2";
 
        status = "okay";
 };
                bias-pull-up;
        };
 };
+
+&lpass_audiocc {
+       compatible = "qcom,qcm6490-lpassaudiocc";
+       /delete-property/ power-domains;
+};
diff --git a/src/arm64/qcom/qcs8300-pmics.dtsi b/src/arm64/qcom/qcs8300-pmics.dtsi
new file mode 100644 (file)
index 0000000..a94b0bf
--- /dev/null
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/spmi/spmi.h>
+
+&spmi_bus {
+       pmm8620au_0: pmic@0 {
+               compatible = "qcom,pmm8654au", "qcom,spmi-pmic";
+               reg = <0x0 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmm8620au_0_rtc: rtc@6100 {
+                       compatible = "qcom,pmk8350-rtc";
+                       reg = <0x6100>, <0x6200>;
+                       reg-names = "rtc", "alarm";
+                       interrupts = <0x0 0x62 0x1 IRQ_TYPE_EDGE_RISING>;
+                       allow-set-time;
+               };
+
+               pmm8620au_0_gpios: gpio@8800 {
+                       compatible = "qcom,pmm8654au-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmm8620au_0_gpios 0 0 12>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       pmm8650au_1: pmic@2 {
+               compatible = "qcom,pmm8654au", "qcom,spmi-pmic";
+               reg = <0x2 SPMI_USID>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmm8650au_1_gpios: gpio@8800 {
+                       compatible = "qcom,pmm8654au-gpio", "qcom,spmi-gpio";
+                       reg = <0x8800>;
+                       gpio-controller;
+                       gpio-ranges = <&pmm8650au_1_gpios 0 0 12>;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+};
index b5c9f89b34356bbf8387643e8702a2a5f50b332f..3ff8f398cad31a36fa46060855b075c8c2020aa7 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 
 #include "qcs8300.dtsi"
+#include "qcs8300-pmics.dtsi"
 / {
        model = "Qualcomm Technologies, Inc. QCS8300 Ride";
        compatible = "qcom,qcs8300-ride", "qcom,qcs8300";
        chosen {
                stdout-path = "serial0:115200n8";
        };
+
+       regulator-usb2-vbus {
+               compatible = "regulator-fixed";
+               regulator-name = "USB2_VBUS";
+               gpio = <&pmm8650au_1_gpios 7 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&usb2_en>;
+               pinctrl-names = "default";
+               enable-active-high;
+               regulator-always-on;
+       };
 };
 
 &apps_rsc {
 
        mtl_tx_setup: tx-queues-config {
                snps,tx-queues-to-use = <4>;
-               snps,tx-sched-sp;
 
                queue0 {
                        snps,dcb-algorithm;
        };
 };
 
+&pmm8650au_1_gpios {
+       usb2_en: usb2-en-state {
+               pins = "gpio7";
+               function = "normal";
+               output-enable;
+               power-source = <0>;
+       };
+};
+
 &qupv3_id_0 {
        status = "okay";
 };
        status = "okay";
 };
 
+&usb_2_hsphy {
+       vdda-pll-supply = <&vreg_l7a>;
+       vdda18-supply = <&vreg_l7c>;
+       vdda33-supply = <&vreg_l9a>;
+
+       status = "okay";
+};
+
 &usb_qmpphy {
        vdda-phy-supply = <&vreg_l7a>;
        vdda-pll-supply = <&vreg_l5a>;
 &usb_1_dwc3 {
        dr_mode = "peripheral";
 };
+
+&usb_2 {
+       status = "okay";
+};
+
+&usb_2_dwc3 {
+       dr_mode = "host";
+};
index 4a057f7c0d9fae0ebd1b3cf3468746b382bc886b..009f9658a4fa8b14e1a81a47622298d1aadafcdb 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/clock/qcom,sa8775p-dispcc.h>
 #include <dt-bindings/clock/qcom,sa8775p-gpucc.h>
 #include <dt-bindings/clock/qcom,sa8775p-videocc.h>
+#include <dt-bindings/dma/qcom-gpi.h>
 #include <dt-bindings/firmware/qcom,scm.h>
 #include <dt-bindings/interconnect/qcom,icc.h>
 #include <dt-bindings/interconnect/qcom,qcs8300-rpmh.h>
@@ -51,6 +52,7 @@
                        power-domain-names = "psci";
                        capacity-dmips-mhz = <1946>;
                        dynamic-power-coefficient = <472>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
 
                        l2_0: l2-cache {
                                compatible = "cache";
@@ -70,6 +72,7 @@
                        power-domain-names = "psci";
                        capacity-dmips-mhz = <1946>;
                        dynamic-power-coefficient = <472>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
 
                        l2_1: l2-cache {
                                compatible = "cache";
@@ -89,6 +92,7 @@
                        power-domain-names = "psci";
                        capacity-dmips-mhz = <1946>;
                        dynamic-power-coefficient = <507>;
+                       qcom,freq-domain = <&cpufreq_hw 2>;
 
                        l2_2: l2-cache {
                                compatible = "cache";
                        power-domain-names = "psci";
                        capacity-dmips-mhz = <1946>;
                        dynamic-power-coefficient = <507>;
+                       qcom,freq-domain = <&cpufreq_hw 2>;
 
                        l2_3: l2-cache {
                                compatible = "cache";
                        power-domain-names = "psci";
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       qcom,freq-domain = <&cpufreq_hw 1>;
 
                        l2_4: l2-cache {
                                compatible = "cache";
                        power-domain-names = "psci";
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       qcom,freq-domain = <&cpufreq_hw 1>;
 
                        l2_5: l2-cache {
                                compatible = "cache";
                        power-domain-names = "psci";
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       qcom,freq-domain = <&cpufreq_hw 1>;
 
                        l2_6: l2-cache {
                                compatible = "cache";
                        power-domain-names = "psci";
                        capacity-dmips-mhz = <1024>;
                        dynamic-power-coefficient = <100>;
+                       qcom,freq-domain = <&cpufreq_hw 1>;
 
                        l2_7: l2-cache {
                                compatible = "cache";
                qcom,bcm-voters = <&apps_bcm_voter>;
        };
 
+       qup_opp_table: opp-table-qup {
+               compatible = "operating-points-v2";
+
+               opp-120000000 {
+                       opp-hz = /bits/ 64 <120000000>;
+                       required-opps = <&rpmhpd_opp_svs_l1>;
+               };
+       };
+
        pmu-a55 {
                compatible = "arm,cortex-a55-pmu";
                interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
                        #size-cells = <1>;
                };
 
+               gpi_dma0: dma-controller@900000 {
+                       compatible = "qcom,qcs8300-gpi-dma", "qcom,sm6350-gpi-dma";
+                       reg = <0x0 0x900000 0x0 0x60000>;
+                       #dma-cells = <3>;
+                       interrupts = <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 248 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 249 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 251 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 252 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 253 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>;
+                       iommus = <&apps_smmu 0x416 0x0>;
+                       dma-channels = <12>;
+                       dma-channel-mask = <0xfff>;
+                       dma-coherent;
+                       status = "disabled";
+               };
+
                qupv3_id_0: geniqup@9c0000 {
                        compatible = "qcom,geni-se-qup";
                        reg = <0x0 0x9c0000 0x0 0x2000>;
                                      "s-ahb";
                        #address-cells = <2>;
                        #size-cells = <2>;
+                       iommus = <&apps_smmu 0x403 0x0>;
+                       dma-coherent;
                        status = "disabled";
 
-                       uart7: serial@99c000 {
-                               compatible = "qcom,geni-debug-uart";
-                               reg = <0x0 0x0099c000 0x0 0x4000>;
-                               clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
+                       i2c0: i2c@980000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0x980000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
                                clock-names = "se";
-                               pinctrl-0 = <&qup_uart7_default>;
+                               pinctrl-0 = <&qup_i2c0_data_clk>;
                                pinctrl-names = "default";
-                               interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 550 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma0 0 0 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 0 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi0: spi@980000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0x980000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi0_data_clk>, <&qup_spi0_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 550 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                                 &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma0 0 0 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 0 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
                                status = "disabled";
                        };
-               };
-
-               rng: rng@10d2000 {
-                       compatible = "qcom,qcs8300-trng", "qcom,trng";
-                       reg = <0x0 0x010d2000 0x0 0x1000>;
-               };
 
-               config_noc: interconnect@14c0000 {
-                       compatible = "qcom,qcs8300-config-noc";
-                       reg = <0x0 0x014c0000 0x0 0x13080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       uart0: serial@980000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0x980000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart0_cts>, <&qup_uart0_rts>,
+                                           <&qup_uart0_tx>, <&qup_uart0_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 550 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
 
-               system_noc: interconnect@1680000 {
-                       compatible = "qcom,qcs8300-system-noc";
-                       reg = <0x0 0x01680000 0x0 0x15080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       i2c1: i2c@984000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0x984000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c1_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 551 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma0 0 1 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 1 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
 
-               aggre1_noc: interconnect@16c0000 {
-                       compatible = "qcom,qcs8300-aggre1-noc";
-                       reg = <0x0 0x016c0000 0x0 0x17080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       spi1: spi@984000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0x984000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi1_data_clk>, <&qup_spi1_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 551 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma0 0 1 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 1 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
 
-               aggre2_noc: interconnect@1700000 {
-                       compatible = "qcom,qcs8300-aggre2-noc";
-                       reg = <0x0 0x01700000 0x0 0x1a080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       uart1: serial@984000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0x984000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart1_cts>, <&qup_uart1_rts>,
+                                           <&qup_uart1_tx>, <&qup_uart1_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 551 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
 
-               pcie_anoc: interconnect@1760000 {
-                       compatible = "qcom,qcs8300-pcie-anoc";
-                       reg = <0x0 0x01760000 0x0 0xc080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       i2c2: i2c@988000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0x988000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c2_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 529 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma0 0 2 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 2 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
 
-               gpdsp_anoc: interconnect@1780000 {
-                       compatible = "qcom,qcs8300-gpdsp-anoc";
-                       reg = <0x0 0x01780000 0x0 0xd080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       spi2: spi@988000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0x988000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi2_data_clk>, <&qup_spi2_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 529 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma0 0 2 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 2 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
 
-               mmss_noc: interconnect@17a0000 {
-                       compatible = "qcom,qcs8300-mmss-noc";
-                       reg = <0x0 0x017a0000 0x0 0x40000>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       uart2: serial@988000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0x988000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart2_cts>, <&qup_uart2_rts>,
+                                           <&qup_uart2_tx>, <&qup_uart2_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 529 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
 
-               ufs_mem_hc: ufs@1d84000 {
-                       compatible = "qcom,qcs8300-ufshc", "qcom,ufshc", "jedec,ufs-2.0";
-                       reg = <0x0 0x01d84000 0x0 0x3000>;
-                       interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
-                       phys = <&ufs_mem_phy>;
-                       phy-names = "ufsphy";
-                       lanes-per-direction = <2>;
-                       #reset-cells = <1>;
-                       resets = <&gcc GCC_UFS_PHY_BCR>;
-                       reset-names = "rst";
+                       i2c3: i2c@98c000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0x98c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c3_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma0 0 3 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 3 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
 
-                       power-domains = <&gcc GCC_UFS_PHY_GDSC>;
-                       required-opps = <&rpmhpd_opp_nom>;
+                       spi3: spi@98c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0x98c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi3_data_clk>, <&qup_spi3_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma0 0 3 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 3 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
 
-                       iommus = <&apps_smmu 0x100 0x0>;
-                       dma-coherent;
+                       uart3: serial@98c000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0x98c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart3_cts>, <&qup_uart3_rts>,
+                                           <&qup_uart3_tx>, <&qup_uart3_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
 
-                       interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>;
-                       interconnect-names = "ufs-ddr",
-                                            "cpu-ufs";
+                       i2c4: i2c@990000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0x990000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c4_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma0 0 4 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 4 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
 
-                       clocks = <&gcc GCC_UFS_PHY_AXI_CLK>,
-                                <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
-                                <&gcc GCC_UFS_PHY_AHB_CLK>,
-                                <&gcc GCC_UFS_PHY_UNIPRO_CORE_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>;
-                       clock-names = "core_clk",
-                                     "bus_aggr_clk",
-                                     "iface_clk",
-                                     "core_clk_unipro",
-                                     "ref_clk",
-                                     "tx_lane0_sync_clk",
-                                     "rx_lane0_sync_clk",
-                                     "rx_lane1_sync_clk";
-                       freq-table-hz = <75000000 300000000>,
-                                       <0 0>,
-                                       <0 0>,
-                                       <75000000 300000000>,
-                                       <0 0>,
-                                       <0 0>,
-                                       <0 0>,
-                                       <0 0>;
-                       qcom,ice = <&ice>;
-                       status = "disabled";
-               };
+                       spi4: spi@990000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0x990000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi4_data_clk>, <&qup_spi4_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma0 0 4 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 4 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
 
-               ufs_mem_phy: phy@1d87000 {
-                       compatible = "qcom,qcs8300-qmp-ufs-phy", "qcom,sa8775p-qmp-ufs-phy";
-                       reg = <0x0 0x01d87000 0x0 0xe10>;
-                       /*
-                        * Yes, GCC_EDP_REF_CLKREF_EN is correct in qref. It
-                        * enables the CXO clock to eDP *and* UFS PHY.
-                        */
-                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                       uart4: serial@990000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0x990000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart4_cts>, <&qup_uart4_rts>,
+                                           <&qup_uart4_tx>, <&qup_uart4_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c5: i2c@994000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0x994000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c5_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma0 0 5 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 5 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi5: spi@994000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0x994000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi5_data_clk>, <&qup_spi5_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma0 0 5 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 5 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart5: serial@994000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0x994000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart5_cts>, <&qup_uart5_rts>,
+                                           <&qup_uart5_tx>, <&qup_uart5_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c6: i2c@998000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0x998000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c6_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 536 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma0 0 6 QCOM_GPI_I2C>,
+                                      <&gpi_dma0 1 6 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi6: spi@998000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0x998000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi6_data_clk>, <&qup_spi6_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 536 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma0 0 6 QCOM_GPI_SPI>,
+                                      <&gpi_dma0 1 6 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart6: serial@998000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0x998000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart6_cts>, <&qup_uart6_rts>,
+                                           <&qup_uart6_tx>, <&qup_uart6_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 536 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       uart7: serial@99c000 {
+                               compatible = "qcom,geni-debug-uart";
+                               reg = <0x0 0x0099c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart7_tx>, <&qup_uart7_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+               };
+
+               gpi_dma1: dma-controller@a00000 {
+                       compatible = "qcom,qcs8300-gpi-dma", "qcom,sm6350-gpi-dma";
+                       reg = <0x0 0xa00000 0x0 0x60000>;
+                       #dma-cells = <3>;
+                       interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
+                       iommus = <&apps_smmu 0x456 0x0>;
+                       dma-channels = <12>;
+                       dma-channel-mask = <0xfff>;
+                       dma-coherent;
+                       status = "disabled";
+               };
+
+               qupv3_id_1: geniqup@ac0000 {
+                       compatible = "qcom,geni-se-qup";
+                       reg = <0x0 0xac0000 0x0 0x2000>;
+                       ranges;
+                       clocks = <&gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
+                                <&gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
+                       clock-names = "m-ahb",
+                                     "s-ahb";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       iommus = <&apps_smmu 0x443 0x0>;
+                       dma-coherent;
+                       status = "disabled";
+
+                       i2c8: i2c@a80000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xa80000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c8_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma1 0 0 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 0 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi8: spi@a80000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0xa80000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi8_data_clk>, <&qup_spi8_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma1 0 0 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 0 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart8: serial@a80000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xa80000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart8_cts>, <&qup_uart8_rts>,
+                                           <&qup_uart8_tx>, <&qup_uart8_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c9: i2c@a84000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xa84000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c9_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma1 0 1 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 1 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi9: spi@a84000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0xa84000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi9_data_clk>, <&qup_spi9_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma1 0 1 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 1 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart9: serial@a84000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xa84000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart9_cts>, <&qup_uart9_rts>,
+                                           <&qup_uart9_tx>, <&qup_uart9_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c10: i2c@a88000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xa88000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c10_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma1 0 2 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 2 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi10: spi@a88000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0xa88000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi10_data_clk>, <&qup_spi10_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma1 0 2 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 2 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart10: serial@a88000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xa88000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart10_cts>, <&qup_uart10_rts>,
+                                           <&qup_uart10_tx>, <&qup_uart10_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c11: i2c@a8c000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xa8c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c11_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma1 0 3 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 3 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart11: serial@a8c000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xa8c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart11_tx>, <&qup_uart11_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c12: i2c@a90000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xa90000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c12_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma1 0 4 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 4 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi12: spi@a90000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0xa90000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi12_data_clk>, <&qup_spi12_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma1 0 4 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 4 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart12: serial@a90000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xa90000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart12_cts>, <&qup_uart12_rts>,
+                                           <&qup_uart12_tx>, <&qup_uart12_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c13: i2c@a94000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xa94000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c13_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma1 0 5 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 5 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi13: spi@a94000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0xa94000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi13_data_clk>, <&qup_spi13_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma1 0 5 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 5 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart13: serial@a94000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xa94000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart13_cts>, <&qup_uart13_rts>,
+                                           <&qup_uart13_tx>, <&qup_uart13_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c14: i2c@a98000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xa98000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c14_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 835 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma1 0 6 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 6 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi14: spi@a98000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0xa98000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi14_data_clk>, <&qup_spi14_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 835 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma1 0 6 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 6 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart14: serial@a98000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xa98000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart14_cts>, <&qup_uart14_rts>,
+                                           <&qup_uart14_tx>, <&qup_uart14_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 835 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+
+                       i2c15: i2c@a9c000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xa9c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c15_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma1 0 7 QCOM_GPI_I2C>,
+                                      <&gpi_dma1 1 7 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi15: spi@a9c000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0xa9c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi15_data_clk>, <&qup_spi15_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma1 0 7 QCOM_GPI_SPI>,
+                                      <&gpi_dma1 1 7 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart15: serial@a9c000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xa9c000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP1_S7_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart15_cts>, <&qup_uart15_rts>,
+                                           <&qup_uart15_tx>, <&qup_uart15_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+               };
+
+               gpi_dma3: dma-controller@b00000 {
+                       compatible = "qcom,qcs8300-gpi-dma", "qcom,sm6350-gpi-dma";
+                       reg = <0x0 0xb00000 0x0 0x60000>;
+                       #dma-cells = <3>;
+                       interrupts = <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 527 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 528 IRQ_TYPE_LEVEL_HIGH>;
+                       iommus = <&apps_smmu 0x56 0x0>;
+                       dma-channels = <4>;
+                       dma-channel-mask = <0xf>;
+                       dma-coherent;
+                       status = "disabled";
+               };
+
+               qupv3_id_3: geniqup@bc0000 {
+                       compatible = "qcom,geni-se-qup";
+                       reg = <0x0 0xbc0000 0x0 0x2000>;
+                       ranges;
+                       clocks = <&gcc GCC_QUPV3_WRAP_3_M_AHB_CLK>,
+                                <&gcc GCC_QUPV3_WRAP_3_S_AHB_CLK>;
+                       clock-names = "m-ahb",
+                                     "s-ahb";
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       iommus = <&apps_smmu 0x43 0x0>;
+                       dma-coherent;
+                       status = "disabled";
+
+                       i2c16: i2c@b80000 {
+                               compatible = "qcom,geni-i2c";
+                               reg = <0x0 0xb80000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP3_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_i2c16_data_clk>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 830 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_3 QCOM_ICC_TAG_ALWAYS>,
+                                               <&aggre2_noc MASTER_QUP_3 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config",
+                                                    "qup-memory";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
+                               dmas = <&gpi_dma3 0 0 QCOM_GPI_I2C>,
+                                      <&gpi_dma3 1 0 QCOM_GPI_I2C>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       spi16: spi@b80000 {
+                               compatible = "qcom,geni-spi";
+                               reg = <0x0 0xb80000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP3_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_spi16_data_clk>, <&qup_spi16_cs>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 830 IRQ_TYPE_LEVEL_HIGH>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_3 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               dmas = <&gpi_dma3 0 0 QCOM_GPI_SPI>,
+                                      <&gpi_dma3 1 0 QCOM_GPI_SPI>;
+                               dma-names = "tx",
+                                           "rx";
+                               status = "disabled";
+                       };
+
+                       uart16: serial@b80000 {
+                               compatible = "qcom,geni-uart";
+                               reg = <0x0 0xb80000 0x0 0x4000>;
+                               clocks = <&gcc GCC_QUPV3_WRAP3_S0_CLK>;
+                               clock-names = "se";
+                               pinctrl-0 = <&qup_uart16_cts>, <&qup_uart16_rts>,
+                                           <&qup_uart16_tx>, <&qup_uart16_rx>;
+                               pinctrl-names = "default";
+                               interrupts = <GIC_SPI 830 IRQ_TYPE_LEVEL_HIGH>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                                &config_noc SLAVE_QUP_3 QCOM_ICC_TAG_ALWAYS>;
+                               interconnect-names = "qup-core",
+                                                    "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table>;
+                               status = "disabled";
+                       };
+               };
+
+               rng: rng@10d2000 {
+                       compatible = "qcom,qcs8300-trng", "qcom,trng";
+                       reg = <0x0 0x010d2000 0x0 0x1000>;
+               };
+
+               config_noc: interconnect@14c0000 {
+                       compatible = "qcom,qcs8300-config-noc";
+                       reg = <0x0 0x014c0000 0x0 0x13080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               system_noc: interconnect@1680000 {
+                       compatible = "qcom,qcs8300-system-noc";
+                       reg = <0x0 0x01680000 0x0 0x15080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               aggre1_noc: interconnect@16c0000 {
+                       compatible = "qcom,qcs8300-aggre1-noc";
+                       reg = <0x0 0x016c0000 0x0 0x17080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               aggre2_noc: interconnect@1700000 {
+                       compatible = "qcom,qcs8300-aggre2-noc";
+                       reg = <0x0 0x01700000 0x0 0x1a080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               pcie_anoc: interconnect@1760000 {
+                       compatible = "qcom,qcs8300-pcie-anoc";
+                       reg = <0x0 0x01760000 0x0 0xc080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               gpdsp_anoc: interconnect@1780000 {
+                       compatible = "qcom,qcs8300-gpdsp-anoc";
+                       reg = <0x0 0x01780000 0x0 0xd080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               mmss_noc: interconnect@17a0000 {
+                       compatible = "qcom,qcs8300-mmss-noc";
+                       reg = <0x0 0x017a0000 0x0 0x40000>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               ufs_mem_hc: ufs@1d84000 {
+                       compatible = "qcom,qcs8300-ufshc", "qcom,ufshc", "jedec,ufs-2.0";
+                       reg = <0x0 0x01d84000 0x0 0x3000>;
+                       interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
+                       phys = <&ufs_mem_phy>;
+                       phy-names = "ufsphy";
+                       lanes-per-direction = <2>;
+                       #reset-cells = <1>;
+                       resets = <&gcc GCC_UFS_PHY_BCR>;
+                       reset-names = "rst";
+
+                       power-domains = <&gcc GCC_UFS_PHY_GDSC>;
+                       required-opps = <&rpmhpd_opp_nom>;
+
+                       iommus = <&apps_smmu 0x100 0x0>;
+                       dma-coherent;
+
+                       interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                        &config_noc SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "ufs-ddr",
+                                            "cpu-ufs";
+
+                       clocks = <&gcc GCC_UFS_PHY_AXI_CLK>,
+                                <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
+                                <&gcc GCC_UFS_PHY_AHB_CLK>,
+                                <&gcc GCC_UFS_PHY_UNIPRO_CORE_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>;
+                       clock-names = "core_clk",
+                                     "bus_aggr_clk",
+                                     "iface_clk",
+                                     "core_clk_unipro",
+                                     "ref_clk",
+                                     "tx_lane0_sync_clk",
+                                     "rx_lane0_sync_clk",
+                                     "rx_lane1_sync_clk";
+                       freq-table-hz = <75000000 300000000>,
+                                       <0 0>,
+                                       <0 0>,
+                                       <75000000 300000000>,
+                                       <0 0>,
+                                       <0 0>,
+                                       <0 0>,
+                                       <0 0>;
+                       qcom,ice = <&ice>;
+                       status = "disabled";
+               };
+
+               ufs_mem_phy: phy@1d87000 {
+                       compatible = "qcom,qcs8300-qmp-ufs-phy", "qcom,sa8775p-qmp-ufs-phy";
+                       reg = <0x0 0x01d87000 0x0 0xe10>;
+                       /*
+                        * Yes, GCC_EDP_REF_CLKREF_EN is correct in qref. It
+                        * enables the CXO clock to eDP *and* UFS PHY.
+                        */
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&gcc GCC_UFS_PHY_PHY_AUX_CLK>,
                                 <&gcc GCC_EDP_REF_CLKREF_EN>;
                        clock-names = "ref",
                                      "qref";
                        power-domains = <&gcc GCC_UFS_PHY_GDSC>;
 
-                       resets = <&ufs_mem_hc 0>;
-                       reset-names = "ufsphy";
+                       resets = <&ufs_mem_hc 0>;
+                       reset-names = "ufsphy";
+
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
+               cryptobam: dma-controller@1dc4000 {
+                       compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0";
+                       reg = <0x0 0x01dc4000 0x0 0x28000>;
+                       interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+                       qcom,controlled-remotely;
+                       num-channels = <20>;
+                       qcom,num-ees = <4>;
+                       iommus = <&apps_smmu 0x480 0x00>,
+                                <&apps_smmu 0x481 0x00>;
+               };
+
+               ice: crypto@1d88000 {
+                       compatible = "qcom,qcs8300-inline-crypto-engine",
+                                    "qcom,inline-crypto-engine";
+                       reg = <0x0 0x01d88000 0x0 0x18000>;
+                       clocks = <&gcc GCC_UFS_PHY_ICE_CORE_CLK>;
+               };
+
+               tcsr_mutex: hwlock@1f40000 {
+                       compatible = "qcom,tcsr-mutex";
+                       reg = <0x0 0x01f40000 0x0 0x20000>;
+                       #hwlock-cells = <1>;
+               };
+
+               tcsr: syscon@1fc0000 {
+                       compatible = "qcom,qcs8300-tcsr", "syscon";
+                       reg = <0x0 0x1fc0000 0x0 0x30000>;
+               };
+
+               remoteproc_adsp: remoteproc@3000000 {
+                       compatible = "qcom,qcs8300-adsp-pas", "qcom,sa8775p-adsp-pas";
+                       reg = <0x0 0x3000000 0x0 0x00100>;
+
+                       interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog",
+                                         "fatal",
+                                         "ready",
+                                         "handover",
+                                         "stop-ack";
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "xo";
+
+                       power-domains = <&rpmhpd RPMHPD_LCX>,
+                                       <&rpmhpd RPMHPD_LMX>;
+                       power-domain-names = "lcx",
+                                            "lmx";
+
+                       memory-region = <&adsp_mem>;
+
+                       qcom,qmp = <&aoss_qmp>;
+
+                       qcom,smem-states = <&smp2p_adsp_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       status = "disabled";
+
+                       remoteproc_adsp_glink: glink-edge {
+                               interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
+                                                            IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                            IRQ_TYPE_EDGE_RISING>;
+                               mboxes = <&ipcc IPCC_CLIENT_LPASS
+                                               IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+                               label = "lpass";
+                               qcom,remote-pid = <2>;
+
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "adsp";
+                                       memory-region = <&adsp_rpc_remote_heap_mem>;
+                                       qcom,vmids = <QCOM_SCM_VMID_LPASS
+                                                     QCOM_SCM_VMID_ADSP_HEAP>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x2003 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@4 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <4>;
+                                               iommus = <&apps_smmu 0x2004 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@5 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <5>;
+                                               iommus = <&apps_smmu 0x2005 0x0>;
+                                               dma-coherent;
+                                       };
+                               };
+                       };
+               };
+
+               lpass_ag_noc: interconnect@3c40000 {
+                       compatible = "qcom,qcs8300-lpass-ag-noc";
+                       reg = <0x0 0x03c40000 0x0 0x17200>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
+
+               stm@4002000 {
+                       compatible = "arm,coresight-stm", "arm,primecell";
+                       reg = <0x0 0x04002000 0x0 0x1000>,
+                             <0x0 0x16280000 0x0 0x180000>;
+                       reg-names = "stm-base",
+                                   "stm-stimulus-base";
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       out-ports {
+                               port {
+                                       stm_out: endpoint {
+                                               remote-endpoint = <&funnel0_in7>;
+                                       };
+                               };
+                       };
+               };
+
+               tpda@4004000 {
+                       compatible = "qcom,coresight-tpda", "arm,primecell";
+                       reg = <0x0 0x04004000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       qdss_tpda_in1: endpoint {
+                                               remote-endpoint = <&qdss_tpdm1_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       qdss_tpda_out: endpoint {
+                                               remote-endpoint = <&funnel0_in6>;
+                                       };
+                               };
+                       };
+               };
+
+               tpdm@400f000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x0400f000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       qcom,cmb-element-bits = <32>;
+                       qcom,cmb-msrs-num = <32>;
+
+                       out-ports {
+                               port {
+                                       qdss_tpdm1_out: endpoint {
+                                               remote-endpoint = <&qdss_tpda_in1>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel@4041000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04041000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@6 {
+                                       reg = <6>;
+
+                                       funnel0_in6: endpoint {
+                                               remote-endpoint = <&qdss_tpda_out>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+
+                                       funnel0_in7: endpoint {
+                                               remote-endpoint = <&stm_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       funnel0_out: endpoint {
+                                               remote-endpoint = <&qdss_funnel_in0>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel@4042000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04042000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@4 {
+                                       reg = <4>;
+
+                                       funnel1_in4: endpoint {
+                                               remote-endpoint = <&apss_funnel1_out>;
+                                       };
+                               };
+
+                               port@5 {
+                                       reg = <5>;
+
+                                       funnel1_in5: endpoint {
+                                               remote-endpoint = <&dlct0_funnel_out>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <6>;
+
+                                       funnel1_in6: endpoint {
+                                               remote-endpoint = <&dlmm_funnel_out>;
+                                       };
+                               };
+
+                               port@7 {
+                                       reg = <7>;
+
+                                       funnel1_in7: endpoint {
+                                               remote-endpoint = <&dlst_ch_funnel_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       funnel1_out: endpoint {
+                                               remote-endpoint = <&qdss_funnel_in1>;
+                                       };
+                               };
+                       };
+               };
+
+               funnel@4045000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04045000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       qdss_funnel_in0: endpoint {
+                                               remote-endpoint = <&funnel0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       qdss_funnel_in1: endpoint {
+                                               remote-endpoint = <&funnel1_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       qdss_funnel_out: endpoint {
+                                               remote-endpoint = <&aoss_funnel_in7>;
+                                       };
+                               };
+                       };
+               };
+
+               tpdm@4841000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04841000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       qcom,cmb-element-bits = <32>;
+                       qcom,cmb-msrs-num = <32>;
+
+                       out-ports {
+                               port {
+                                       prng_tpdm_out: endpoint {
+                                               remote-endpoint = <&dlct0_tpda_in19>;
+                                       };
+                               };
+                       };
+               };
+
+               tpdm@4850000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04850000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       qcom,cmb-element-bits = <64>;
+                       qcom,cmb-msrs-num = <32>;
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
+
+                       out-ports {
+                               port {
+                                       pimem_tpdm_out: endpoint {
+                                               remote-endpoint = <&dlct0_tpda_in25>;
+                                       };
+                               };
+                       };
+               };
+
+               tpdm@4860000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04860000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
 
-                       #phy-cells = <0>;
-                       status = "disabled";
-               };
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
 
-               cryptobam: dma-controller@1dc4000 {
-                       compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0";
-                       reg = <0x0 0x01dc4000 0x0 0x28000>;
-                       interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
-                       #dma-cells = <1>;
-                       qcom,ee = <0>;
-                       qcom,controlled-remotely;
-                       num-channels = <20>;
-                       qcom,num-ees = <4>;
-                       iommus = <&apps_smmu 0x480 0x00>,
-                                <&apps_smmu 0x481 0x00>;
+                       out-ports {
+                               port {
+                                       dlst_ch_tpdm0_out: endpoint {
+                                               remote-endpoint = <&dlst_ch_tpda_in8>;
+                                       };
+                               };
+                       };
                };
 
-               crypto: crypto@1dfa000 {
-                       compatible = "qcom,qcs8300-qce", "qcom,qce";
-                       reg = <0x0 0x01dfa000 0x0 0x6000>;
-                       dmas = <&cryptobam 4>, <&cryptobam 5>;
-                       dma-names = "rx", "tx";
-                       iommus = <&apps_smmu 0x480 0x00>,
-                                <&apps_smmu 0x481 0x00>;
-                       interconnects = <&aggre2_noc MASTER_CRYPTO_CORE0 QCOM_ICC_TAG_ALWAYS
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
-                       interconnect-names = "memory";
-               };
+               tpda@4864000 {
+                       compatible = "qcom,coresight-tpda", "arm,primecell";
+                       reg = <0x0 0x04864000 0x0 0x1000>;
 
-               ice: crypto@1d88000 {
-                       compatible = "qcom,qcs8300-inline-crypto-engine",
-                                    "qcom,inline-crypto-engine";
-                       reg = <0x0 0x01d88000 0x0 0x18000>;
-                       clocks = <&gcc GCC_UFS_PHY_ICE_CORE_CLK>;
-               };
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
 
-               tcsr_mutex: hwlock@1f40000 {
-                       compatible = "qcom,tcsr-mutex";
-                       reg = <0x0 0x01f40000 0x0 0x20000>;
-                       #hwlock-cells = <1>;
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@8 {
+                                       reg = <8>;
+
+                                       dlst_ch_tpda_in8: endpoint {
+                                               remote-endpoint = <&dlst_ch_tpdm0_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       dlst_ch_tpda_out: endpoint {
+                                               remote-endpoint = <&dlst_ch_funnel_in0>;
+                                       };
+                               };
+                       };
                };
 
-               tcsr: syscon@1fc0000 {
-                       compatible = "qcom,qcs8300-tcsr", "syscon";
-                       reg = <0x0 0x1fc0000 0x0 0x30000>;
+               funnel@4865000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04865000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       dlst_ch_funnel_in0: endpoint {
+                                               remote-endpoint = <&dlst_ch_tpda_out>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+
+                                       dlst_ch_funnel_in4: endpoint {
+                                               remote-endpoint = <&dlst_funnel_out>;
+                                       };
+                               };
+
+                               port@6 {
+                                       reg = <6>;
+
+                                       dlst_ch_funnel_in6: endpoint {
+                                               remote-endpoint = <&gdsp_funnel_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       dlst_ch_funnel_out: endpoint {
+                                               remote-endpoint = <&funnel1_in7>;
+                                       };
+                               };
+                       };
                };
 
-               remoteproc_adsp: remoteproc@3000000 {
-                       compatible = "qcom,qcs8300-adsp-pas", "qcom,sa8775p-adsp-pas";
-                       reg = <0x0 0x3000000 0x0 0x00100>;
+               tpdm@4980000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04980000 0x0 0x1000>;
 
-                       interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
-                                             <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
-                                             <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
-                                             <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
-                                             <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>;
-                       interrupt-names = "wdog",
-                                         "fatal",
-                                         "ready",
-                                         "handover",
-                                         "stop-ack";
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
 
-                       clocks = <&rpmhcc RPMH_CXO_CLK>;
-                       clock-names = "xo";
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
 
-                       power-domains = <&rpmhpd RPMHPD_LCX>,
-                                       <&rpmhpd RPMHPD_LMX>;
-                       power-domain-names = "lcx",
-                                            "lmx";
+                       out-ports {
+                               port {
+                                       turing2_tpdm_out: endpoint {
+                                               remote-endpoint = <&turing2_funnel_in0>;
+                                       };
+                               };
+                       };
+               };
 
-                       memory-region = <&adsp_mem>;
+               funnel@4983000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04983000 0x0 0x1000>;
 
-                       qcom,qmp = <&aoss_qmp>;
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
 
-                       qcom,smem-states = <&smp2p_adsp_out 0>;
-                       qcom,smem-state-names = "stop";
+                       in-ports {
+                               port {
+                                       turing2_funnel_in0: endpoint {
+                                               remote-endpoint = <&turing2_tpdm_out>;
+                                       };
+                               };
+                       };
 
-                       status = "disabled";
+                       out-ports {
+                               port {
+                                       turing2_funnel_out0: endpoint {
+                                               remote-endpoint = <&gdsp_tpda_in5>;
+                                       };
+                               };
+                       };
+               };
 
-                       remoteproc_adsp_glink: glink-edge {
-                               interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
-                                                            IPCC_MPROC_SIGNAL_GLINK_QMP
-                                                            IRQ_TYPE_EDGE_RISING>;
-                               mboxes = <&ipcc IPCC_CLIENT_LPASS
-                                               IPCC_MPROC_SIGNAL_GLINK_QMP>;
+               tpdm@4ac0000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04ac0000 0x0 0x1000>;
 
-                               label = "lpass";
-                               qcom,remote-pid = <2>;
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
 
-                               fastrpc {
-                                       compatible = "qcom,fastrpc";
-                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
-                                       label = "adsp";
-                                       memory-region = <&adsp_rpc_remote_heap_mem>;
-                                       qcom,vmids = <QCOM_SCM_VMID_LPASS
-                                                     QCOM_SCM_VMID_ADSP_HEAP>;
-                                       #address-cells = <1>;
-                                       #size-cells = <0>;
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
 
-                                       compute-cb@3 {
-                                               compatible = "qcom,fastrpc-compute-cb";
-                                               reg = <3>;
-                                               iommus = <&apps_smmu 0x2003 0x0>;
-                                               dma-coherent;
+                       out-ports {
+                               port {
+                                       dlmm_tpdm0_out: endpoint {
+                                               remote-endpoint = <&dlmm_tpda_in27>;
                                        };
+                               };
+                       };
+               };
 
-                                       compute-cb@4 {
-                                               compatible = "qcom,fastrpc-compute-cb";
-                                               reg = <4>;
-                                               iommus = <&apps_smmu 0x2004 0x0>;
-                                               dma-coherent;
+               tpda@4ac4000 {
+                       compatible = "qcom,coresight-tpda", "arm,primecell";
+                       reg = <0x0 0x04ac4000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1b {
+                                       reg = <27>;
+
+                                       dlmm_tpda_in27: endpoint {
+                                               remote-endpoint = <&dlmm_tpdm0_out>;
                                        };
+                               };
+                       };
 
-                                       compute-cb@5 {
-                                               compatible = "qcom,fastrpc-compute-cb";
-                                               reg = <5>;
-                                               iommus = <&apps_smmu 0x2005 0x0>;
-                                               dma-coherent;
+                       out-ports {
+                               port {
+                                       dlmm_tpda_out: endpoint {
+                                               remote-endpoint = <&dlmm_funnel_in0>;
                                        };
                                };
                        };
                };
 
-               lpass_ag_noc: interconnect@3c40000 {
-                       compatible = "qcom,qcs8300-lpass-ag-noc";
-                       reg = <0x0 0x03c40000 0x0 0x17200>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
+               funnel@4ac5000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04ac5000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               port {
+                                       dlmm_funnel_in0: endpoint {
+                                               remote-endpoint = <&dlmm_tpda_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       dlmm_funnel_out: endpoint {
+                                               remote-endpoint = <&funnel1_in6>;
+                                       };
+                               };
+                       };
                };
 
-               stm@4002000 {
-                       compatible = "arm,coresight-stm", "arm,primecell";
-                       reg = <0x0 0x04002000 0x0 0x1000>,
-                             <0x0 0x16280000 0x0 0x180000>;
-                       reg-names = "stm-base",
-                                   "stm-stimulus-base";
+               tpdm@4ad0000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04ad0000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
+
                        out-ports {
                                port {
-                                       stm_out: endpoint {
-                                               remote-endpoint = <&funnel0_in7>;
+                                       dlct0_tpdm0_out: endpoint {
+                                               remote-endpoint = <&dlct0_tpda_in26>;
                                        };
                                };
                        };
                };
 
-               tpda@4004000 {
+               tpda@4ad3000 {
                        compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04004000 0x0 0x1000>;
+                       reg = <0x0 0x04ad3000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                #address-cells = <1>;
                                #size-cells = <0>;
 
-                               port@1 {
-                                       reg = <1>;
+                               port@13 {
+                                       reg = <19>;
 
-                                       qdss_tpda_in1: endpoint {
-                                               remote-endpoint = <&qdss_tpdm1_out>;
+                                       dlct0_tpda_in19: endpoint {
+                                               remote-endpoint = <&prng_tpdm_out>;
+                                       };
+                               };
+
+                               port@19 {
+                                       reg = <25>;
+
+                                       dlct0_tpda_in25: endpoint {
+                                               remote-endpoint = <&pimem_tpdm_out>;
+                                       };
+                               };
+
+                               port@1a {
+                                       reg = <26>;
+
+                                       dlct0_tpda_in26: endpoint {
+                                               remote-endpoint = <&dlct0_tpdm0_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       qdss_tpda_out: endpoint {
-                                               remote-endpoint = <&funnel0_in6>;
+                                       dlct0_tpda_out: endpoint {
+                                               remote-endpoint = <&dlct0_funnel_in0>;
                                        };
                                };
                        };
                };
 
-               tpdm@400f000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x0400f000 0x0 0x1000>;
+               funnel@4ad4000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04ad4000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,cmb-element-bits = <32>;
-                       qcom,cmb-msrs-num = <32>;
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       dlct0_funnel_in0: endpoint {
+                                               remote-endpoint = <&dlct0_tpda_out>;
+                                       };
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+
+                                       dlct0_funnel_in4: endpoint {
+                                               remote-endpoint = <&ddr_funnel5_out>;
+                                       };
+                               };
+                       };
 
                        out-ports {
                                port {
-                                       qdss_tpdm1_out: endpoint {
-                                               remote-endpoint = <&qdss_tpda_in1>;
+                                       dlct0_funnel_out: endpoint {
+                                               remote-endpoint = <&funnel1_in5>;
                                        };
                                };
                        };
                };
 
-               funnel@4041000 {
+               funnel@4b04000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04041000 0x0 0x1000>;
+                       reg = <0x0 0x04b04000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                port@6 {
                                        reg = <6>;
 
-                                       funnel0_in6: endpoint {
-                                               remote-endpoint = <&qdss_tpda_out>;
+                                       aoss_funnel_in6: endpoint {
+                                               remote-endpoint = <&aoss_tpda_out>;
                                        };
                                };
 
                                port@7 {
                                        reg = <7>;
 
-                                       funnel0_in7: endpoint {
-                                               remote-endpoint = <&stm_out>;
+                                       aoss_funnel_in7: endpoint {
+                                               remote-endpoint = <&qdss_funnel_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       funnel0_out: endpoint {
-                                               remote-endpoint = <&qdss_funnel_in0>;
+                                       aoss_funnel_out: endpoint {
+                                               remote-endpoint = <&etf0_in>;
                                        };
                                };
                        };
                };
 
-               funnel@4042000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04042000 0x0 0x1000>;
+               tmc_etf: tmc@4b05000 {
+                       compatible = "arm,coresight-tmc", "arm,primecell";
+                       reg = <0x0 0x04b05000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@4 {
-                                       reg = <4>;
-
-                                       funnel1_in4: endpoint {
-                                               remote-endpoint = <&apss_funnel1_out>;
+                               port {
+                                       etf0_in: endpoint {
+                                               remote-endpoint = <&aoss_funnel_out>;
                                        };
                                };
+                       };
 
-                               port@5 {
-                                       reg = <5>;
-
-                                       funnel1_in5: endpoint {
-                                               remote-endpoint = <&dlct0_funnel_out>;
+                       out-ports {
+                               port {
+                                       etf0_out: endpoint {
+                                               remote-endpoint = <&swao_rep_in>;
                                        };
                                };
+                       };
+               };
 
-                               port@6 {
-                                       reg = <6>;
-
-                                       funnel1_in6: endpoint {
-                                               remote-endpoint = <&dlmm_funnel_out>;
-                                       };
-                               };
+               replicator@4b06000 {
+                       compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
+                       reg = <0x0 0x04b06000 0x0 0x1000>;
 
-                               port@7 {
-                                       reg = <7>;
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
 
-                                       funnel1_in7: endpoint {
-                                               remote-endpoint = <&dlst_ch_funnel_out>;
+                       in-ports {
+                               port {
+                                       swao_rep_in: endpoint {
+                                               remote-endpoint = <&etf0_out>;
                                        };
                                };
                        };
 
                        out-ports {
-                               port {
-                                       funnel1_out: endpoint {
-                                               remote-endpoint = <&qdss_funnel_in1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       swao_rep_out1: endpoint {
+                                               remote-endpoint = <&eud_in>;
                                        };
                                };
                        };
                };
 
-               funnel@4045000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04045000 0x0 0x1000>;
+               tpda@4b08000 {
+                       compatible = "qcom,coresight-tpda", "arm,primecell";
+                       reg = <0x0 0x04b08000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                port@0 {
                                        reg = <0>;
 
-                                       qdss_funnel_in0: endpoint {
-                                               remote-endpoint = <&funnel0_out>;
+                                       aoss_tpda_in0: endpoint {
+                                               remote-endpoint = <&aoss_tpdm0_out>;
                                        };
                                };
 
                                port@1 {
                                        reg = <1>;
 
-                                       qdss_funnel_in1: endpoint {
-                                               remote-endpoint = <&funnel1_out>;
+                                       aoss_tpda_in1: endpoint {
+                                               remote-endpoint = <&aoss_tpdm1_out>;
                                        };
                                };
-                       };
 
-                       out-ports {
-                               port {
-                                       qdss_funnel_out: endpoint {
-                                               remote-endpoint = <&aoss_funnel_in7>;
+                               port@2 {
+                                       reg = <2>;
+
+                                       aoss_tpda_in2: endpoint {
+                                               remote-endpoint = <&aoss_tpdm2_out>;
                                        };
                                };
-                       };
-               };
 
-               tpdm@4841000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04841000 0x0 0x1000>;
+                               port@3 {
+                                       reg = <3>;
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                                       aoss_tpda_in3: endpoint {
+                                               remote-endpoint = <&aoss_tpdm3_out>;
+                                       };
+                               };
 
-                       qcom,cmb-element-bits = <32>;
-                       qcom,cmb-msrs-num = <32>;
+                               port@4 {
+                                       reg = <4>;
 
-                       out-ports {
-                               port {
-                                       prng_tpdm_out: endpoint {
-                                               remote-endpoint = <&dlct0_tpda_in19>;
+                                       aoss_tpda_in4: endpoint {
+                                               remote-endpoint = <&aoss_tpdm4_out>;
                                        };
                                };
                        };
-               };
-
-               tpdm@4850000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04850000 0x0 0x1000>;
-
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-
-                       qcom,cmb-element-bits = <64>;
-                       qcom,cmb-msrs-num = <32>;
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       pimem_tpdm_out: endpoint {
-                                               remote-endpoint = <&dlct0_tpda_in25>;
+                                       aoss_tpda_out: endpoint {
+                                               remote-endpoint = <&aoss_funnel_in6>;
                                        };
                                };
                        };
                };
 
-               tpdm@4860000 {
+               tpdm@4b09000 {
                        compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04860000 0x0 0x1000>;
+                       reg = <0x0 0x04b09000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                       qcom,cmb-element-bits = <64>;
+                       qcom,cmb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       dlst_ch_tpdm0_out: endpoint {
-                                               remote-endpoint = <&dlst_ch_tpda_in8>;
+                                       aoss_tpdm0_out: endpoint {
+                                               remote-endpoint = <&aoss_tpda_in0>;
                                        };
                                };
                        };
                };
 
-               tpda@4864000 {
-                       compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04864000 0x0 0x1000>;
+               tpdm@4b0a000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04b0a000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@8 {
-                                       reg = <8>;
-
-                                       dlst_ch_tpda_in8: endpoint {
-                                               remote-endpoint = <&dlst_ch_tpdm0_out>;
-                                       };
-                               };
-                       };
+                       qcom,cmb-element-bits = <64>;
+                       qcom,cmb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       dlst_ch_tpda_out: endpoint {
-                                               remote-endpoint = <&dlst_ch_funnel_in0>;
+                                       aoss_tpdm1_out: endpoint {
+                                               remote-endpoint = <&aoss_tpda_in1>;
                                        };
                                };
                        };
                };
 
-               funnel@4865000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04865000 0x0 0x1000>;
+               tpdm@4b0b000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04b0b000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@0 {
-                                       reg = <0>;
+                       qcom,cmb-element-bits = <64>;
+                       qcom,cmb-msrs-num = <32>;
 
-                                       dlst_ch_funnel_in0: endpoint {
-                                               remote-endpoint = <&dlst_ch_tpda_out>;
+                       out-ports {
+                               port {
+                                       aoss_tpdm2_out: endpoint {
+                                               remote-endpoint = <&aoss_tpda_in2>;
                                        };
                                };
+                       };
+               };
 
-                               port@4 {
-                                       reg = <4>;
-
-                                       dlst_ch_funnel_in4: endpoint {
-                                               remote-endpoint = <&dlst_funnel_out>;
-                                       };
-                               };
+               tpdm@4b0c000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04b0c000 0x0 0x1000>;
 
-                               port@6 {
-                                       reg = <6>;
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
 
-                                       dlst_ch_funnel_in6: endpoint {
-                                               remote-endpoint = <&gdsp_funnel_out>;
-                                       };
-                               };
-                       };
+                       qcom,cmb-element-bits = <64>;
+                       qcom,cmb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       dlst_ch_funnel_out: endpoint {
-                                               remote-endpoint = <&funnel1_in7>;
+                                       aoss_tpdm3_out: endpoint {
+                                               remote-endpoint = <&aoss_tpda_in3>;
                                        };
                                };
                        };
                };
 
-               tpdm@4980000 {
+               tpdm@4b0d000 {
                        compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04980000 0x0 0x1000>;
+                       reg = <0x0 0x04b0d000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        out-ports {
                                port {
-                                       turing2_tpdm_out: endpoint {
-                                               remote-endpoint = <&turing2_funnel_in0>;
+                                       aoss_tpdm4_out: endpoint {
+                                               remote-endpoint = <&aoss_tpda_in4>;
                                        };
                                };
                        };
                };
 
-               funnel@4983000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04983000 0x0 0x1000>;
+               cti@4b13000 {
+                       compatible = "arm,coresight-cti", "arm,primecell";
+                       reg = <0x0 0x04b13000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
-
-                       in-ports {
-                               port {
-                                       turing2_funnel_in0: endpoint {
-                                               remote-endpoint = <&turing2_tpdm_out>;
-                                       };
-                               };
-                       };
-
-                       out-ports {
-                               port {
-                                       turing2_funnel_out0: endpoint {
-                                               remote-endpoint = <&gdsp_tpda_in5>;
-                                       };
-                               };
-                       };
                };
 
-               tpdm@4ac0000 {
+               tpdm@4b80000 {
                        compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04ac0000 0x0 0x1000>;
+                       reg = <0x0 0x04b80000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        out-ports {
                                port {
-                                       dlmm_tpdm0_out: endpoint {
-                                               remote-endpoint = <&dlmm_tpda_in27>;
+                                       turing0_tpdm0_out: endpoint {
+                                               remote-endpoint = <&turing0_tpda_in0>;
                                        };
                                };
                        };
                };
 
-               tpda@4ac4000 {
+               tpda@4b86000 {
                        compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04ac4000 0x0 0x1000>;
+                       reg = <0x0 0x04b86000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@1b {
-                                       reg = <27>;
-
-                                       dlmm_tpda_in27: endpoint {
-                                               remote-endpoint = <&dlmm_tpdm0_out>;
+                               port {
+                                       turing0_tpda_in0: endpoint {
+                                               remote-endpoint = <&turing0_tpdm0_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       dlmm_tpda_out: endpoint {
-                                               remote-endpoint = <&dlmm_funnel_in0>;
+                                       turing0_tpda_out: endpoint {
+                                               remote-endpoint = <&turing0_funnel_in0>;
                                        };
                                };
                        };
                };
 
-               funnel@4ac5000 {
+               funnel@4b87000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04ac5000 0x0 0x1000>;
+                       reg = <0x0 0x04b87000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        in-ports {
                                port {
-                                       dlmm_funnel_in0: endpoint {
-                                               remote-endpoint = <&dlmm_tpda_out>;
+                                       turing0_funnel_in0: endpoint {
+                                               remote-endpoint = <&turing0_tpda_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       dlmm_funnel_out: endpoint {
-                                               remote-endpoint = <&funnel1_in6>;
+                                       turing0_funnel_out: endpoint {
+                                               remote-endpoint = <&gdsp_funnel_in4>;
                                        };
                                };
                        };
                };
 
-               tpdm@4ad0000 {
+               cti@4b8b000 {
+                       compatible = "arm,coresight-cti", "arm,primecell";
+                       reg = <0x0 0x04b8b000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+               };
+
+               tpdm@4c40000 {
                        compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04ad0000 0x0 0x1000>;
+                       reg = <0x0 0x04c40000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        out-ports {
                                port {
-                                       dlct0_tpdm0_out: endpoint {
-                                               remote-endpoint = <&dlct0_tpda_in26>;
+                                       gdsp_tpdm0_out: endpoint {
+                                               remote-endpoint = <&gdsp_tpda_in8>;
                                        };
                                };
                        };
                };
 
-               tpda@4ad3000 {
+               tpda@4c44000 {
                        compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04ad3000 0x0 0x1000>;
+                       reg = <0x0 0x04c44000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                #address-cells = <1>;
                                #size-cells = <0>;
 
-                               port@13 {
-                                       reg = <19>;
-
-                                       dlct0_tpda_in19: endpoint {
-                                               remote-endpoint = <&prng_tpdm_out>;
-                                       };
-                               };
-
-                               port@19 {
-                                       reg = <25>;
+                               port@5 {
+                                       reg = <5>;
 
-                                       dlct0_tpda_in25: endpoint {
-                                               remote-endpoint = <&pimem_tpdm_out>;
+                                       gdsp_tpda_in5: endpoint {
+                                               remote-endpoint = <&turing2_funnel_out0>;
                                        };
                                };
 
-                               port@1a {
-                                       reg = <26>;
+                               port@8 {
+                                       reg = <8>;
 
-                                       dlct0_tpda_in26: endpoint {
-                                               remote-endpoint = <&dlct0_tpdm0_out>;
+                                       gdsp_tpda_in8: endpoint {
+                                               remote-endpoint = <&gdsp_tpdm0_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       dlct0_tpda_out: endpoint {
-                                               remote-endpoint = <&dlct0_funnel_in0>;
+                                       gdsp_tpda_out: endpoint {
+                                               remote-endpoint = <&gdsp_funnel_in0>;
                                        };
                                };
                        };
                };
 
-               funnel@4ad4000 {
+               funnel@4c45000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04ad4000 0x0 0x1000>;
+                       reg = <0x0 0x04c45000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                port@0 {
                                        reg = <0>;
 
-                                       dlct0_funnel_in0: endpoint {
-                                               remote-endpoint = <&dlct0_tpda_out>;
+                                       gdsp_funnel_in0: endpoint {
+                                               remote-endpoint = <&gdsp_tpda_out>;
                                        };
                                };
 
                                port@4 {
                                        reg = <4>;
 
-                                       dlct0_funnel_in4: endpoint {
-                                               remote-endpoint = <&ddr_funnel5_out>;
+                                       gdsp_funnel_in4: endpoint {
+                                               remote-endpoint = <&turing0_funnel_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       dlct0_funnel_out: endpoint {
-                                               remote-endpoint = <&funnel1_in5>;
+                                       gdsp_funnel_out: endpoint {
+                                               remote-endpoint = <&dlst_ch_funnel_in6>;
                                        };
                                };
                        };
                };
 
-               funnel@4b04000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04b04000 0x0 0x1000>;
+               tpdm@4c50000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04c50000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@6 {
-                                       reg = <6>;
-
-                                       aoss_funnel_in6: endpoint {
-                                               remote-endpoint = <&aoss_tpda_out>;
-                                       };
-                               };
-
-                               port@7 {
-                                       reg = <7>;
-
-                                       aoss_funnel_in7: endpoint {
-                                               remote-endpoint = <&qdss_funnel_out>;
-                                       };
-                               };
-                       };
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       aoss_funnel_out: endpoint {
-                                               remote-endpoint = <&etf0_in>;
+                                       dlst_tpdm0_out: endpoint {
+                                               remote-endpoint = <&dlst_tpda_in8>;
                                        };
                                };
                        };
                };
 
-               tmc_etf: tmc@4b05000 {
-                       compatible = "arm,coresight-tmc", "arm,primecell";
-                       reg = <0x0 0x04b05000 0x0 0x1000>;
+               tpda@4c54000 {
+                       compatible = "qcom,coresight-tpda", "arm,primecell";
+                       reg = <0x0 0x04c54000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        in-ports {
-                               port {
-                                       etf0_in: endpoint {
-                                               remote-endpoint = <&aoss_funnel_out>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@8 {
+                                       reg = <8>;
+
+                                       dlst_tpda_in8: endpoint {
+                                               remote-endpoint = <&dlst_tpdm0_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       etf0_out: endpoint {
-                                               remote-endpoint = <&swao_rep_in>;
+                                       dlst_tpda_out: endpoint {
+                                               remote-endpoint = <&dlst_funnel_in0>;
                                        };
                                };
                        };
                };
 
-               replicator@4b06000 {
-                       compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
-                       reg = <0x0 0x04b06000 0x0 0x1000>;
+               funnel@4c55000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04c55000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        in-ports {
                                port {
-                                       swao_rep_in: endpoint {
-                                               remote-endpoint = <&etf0_out>;
+                                       dlst_funnel_in0: endpoint {
+                                               remote-endpoint = <&dlst_tpda_out>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       dlst_funnel_out: endpoint {
+                                               remote-endpoint = <&dlst_ch_funnel_in4>;
                                        };
                                };
                        };
+               };
 
-                       out-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+               tpdm@4e00000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x04e00000 0x0 0x1000>;
 
-                               port@1 {
-                                       reg = <1>;
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
 
-                                       swao_rep_out1: endpoint {
-                                               remote-endpoint = <&eud_in>;
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
+                       qcom,cmb-element-bits = <32>;
+                       qcom,cmb-msrs-num = <32>;
+
+                       out-ports {
+                               port {
+                                       ddr_tpdm3_out: endpoint {
+                                               remote-endpoint = <&ddr_tpda_in4>;
                                        };
                                };
                        };
                };
 
-               tpda@4b08000 {
+               tpda@4e03000 {
                        compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04b08000 0x0 0x1000>;
+                       reg = <0x0 0x04e03000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                port@0 {
                                        reg = <0>;
 
-                                       aoss_tpda_in0: endpoint {
-                                               remote-endpoint = <&aoss_tpdm0_out>;
+                                       ddr_tpda_in0: endpoint {
+                                               remote-endpoint = <&ddr_funnel0_out0>;
                                        };
                                };
 
                                port@1 {
                                        reg = <1>;
 
-                                       aoss_tpda_in1: endpoint {
-                                               remote-endpoint = <&aoss_tpdm1_out>;
+                                       ddr_tpda_in1: endpoint {
+                                               remote-endpoint = <&ddr_funnel1_out0>;
                                        };
                                };
 
-                               port@2 {
-                                       reg = <2>;
+                               port@4 {
+                                       reg = <4>;
 
-                                       aoss_tpda_in2: endpoint {
-                                               remote-endpoint = <&aoss_tpdm2_out>;
+                                       ddr_tpda_in4: endpoint {
+                                               remote-endpoint = <&ddr_tpdm3_out>;
                                        };
                                };
+                       };
 
-                               port@3 {
-                                       reg = <3>;
-
-                                       aoss_tpda_in3: endpoint {
-                                               remote-endpoint = <&aoss_tpdm3_out>;
+                       out-ports {
+                               port {
+                                       ddr_tpda_out: endpoint {
+                                               remote-endpoint = <&ddr_funnel5_in0>;
                                        };
                                };
+                       };
+               };
 
-                               port@4 {
-                                       reg = <4>;
+               funnel@4e04000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04e04000 0x0 0x1000>;
 
-                                       aoss_tpda_in4: endpoint {
-                                               remote-endpoint = <&aoss_tpdm4_out>;
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               port {
+                                       ddr_funnel5_in0: endpoint {
+                                               remote-endpoint = <&ddr_tpda_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       aoss_tpda_out: endpoint {
-                                               remote-endpoint = <&aoss_funnel_in6>;
+                                       ddr_funnel5_out: endpoint {
+                                               remote-endpoint = <&dlct0_funnel_in4>;
                                        };
                                };
                        };
                };
 
-               tpdm@4b09000 {
+               tpdm@4e10000 {
                        compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04b09000 0x0 0x1000>;
+                       reg = <0x0 0x04e10000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,cmb-element-bits = <64>;
-                       qcom,cmb-msrs-num = <32>;
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       aoss_tpdm0_out: endpoint {
-                                               remote-endpoint = <&aoss_tpda_in0>;
+                                       ddr_tpdm0_out: endpoint {
+                                               remote-endpoint = <&ddr_funnel0_in0>;
                                        };
                                };
                        };
                };
 
-               tpdm@4b0a000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04b0a000 0x0 0x1000>;
+               funnel@4e12000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04e12000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,cmb-element-bits = <64>;
-                       qcom,cmb-msrs-num = <32>;
+                       in-ports {
+                               port {
+                                       ddr_funnel0_in0: endpoint {
+                                               remote-endpoint = <&ddr_tpdm0_out>;
+                                       };
+                               };
+                       };
 
                        out-ports {
                                port {
-                                       aoss_tpdm1_out: endpoint {
-                                               remote-endpoint = <&aoss_tpda_in1>;
+                                       ddr_funnel0_out0: endpoint {
+                                               remote-endpoint = <&ddr_tpda_in0>;
                                        };
                                };
                        };
                };
 
-               tpdm@4b0b000 {
+               tpdm@4e20000 {
                        compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04b0b000 0x0 0x1000>;
+                       reg = <0x0 0x04e20000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,cmb-element-bits = <64>;
-                       qcom,cmb-msrs-num = <32>;
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       aoss_tpdm2_out: endpoint {
-                                               remote-endpoint = <&aoss_tpda_in2>;
+                                       ddr_tpdm1_out: endpoint {
+                                               remote-endpoint = <&ddr_funnel1_in0>;
                                        };
                                };
                        };
                };
 
-               tpdm@4b0c000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04b0c000 0x0 0x1000>;
+               funnel@4e22000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x04e22000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,cmb-element-bits = <64>;
-                       qcom,cmb-msrs-num = <32>;
+                       in-ports {
+                               port {
+                                       ddr_funnel1_in0: endpoint {
+                                               remote-endpoint = <&ddr_tpdm1_out>;
+                                       };
+                               };
+                       };
 
                        out-ports {
                                port {
-                                       aoss_tpdm3_out: endpoint {
-                                               remote-endpoint = <&aoss_tpda_in3>;
+                                       ddr_funnel1_out0: endpoint {
+                                               remote-endpoint = <&ddr_tpda_in1>;
                                        };
                                };
                        };
                };
 
-               tpdm@4b0d000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04b0d000 0x0 0x1000>;
+               etm@6040000 {
+                       compatible = "arm,primecell";
+                       reg = <0x0 0x06040000 0x0 0x1000>;
+                       cpu = <&cpu0>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
 
                        out-ports {
                                port {
-                                       aoss_tpdm4_out: endpoint {
-                                               remote-endpoint = <&aoss_tpda_in4>;
+                                       etm0_out: endpoint {
+                                               remote-endpoint = <&apss_funnel0_in0>;
                                        };
                                };
                        };
                };
 
-               cti@4b13000 {
-                       compatible = "arm,coresight-cti", "arm,primecell";
-                       reg = <0x0 0x04b13000 0x0 0x1000>;
+               etm@6140000 {
+                       compatible = "arm,primecell";
+                       reg = <0x0 0x06140000 0x0 0x1000>;
+                       cpu = <&cpu1>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
+
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm1_out: endpoint {
+                                               remote-endpoint = <&apss_funnel0_in1>;
+                                       };
+                               };
+                       };
                };
 
-               tpdm@4b80000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04b80000 0x0 0x1000>;
+               etm@6240000 {
+                       compatible = "arm,primecell";
+                       reg = <0x0 0x06240000 0x0 0x1000>;
+                       cpu = <&cpu2>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
 
                        out-ports {
                                port {
-                                       turing0_tpdm0_out: endpoint {
-                                               remote-endpoint = <&turing0_tpda_in0>;
+                                       etm2_out: endpoint {
+                                               remote-endpoint = <&apss_funnel0_in2>;
                                        };
                                };
                        };
                };
 
-               tpda@4b86000 {
-                       compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04b86000 0x0 0x1000>;
+               etm@6340000 {
+                       compatible = "arm,primecell";
+                       reg = <0x0 0x06340000 0x0 0x1000>;
+                       cpu = <&cpu3>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       in-ports {
-                               port {
-                                       turing0_tpda_in0: endpoint {
-                                               remote-endpoint = <&turing0_tpdm0_out>;
-                                       };
-                               };
-                       };
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
 
                        out-ports {
                                port {
-                                       turing0_tpda_out: endpoint {
-                                               remote-endpoint = <&turing0_funnel_in0>;
+                                       etm3_out: endpoint {
+                                               remote-endpoint = <&apss_funnel0_in3>;
                                        };
                                };
                        };
                };
 
-               funnel@4b87000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04b87000 0x0 0x1000>;
+               etm@6440000 {
+                       compatible = "arm,primecell";
+                       reg = <0x0 0x06440000 0x0 0x1000>;
+                       cpu = <&cpu4>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       in-ports {
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
                                port {
-                                       turing0_funnel_in0: endpoint {
-                                               remote-endpoint = <&turing0_tpda_out>;
+                                       etm4_out: endpoint {
+                                               remote-endpoint = <&apss_funnel0_in4>;
                                        };
                                };
                        };
+               };
+
+               etm@6540000 {
+                       compatible = "arm,primecell";
+                       reg = <0x0 0x06540000 0x0 0x1000>;
+                       cpu = <&cpu5>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
 
                        out-ports {
                                port {
-                                       turing0_funnel_out: endpoint {
-                                               remote-endpoint = <&gdsp_funnel_in4>;
+                                       etm5_out: endpoint {
+                                               remote-endpoint = <&apss_funnel0_in5>;
                                        };
                                };
                        };
                };
 
-               cti@4b8b000 {
-                       compatible = "arm,coresight-cti", "arm,primecell";
-                       reg = <0x0 0x04b8b000 0x0 0x1000>;
+               etm@6640000 {
+                       compatible = "arm,primecell";
+                       reg = <0x0 0x06640000 0x0 0x1000>;
+                       cpu = <&cpu6>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
+
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
+
+                       out-ports {
+                               port {
+                                       etm6_out: endpoint {
+                                               remote-endpoint = <&apss_funnel0_in6>;
+                                       };
+                               };
+                       };
                };
 
-               tpdm@4c40000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04c40000 0x0 0x1000>;
+               etm@6740000 {
+                       compatible = "arm,primecell";
+                       reg = <0x0 0x06740000 0x0 0x1000>;
+                       cpu = <&cpu7>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                       arm,coresight-loses-context-with-cpu;
+                       qcom,skip-power-up;
 
                        out-ports {
                                port {
-                                       gdsp_tpdm0_out: endpoint {
-                                               remote-endpoint = <&gdsp_tpda_in8>;
+                                       etm7_out: endpoint {
+                                               remote-endpoint = <&apss_funnel0_in7>;
                                        };
                                };
                        };
                };
 
-               tpda@4c44000 {
-                       compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04c44000 0x0 0x1000>;
+               funnel@6800000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x06800000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                #address-cells = <1>;
                                #size-cells = <0>;
 
-                               port@5 {
-                                       reg = <5>;
+                               port@0 {
+                                       reg = <0>;
 
-                                       gdsp_tpda_in5: endpoint {
-                                               remote-endpoint = <&turing2_funnel_out0>;
+                                       apss_funnel0_in0: endpoint {
+                                               remote-endpoint = <&etm0_out>;
                                        };
                                };
 
-                               port@8 {
-                                       reg = <8>;
+                               port@1 {
+                                       reg = <1>;
 
-                                       gdsp_tpda_in8: endpoint {
-                                               remote-endpoint = <&gdsp_tpdm0_out>;
+                                       apss_funnel0_in1: endpoint {
+                                               remote-endpoint = <&etm1_out>;
                                        };
                                };
-                       };
 
-                       out-ports {
-                               port {
-                                       gdsp_tpda_out: endpoint {
-                                               remote-endpoint = <&gdsp_funnel_in0>;
+                               port@2 {
+                                       reg = <2>;
+
+                                       apss_funnel0_in2: endpoint {
+                                               remote-endpoint = <&etm2_out>;
                                        };
                                };
-                       };
-               };
-
-               funnel@4c45000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04c45000 0x0 0x1000>;
-
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-
-                       in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
 
-                               port@0 {
-                                       reg = <0>;
+                               port@3 {
+                                       reg = <3>;
 
-                                       gdsp_funnel_in0: endpoint {
-                                               remote-endpoint = <&gdsp_tpda_out>;
+                                       apss_funnel0_in3: endpoint {
+                                               remote-endpoint = <&etm3_out>;
                                        };
                                };
 
                                port@4 {
                                        reg = <4>;
 
-                                       gdsp_funnel_in4: endpoint {
-                                               remote-endpoint = <&turing0_funnel_out>;
+                                       apss_funnel0_in4: endpoint {
+                                               remote-endpoint = <&etm4_out>;
                                        };
                                };
-                       };
 
-                       out-ports {
-                               port {
-                                       gdsp_funnel_out: endpoint {
-                                               remote-endpoint = <&dlst_ch_funnel_in6>;
+                               port@5 {
+                                       reg = <5>;
+
+                                       apss_funnel0_in5: endpoint {
+                                               remote-endpoint = <&etm5_out>;
                                        };
                                };
-                       };
-               };
 
-               tpdm@4c50000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04c50000 0x0 0x1000>;
+                               port@6 {
+                                       reg = <6>;
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                                       apss_funnel0_in6: endpoint {
+                                               remote-endpoint = <&etm6_out>;
+                                       };
+                               };
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                               port@7 {
+                                       reg = <7>;
+
+                                       apss_funnel0_in7: endpoint {
+                                               remote-endpoint = <&etm7_out>;
+                                       };
+                               };
+                       };
 
                        out-ports {
                                port {
-                                       dlst_tpdm0_out: endpoint {
-                                               remote-endpoint = <&dlst_tpda_in8>;
+                                       apss_funnel0_out: endpoint {
+                                               remote-endpoint = <&apss_funnel1_in0>;
                                        };
                                };
                        };
                };
 
-               tpda@4c54000 {
-                       compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04c54000 0x0 0x1000>;
+               funnel@6810000 {
+                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
+                       reg = <0x0 0x06810000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                #address-cells = <1>;
                                #size-cells = <0>;
 
-                               port@8 {
-                                       reg = <8>;
+                               port@0 {
+                                       reg = <0>;
 
-                                       dlst_tpda_in8: endpoint {
-                                               remote-endpoint = <&dlst_tpdm0_out>;
+                                       apss_funnel1_in0: endpoint {
+                                               remote-endpoint = <&apss_funnel0_out>;
+                                       };
+                               };
+
+                               port@3 {
+                                       reg = <3>;
+
+                                       apss_funnel1_in3: endpoint {
+                                               remote-endpoint = <&apss_tpda_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       dlst_tpda_out: endpoint {
-                                               remote-endpoint = <&dlst_funnel_in0>;
+                                       apss_funnel1_out: endpoint {
+                                               remote-endpoint = <&funnel1_in4>;
                                        };
                                };
                        };
                };
 
-               funnel@4c55000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04c55000 0x0 0x1000>;
+               cti@682b000 {
+                       compatible = "arm,coresight-cti", "arm,primecell";
+                       reg = <0x0 0x0682b000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
+               };
 
-                       in-ports {
-                               port {
-                                       dlst_funnel_in0: endpoint {
-                                               remote-endpoint = <&dlst_tpda_out>;
-                                       };
-                               };
-                       };
+               tpdm@6860000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x06860000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       qcom,cmb-element-bits = <64>;
+                       qcom,cmb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       dlst_funnel_out: endpoint {
-                                               remote-endpoint = <&dlst_ch_funnel_in4>;
+                                       apss_tpdm3_out: endpoint {
+                                               remote-endpoint = <&apss_tpda_in3>;
                                        };
                                };
                        };
                };
 
-               tpdm@4e00000 {
+               tpdm@6861000 {
                        compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04e00000 0x0 0x1000>;
+                       reg = <0x0 0x06861000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
                        qcom,dsb-element-bits = <32>;
                        qcom,dsb-msrs-num = <32>;
-                       qcom,cmb-element-bits = <32>;
-                       qcom,cmb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       ddr_tpdm3_out: endpoint {
-                                               remote-endpoint = <&ddr_tpda_in4>;
+                                       apss_tpdm4_out: endpoint {
+                                               remote-endpoint = <&apss_tpda_in4>;
                                        };
                                };
                        };
                };
 
-               tpda@4e03000 {
+               tpda@6863000 {
                        compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x04e03000 0x0 0x1000>;
+                       reg = <0x0 0x06863000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
                                port@0 {
                                        reg = <0>;
 
-                                       ddr_tpda_in0: endpoint {
-                                               remote-endpoint = <&ddr_funnel0_out0>;
+                                       apss_tpda_in0: endpoint {
+                                               remote-endpoint = <&apss_tpdm0_out>;
                                        };
                                };
 
                                port@1 {
                                        reg = <1>;
 
-                                       ddr_tpda_in1: endpoint {
-                                               remote-endpoint = <&ddr_funnel1_out0>;
-                                       };
-                               };
-
-                               port@4 {
-                                       reg = <4>;
-
-                                       ddr_tpda_in4: endpoint {
-                                               remote-endpoint = <&ddr_tpdm3_out>;
-                                       };
-                               };
-                       };
-
-                       out-ports {
-                               port {
-                                       ddr_tpda_out: endpoint {
-                                               remote-endpoint = <&ddr_funnel5_in0>;
+                                       apss_tpda_in1: endpoint {
+                                               remote-endpoint = <&apss_tpdm1_out>;
                                        };
                                };
-                       };
-               };
-
-               funnel@4e04000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04e04000 0x0 0x1000>;
-
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
 
-                       in-ports {
-                               port {
-                                       ddr_funnel5_in0: endpoint {
-                                               remote-endpoint = <&ddr_tpda_out>;
-                                       };
-                               };
-                       };
+                               port@2 {
+                                       reg = <2>;
 
-                       out-ports {
-                               port {
-                                       ddr_funnel5_out: endpoint {
-                                               remote-endpoint = <&dlct0_funnel_in4>;
+                                       apss_tpda_in2: endpoint {
+                                               remote-endpoint = <&apss_tpdm2_out>;
                                        };
                                };
-                       };
-               };
-
-               tpdm@4e10000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04e10000 0x0 0x1000>;
-
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                               port@3 {
+                                       reg = <3>;
 
-                       out-ports {
-                               port {
-                                       ddr_tpdm0_out: endpoint {
-                                               remote-endpoint = <&ddr_funnel0_in0>;
+                                       apss_tpda_in3: endpoint {
+                                               remote-endpoint = <&apss_tpdm3_out>;
                                        };
                                };
-                       };
-               };
-
-               funnel@4e12000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04e12000 0x0 0x1000>;
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                               port@4 {
+                                       reg = <4>;
 
-                       in-ports {
-                               port {
-                                       ddr_funnel0_in0: endpoint {
-                                               remote-endpoint = <&ddr_tpdm0_out>;
+                                       apss_tpda_in4: endpoint {
+                                               remote-endpoint = <&apss_tpdm4_out>;
                                        };
                                };
                        };
 
                        out-ports {
                                port {
-                                       ddr_funnel0_out0: endpoint {
-                                               remote-endpoint = <&ddr_tpda_in0>;
+                                       apss_tpda_out: endpoint {
+                                               remote-endpoint = <&apss_funnel1_in3>;
                                        };
                                };
                        };
                };
 
-               tpdm@4e20000 {
+               tpdm@68a0000 {
                        compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x04e20000 0x0 0x1000>;
+                       reg = <0x0 0x068a0000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                       qcom,cmb-element-bits = <32>;
+                       qcom,cmb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       ddr_tpdm1_out: endpoint {
-                                               remote-endpoint = <&ddr_funnel1_in0>;
+                                       apss_tpdm1_out: endpoint {
+                                               remote-endpoint = <&apss_tpda_in1>;
                                        };
                                };
                        };
                };
 
-               funnel@4e22000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x04e22000 0x0 0x1000>;
+               tpdm@68b0000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x068b0000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       in-ports {
-                               port {
-                                       ddr_funnel1_in0: endpoint {
-                                               remote-endpoint = <&ddr_tpdm1_out>;
-                                       };
-                               };
-                       };
+                       qcom,cmb-element-bits = <32>;
+                       qcom,cmb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       ddr_funnel1_out0: endpoint {
-                                               remote-endpoint = <&ddr_tpda_in1>;
+                                       apss_tpdm0_out: endpoint {
+                                               remote-endpoint = <&apss_tpda_in0>;
                                        };
                                };
                        };
                };
 
-               etm@6040000 {
-                       compatible = "arm,primecell";
-                       reg = <0x0 0x06040000 0x0 0x1000>;
-                       cpu = <&cpu0>;
+               tpdm@68c0000 {
+                       compatible = "qcom,coresight-tpdm", "arm,primecell";
+                       reg = <0x0 0x068c0000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
 
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       qcom,dsb-element-bits = <32>;
+                       qcom,dsb-msrs-num = <32>;
 
                        out-ports {
                                port {
-                                       etm0_out: endpoint {
-                                               remote-endpoint = <&apss_funnel0_in0>;
+                                       apss_tpdm2_out: endpoint {
+                                               remote-endpoint = <&apss_tpda_in2>;
                                        };
                                };
                        };
                };
 
-               etm@6140000 {
-                       compatible = "arm,primecell";
-                       reg = <0x0 0x06140000 0x0 0x1000>;
-                       cpu = <&cpu1>;
+               cti@68e0000 {
+                       compatible = "arm,coresight-cti", "arm,primecell";
+                       reg = <0x0 0x068e0000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
+               };
 
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+               cti@68f0000 {
+                       compatible = "arm,coresight-cti", "arm,primecell";
+                       reg = <0x0 0x068f0000 0x0 0x1000>;
 
-                       out-ports {
-                               port {
-                                       etm1_out: endpoint {
-                                               remote-endpoint = <&apss_funnel0_in1>;
-                                       };
-                               };
-                       };
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
                };
 
-               etm@6240000 {
-                       compatible = "arm,primecell";
-                       reg = <0x0 0x06240000 0x0 0x1000>;
-                       cpu = <&cpu2>;
+               cti@6900000 {
+                       compatible = "arm,coresight-cti", "arm,primecell";
+                       reg = <0x0 0x06900000 0x0 0x1000>;
 
                        clocks = <&aoss_qmp>;
                        clock-names = "apb_pclk";
+               };
 
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+               usb_1_hsphy: phy@8904000 {
+                       compatible = "qcom,qcs8300-usb-hs-phy",
+                                    "qcom,usb-snps-hs-7nm-phy";
+                       reg = <0x0 0x08904000 0x0 0x400>;
 
-                       out-ports {
-                               port {
-                                       etm2_out: endpoint {
-                                               remote-endpoint = <&apss_funnel0_in2>;
-                                       };
-                               };
-                       };
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "ref";
+
+                       resets = <&gcc GCC_USB2_PHY_PRIM_BCR>;
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
                };
 
-               etm@6340000 {
-                       compatible = "arm,primecell";
-                       reg = <0x0 0x06340000 0x0 0x1000>;
-                       cpu = <&cpu3>;
+               usb_2_hsphy: phy@8906000 {
+                       compatible = "qcom,qcs8300-usb-hs-phy",
+                                    "qcom,usb-snps-hs-7nm-phy";
+                       reg = <0x0 0x08906000 0x0 0x400>;
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "ref";
 
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       resets = <&gcc GCC_USB2_PHY_SEC_BCR>;
 
-                       out-ports {
-                               port {
-                                       etm3_out: endpoint {
-                                               remote-endpoint = <&apss_funnel0_in3>;
-                                       };
-                               };
-                       };
+                       #phy-cells = <0>;
+
+                       status = "disabled";
                };
 
-               etm@6440000 {
-                       compatible = "arm,primecell";
-                       reg = <0x0 0x06440000 0x0 0x1000>;
-                       cpu = <&cpu4>;
+               usb_qmpphy: phy@8907000 {
+                       compatible = "qcom,qcs8300-qmp-usb3-uni-phy";
+                       reg = <0x0 0x08907000 0x0 0x2000>;
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
+                                <&gcc GCC_USB_CLKREF_EN>,
+                                <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>,
+                                <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
+                       clock-names = "aux",
+                                     "ref",
+                                     "com_aux",
+                                     "pipe";
 
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       resets = <&gcc GCC_USB3_PHY_PRIM_BCR>,
+                                <&gcc GCC_USB3PHY_PHY_PRIM_BCR>;
+                       reset-names = "phy", "phy_phy";
 
-                       out-ports {
-                               port {
-                                       etm4_out: endpoint {
-                                               remote-endpoint = <&apss_funnel0_in4>;
-                                       };
+                       power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
+
+                       #clock-cells = <0>;
+                       clock-output-names = "usb3_prim_phy_pipe_clk_src";
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               serdes0: phy@8909000 {
+                       compatible = "qcom,qcs8300-dwmac-sgmii-phy", "qcom,sa8775p-dwmac-sgmii-phy";
+                       reg = <0x0 0x08909000 0x0 0x00000e10>;
+                       clocks = <&gcc GCC_SGMI_CLKREF_EN>;
+                       clock-names = "sgmi_ref";
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+
+               gpucc: clock-controller@3d90000 {
+                       compatible = "qcom,qcs8300-gpucc";
+                       reg = <0x0 0x03d90000 0x0 0xa000>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                                <&gcc GCC_GPU_GPLL0_CLK_SRC>,
+                                <&gcc GCC_GPU_GPLL0_DIV_CLK_SRC>;
+                       clock-names = "bi_tcxo",
+                                     "gcc_gpu_gpll0_clk_src",
+                                     "gcc_gpu_gpll0_div_clk_src";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
+               adreno_smmu: iommu@3da0000 {
+                       compatible = "qcom,qcs8300-smmu-500", "qcom,adreno-smmu",
+                                    "qcom,smmu-500", "arm,mmu-500";
+                       reg = <0x0 0x3da0000 0x0 0x20000>;
+                       #iommu-cells = <2>;
+                       #global-interrupts = <2>;
+
+                       interrupts = <GIC_SPI 672 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 681 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 682 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 683 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 684 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 685 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 686 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 687 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+                                <&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
+                                <&gpucc GPU_CC_AHB_CLK>,
+                                <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
+                                <&gpucc GPU_CC_CX_GMU_CLK>,
+                                <&gpucc GPU_CC_HUB_CX_INT_CLK>,
+                                <&gpucc GPU_CC_HUB_AON_CLK>;
+
+                       clock-names = "gcc_gpu_memnoc_gfx_clk",
+                                     "gcc_gpu_snoc_dvm_gfx_clk",
+                                     "gpu_cc_ahb_clk",
+                                     "gpu_cc_hlos1_vote_gpu_smmu_clk",
+                                     "gpu_cc_cx_gmu_clk",
+                                     "gpu_cc_hub_cx_int_clk",
+                                     "gpu_cc_hub_aon_clk";
+                       power-domains = <&gpucc GPU_CC_CX_GDSC>;
+                       dma-coherent;
+               };
+
+               pmu@9091000 {
+                       compatible = "qcom,qcs8300-llcc-bwmon", "qcom,sc7280-llcc-bwmon";
+                       reg = <0x0 0x9091000 0x0 0x1000>;
+
+                       interrupts = <GIC_SPI 620 IRQ_TYPE_LEVEL_HIGH>;
+
+                       interconnects = <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>;
+
+                       operating-points-v2 = <&llcc_bwmon_opp_table>;
+
+                       llcc_bwmon_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-0 {
+                                       opp-peak-kBps = <762000>;
+                               };
+
+                               opp-1 {
+                                       opp-peak-kBps = <1720000>;
+                               };
+
+                               opp-2 {
+                                       opp-peak-kBps = <2086000>;
+                               };
+
+                               opp-3 {
+                                       opp-peak-kBps = <2601000>;
+                               };
+
+                               opp-4 {
+                                       opp-peak-kBps = <2929000>;
+                               };
+
+                               opp-5 {
+                                       opp-peak-kBps = <5931000>;
+                               };
+
+                               opp-6 {
+                                       opp-peak-kBps = <6515000>;
+                               };
+
+                               opp-7 {
+                                       opp-peak-kBps = <7984000>;
+                               };
+
+                               opp-8 {
+                                       opp-peak-kBps = <10437000>;
+                               };
+
+                               opp-9 {
+                                       opp-peak-kBps = <12195000>;
                                };
                        };
                };
 
-               etm@6540000 {
-                       compatible = "arm,primecell";
-                       reg = <0x0 0x06540000 0x0 0x1000>;
-                       cpu = <&cpu5>;
+               pmu@90b5400 {
+                       compatible = "qcom,qcs8300-cpu-bwmon", "qcom,sdm845-bwmon";
+                       reg = <0x0 0x90b5400 0x0 0x600>;
+                       interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
+
+                       operating-points-v2 = <&cpu_bwmon_opp_table>;
+
+                       cpu_bwmon_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-0 {
+                                       opp-peak-kBps = <9155000>;
+                               };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                               opp-1 {
+                                       opp-peak-kBps = <12298000>;
+                               };
 
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                               opp-2 {
+                                       opp-peak-kBps = <14236000>;
+                               };
 
-                       out-ports {
-                               port {
-                                       etm5_out: endpoint {
-                                               remote-endpoint = <&apss_funnel0_in5>;
-                                       };
+                               opp-3 {
+                                       opp-peak-kBps = <16265000>;
                                };
                        };
                };
 
-               etm@6640000 {
-                       compatible = "arm,primecell";
-                       reg = <0x0 0x06640000 0x0 0x1000>;
-                       cpu = <&cpu6>;
+               pmu@90b6400 {
+                       compatible = "qcom,qcs8300-cpu-bwmon", "qcom,sdm845-bwmon";
+                       reg = <0x0 0x90b6400 0x0 0x600>;
+                       interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       operating-points-v2 = <&cpu_bwmon_opp_table>;
+               };
 
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+               dc_noc: interconnect@90e0000 {
+                       compatible = "qcom,qcs8300-dc-noc";
+                       reg = <0x0 0x090e0000 0x0 0x5080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
+               };
 
-                       out-ports {
-                               port {
-                                       etm6_out: endpoint {
-                                               remote-endpoint = <&apss_funnel0_in6>;
-                                       };
-                               };
-                       };
+               gem_noc: interconnect@9100000 {
+                       compatible = "qcom,qcs8300-gem-noc";
+                       reg = <0x0 0x9100000 0x0 0xf7080>;
+                       #interconnect-cells = <2>;
+                       qcom,bcm-voters = <&apps_bcm_voter>;
                };
 
-               etm@6740000 {
-                       compatible = "arm,primecell";
-                       reg = <0x0 0x06740000 0x0 0x1000>;
-                       cpu = <&cpu7>;
+               llcc: system-cache-controller@9200000 {
+                       compatible = "qcom,qcs8300-llcc";
+                       reg = <0x0 0x09200000 0x0 0x80000>,
+                             <0x0 0x09300000 0x0 0x80000>,
+                             <0x0 0x09400000 0x0 0x80000>,
+                             <0x0 0x09500000 0x0 0x80000>,
+                             <0x0 0x09a00000 0x0 0x80000>;
+                       reg-names = "llcc0_base",
+                                   "llcc1_base",
+                                   "llcc2_base",
+                                   "llcc3_base",
+                                   "llcc_broadcast_base";
+                       interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>;
+               };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+               usb_1: usb@a6f8800 {
+                       compatible = "qcom,qcs8300-dwc3", "qcom,dwc3";
+                       reg = <0x0 0x0a6f8800 0x0 0x400>;
 
-                       arm,coresight-loses-context-with-cpu;
-                       qcom,skip-power-up;
+                       clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB30_PRIM_MASTER_CLK>,
+                                <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
+                                <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
+                       clock-names = "cfg_noc",
+                                     "core",
+                                     "iface",
+                                     "sleep",
+                                     "mock_utmi";
 
-                       out-ports {
-                               port {
-                                       etm7_out: endpoint {
-                                               remote-endpoint = <&apss_funnel0_in7>;
-                                       };
-                               };
-                       };
-               };
+                       assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
+                                         <&gcc GCC_USB30_PRIM_MASTER_CLK>;
+                       assigned-clock-rates = <19200000>, <200000000>;
 
-               funnel@6800000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x06800000 0x0 0x1000>;
+                       interrupts-extended = <&intc GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&intc GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&pdc 14 IRQ_TYPE_EDGE_BOTH>,
+                                             <&pdc 15 IRQ_TYPE_EDGE_BOTH>,
+                                             <&pdc 12 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "pwr_event",
+                                         "hs_phy_irq",
+                                         "dp_hs_phy_irq",
+                                         "dm_hs_phy_irq",
+                                         "ss_phy_irq";
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
+                       required-opps = <&rpmhpd_opp_nom>;
 
-                       in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                       resets = <&gcc GCC_USB30_PRIM_BCR>;
+                       interconnects = <&aggre1_noc MASTER_USB3_0 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                        &config_noc SLAVE_USB3_0 QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "usb-ddr", "apps-usb";
 
-                               port@0 {
-                                       reg = <0>;
+                       wakeup-source;
 
-                                       apss_funnel0_in0: endpoint {
-                                               remote-endpoint = <&etm0_out>;
-                                       };
-                               };
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
 
-                               port@1 {
-                                       reg = <1>;
+                       status = "disabled";
 
-                                       apss_funnel0_in1: endpoint {
-                                               remote-endpoint = <&etm1_out>;
-                                       };
-                               };
+                       usb_1_dwc3: usb@a600000 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0 0x0a600000 0x0 0xe000>;
+                               interrupts = <GIC_SPI 292 IRQ_TYPE_LEVEL_HIGH>;
+                               iommus = <&apps_smmu 0x80 0x0>;
+                               phys = <&usb_1_hsphy>, <&usb_qmpphy>;
+                               phy-names = "usb2-phy", "usb3-phy";
+                               snps,dis_enblslpm_quirk;
+                               snps,dis-u1-entry-quirk;
+                               snps,dis-u2-entry-quirk;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
+                       };
+               };
 
-                               port@2 {
-                                       reg = <2>;
+               usb_2: usb@a4f8800 {
+                       compatible = "qcom,qcs8300-dwc3", "qcom,dwc3";
+                       reg = <0x0 0x0a4f8800 0x0 0x400>;
 
-                                       apss_funnel0_in2: endpoint {
-                                               remote-endpoint = <&etm2_out>;
-                                       };
-                               };
+                       clocks = <&gcc GCC_CFG_NOC_USB2_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB20_MASTER_CLK>,
+                                <&gcc GCC_AGGRE_USB2_PRIM_AXI_CLK>,
+                                <&gcc GCC_USB20_SLEEP_CLK>,
+                                <&gcc GCC_USB20_MOCK_UTMI_CLK>;
+                       clock-names = "cfg_noc",
+                                     "core",
+                                     "iface",
+                                     "sleep",
+                                     "mock_utmi";
 
-                               port@3 {
-                                       reg = <3>;
+                       assigned-clocks = <&gcc GCC_USB20_MOCK_UTMI_CLK>,
+                                         <&gcc GCC_USB20_MASTER_CLK>;
+                       assigned-clock-rates = <19200000>, <120000000>;
 
-                                       apss_funnel0_in3: endpoint {
-                                               remote-endpoint = <&etm3_out>;
-                                       };
-                               };
+                       interrupts-extended = <&intc GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&intc GIC_SPI 443 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&pdc 10 IRQ_TYPE_EDGE_BOTH>,
+                                             <&pdc 9 IRQ_TYPE_EDGE_BOTH>;
+                       interrupt-names = "pwr_event",
+                                         "hs_phy_irq",
+                                         "dp_hs_phy_irq",
+                                         "dm_hs_phy_irq";
 
-                               port@4 {
-                                       reg = <4>;
+                       power-domains = <&gcc GCC_USB20_PRIM_GDSC>;
+                       required-opps = <&rpmhpd_opp_nom>;
 
-                                       apss_funnel0_in4: endpoint {
-                                               remote-endpoint = <&etm4_out>;
-                                       };
-                               };
+                       resets = <&gcc GCC_USB20_PRIM_BCR>;
 
-                               port@5 {
-                                       reg = <5>;
+                       interconnects = <&aggre1_noc MASTER_USB2 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
+                                        &config_noc SLAVE_USB2 QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "usb-ddr", "apps-usb";
 
-                                       apss_funnel0_in5: endpoint {
-                                               remote-endpoint = <&etm5_out>;
-                                       };
-                               };
+                       qcom,select-utmi-as-pipe-clk;
+                       wakeup-source;
 
-                               port@6 {
-                                       reg = <6>;
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
 
-                                       apss_funnel0_in6: endpoint {
-                                               remote-endpoint = <&etm6_out>;
-                                       };
-                               };
+                       status = "disabled";
 
-                               port@7 {
-                                       reg = <7>;
+                       usb_2_dwc3: usb@a400000 {
+                               compatible = "snps,dwc3";
+                               reg = <0x0 0x0a400000 0x0 0xe000>;
 
-                                       apss_funnel0_in7: endpoint {
-                                               remote-endpoint = <&etm7_out>;
-                                       };
-                               };
-                       };
+                               interrupts = <GIC_SPI 442 IRQ_TYPE_LEVEL_HIGH>;
+                               iommus = <&apps_smmu 0x20 0x0>;
 
-                       out-ports {
-                               port {
-                                       apss_funnel0_out: endpoint {
-                                               remote-endpoint = <&apss_funnel1_in0>;
-                                       };
-                               };
+                               phys = <&usb_2_hsphy>;
+                               phy-names = "usb2-phy";
+                               maximum-speed = "high-speed";
+
+                               snps,dis-u1-entry-quirk;
+                               snps,dis-u2-entry-quirk;
+                               snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
+                               snps,dis_enblslpm_quirk;
                        };
                };
 
-               funnel@6810000 {
-                       compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
-                       reg = <0x0 0x06810000 0x0 0x1000>;
+               videocc: clock-controller@abf0000 {
+                       compatible = "qcom,qcs8300-videocc";
+                       reg = <0x0 0x0abf0000 0x0 0x10000>;
+                       clocks = <&gcc GCC_VIDEO_AHB_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK_A>,
+                                <&sleep_clk>;
+                       power-domains = <&rpmhpd RPMHPD_MMCX>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+               camcc: clock-controller@ade0000 {
+                       compatible = "qcom,qcs8300-camcc";
+                       reg = <0x0 0x0ade0000 0x0 0x20000>;
+                       clocks = <&gcc GCC_CAMERA_AHB_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK_A>,
+                                <&sleep_clk>;
+                       power-domains = <&rpmhpd RPMHPD_MMCX>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
 
-                       in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+               dispcc: clock-controller@af00000 {
+                       compatible = "qcom,sa8775p-dispcc0";
+                       reg = <0x0 0x0af00000 0x0 0x20000>;
+                       clocks = <&gcc GCC_DISP_AHB_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK_A>,
+                                <&sleep_clk>,
+                                <0>, <0>, <0>, <0>,
+                                <0>, <0>, <0>, <0>;
+                       power-domains = <&rpmhpd RPMHPD_MMCX>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
 
-                               port@0 {
-                                       reg = <0>;
+               pdc: interrupt-controller@b220000 {
+                       compatible = "qcom,qcs8300-pdc", "qcom,pdc";
+                       reg = <0x0 0xb220000 0x0 0x30000>,
+                             <0x0 0x17c000f0 0x0 0x64>;
+                       interrupt-parent = <&intc>;
+                       #interrupt-cells = <2>;
+                       interrupt-controller;
+                       qcom,pdc-ranges = <0 480 40>,
+                                         <40 140 14>,
+                                         <54 263 1>,
+                                         <55 306 4>,
+                                         <59 312 3>,
+                                         <62 374 2>,
+                                         <64 434 2>,
+                                         <66 438 2>,
+                                         <70 520 1>,
+                                         <73 523 1>,
+                                         <118 568 6>,
+                                         <124 609 3>,
+                                         <159 638 1>,
+                                         <160 720 3>,
+                                         <169 728 30>,
+                                         <199 416 2>,
+                                         <201 449 1>,
+                                         <202 89 1>,
+                                         <203 451 1>,
+                                         <204 462 1>,
+                                         <205 264 1>,
+                                         <206 579 1>,
+                                         <207 653 1>,
+                                         <208 656 1>,
+                                         <209 659 1>,
+                                         <210 122 1>,
+                                         <211 699 1>,
+                                         <212 705 1>,
+                                         <213 450 1>,
+                                         <214 643 2>,
+                                         <216 646 5>,
+                                         <221 390 5>,
+                                         <226 700 2>,
+                                         <228 440 1>,
+                                         <229 663 1>,
+                                         <230 524 2>,
+                                         <232 612 3>,
+                                         <235 723 5>;
+               };
 
-                                       apss_funnel1_in0: endpoint {
-                                               remote-endpoint = <&apss_funnel0_out>;
-                                       };
-                               };
+               aoss_qmp: power-management@c300000 {
+                       compatible = "qcom,qcs8300-aoss-qmp", "qcom,aoss-qmp";
+                       reg = <0x0 0x0c300000 0x0 0x400>;
+                       interrupts-extended = <&ipcc IPCC_CLIENT_AOP
+                                              IPCC_MPROC_SIGNAL_GLINK_QMP
+                                              IRQ_TYPE_EDGE_RISING>;
+                       mboxes = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP>;
+                       #clock-cells = <0>;
+               };
 
-                               port@3 {
-                                       reg = <3>;
+               sram@c3f0000 {
+                       compatible = "qcom,rpmh-stats";
+                       reg = <0x0 0x0c3f0000 0x0 0x400>;
+               };
+
+               spmi_bus: spmi@c440000 {
+                       compatible = "qcom,spmi-pmic-arb";
+                       reg = <0x0 0x0c440000 0x0 0x1100>,
+                             <0x0 0x0c600000 0x0 0x2000000>,
+                             <0x0 0x0e600000 0x0 0x100000>,
+                             <0x0 0x0e700000 0x0 0xa0000>,
+                             <0x0 0x0c40a000 0x0 0x26000>;
+                       reg-names = "core",
+                                   "chnls",
+                                   "obsrvr",
+                                   "intr",
+                                   "cnfg";
+                       qcom,channel = <0>;
+                       qcom,ee = <0>;
+                       interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "periph_irq";
+                       interrupt-controller;
+                       #interrupt-cells = <4>;
+                       #address-cells = <2>;
+                       #size-cells = <0>;
+               };
 
-                                       apss_funnel1_in3: endpoint {
-                                               remote-endpoint = <&apss_tpda_out>;
-                                       };
-                               };
+               tlmm: pinctrl@f100000 {
+                       compatible = "qcom,qcs8300-tlmm";
+                       reg = <0x0 0x0f100000 0x0 0x300000>;
+                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&tlmm 0 0 134>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       wakeup-parent = <&pdc>;
+
+                       qup_i2c0_data_clk: qup-i2c0-data-clk-state {
+                               pins = "gpio17", "gpio18";
+                               function = "qup0_se0";
                        };
 
-                       out-ports {
-                               port {
-                                       apss_funnel1_out: endpoint {
-                                               remote-endpoint = <&funnel1_in4>;
-                                       };
-                               };
+                       qup_i2c1_data_clk: qup-i2c1-data-clk-state {
+                               pins = "gpio19", "gpio20";
+                               function = "qup0_se1";
                        };
-               };
 
-               cti@682b000 {
-                       compatible = "arm,coresight-cti", "arm,primecell";
-                       reg = <0x0 0x0682b000 0x0 0x1000>;
+                       qup_i2c2_data_clk: qup-i2c2-data-clk-state {
+                               pins = "gpio33", "gpio34";
+                               function = "qup0_se2";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-               };
+                       qup_i2c3_data_clk: qup-i2c3-data-clk-state {
+                               pins = "gpio25", "gpio26";
+                               function = "qup0_se3";
+                       };
 
-               tpdm@6860000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x06860000 0x0 0x1000>;
+                       qup_i2c4_data_clk: qup-i2c4-data-clk-state {
+                               pins = "gpio29", "gpio30";
+                               function = "qup0_se4";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       qup_i2c5_data_clk: qup-i2c5-data-clk-state {
+                               pins = "gpio21", "gpio22";
+                               function = "qup0_se5";
+                       };
 
-                       qcom,cmb-element-bits = <64>;
-                       qcom,cmb-msrs-num = <32>;
+                       qup_i2c6_data_clk: qup-i2c6-data-clk-state {
+                               pins = "gpio80", "gpio81";
+                               function = "qup0_se6";
+                       };
 
-                       out-ports {
-                               port {
-                                       apss_tpdm3_out: endpoint {
-                                               remote-endpoint = <&apss_tpda_in3>;
-                                       };
-                               };
+                       qup_i2c8_data_clk: qup-i2c8-data-clk-state {
+                               pins = "gpio37", "gpio38";
+                               function = "qup1_se0";
                        };
-               };
 
-               tpdm@6861000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x06861000 0x0 0x1000>;
+                       qup_i2c9_data_clk: qup-i2c9-data-clk-state {
+                               pins = "gpio39", "gpio40";
+                               function = "qup1_se1";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       qup_i2c10_data_clk: qup-i2c10-data-clk-state {
+                               pins = "gpio84", "gpio85";
+                               function = "qup1_se2";
+                       };
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                       qup_i2c11_data_clk: qup-i2c11-data-clk-state {
+                               pins = "gpio41", "gpio42";
+                               function = "qup1_se3";
+                       };
 
-                       out-ports {
-                               port {
-                                       apss_tpdm4_out: endpoint {
-                                               remote-endpoint = <&apss_tpda_in4>;
-                                       };
-                               };
+                       qup_i2c12_data_clk: qup-i2c12-data-clk-state {
+                               pins = "gpio45", "gpio46";
+                               function = "qup1_se4";
                        };
-               };
 
-               tpda@6863000 {
-                       compatible = "qcom,coresight-tpda", "arm,primecell";
-                       reg = <0x0 0x06863000 0x0 0x1000>;
+                       qup_i2c13_data_clk: qup-i2c13-data-clk-state {
+                               pins = "gpio49", "gpio50";
+                               function = "qup1_se5";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       qup_i2c14_data_clk: qup-i2c14-data-clk-state {
+                               pins = "gpio89", "gpio90";
+                               function = "qup1_se6";
+                       };
 
-                       in-ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
+                       qup_i2c15_data_clk: qup-i2c15-data-clk-state {
+                               pins = "gpio91", "gpio92";
+                               function = "qup1_se7";
+                       };
 
-                               port@0 {
-                                       reg = <0>;
+                       qup_i2c16_data_clk: qup-i2c16-data-clk-state {
+                               pins = "gpio10", "gpio11";
+                               function = "qup2_se0";
+                       };
 
-                                       apss_tpda_in0: endpoint {
-                                               remote-endpoint = <&apss_tpdm0_out>;
-                                       };
-                               };
+                       qup_spi0_data_clk: qup-spi0-data-clk-state {
+                               pins = "gpio17", "gpio18", "gpio19";
+                               function = "qup0_se0";
+                       };
 
-                               port@1 {
-                                       reg = <1>;
+                       qup_spi0_cs: qup-spi0-cs-state {
+                               pins = "gpio20";
+                               function = "qup0_se0";
+                       };
 
-                                       apss_tpda_in1: endpoint {
-                                               remote-endpoint = <&apss_tpdm1_out>;
-                                       };
-                               };
+                       qup_spi0_cs_gpio: qup-spi0-cs-gpio-state {
+                               pins = "gpio20";
+                               function = "gpio";
+                       };
 
-                               port@2 {
-                                       reg = <2>;
+                       qup_spi1_data_clk: qup-spi1-data-clk-state {
+                               pins = "gpio19", "gpio20", "gpio17";
+                               function = "qup0_se1";
+                       };
 
-                                       apss_tpda_in2: endpoint {
-                                               remote-endpoint = <&apss_tpdm2_out>;
-                                       };
-                               };
+                       qup_spi1_cs: qup-spi1-cs-state {
+                               pins = "gpio18";
+                               function = "qup0_se1";
+                       };
 
-                               port@3 {
-                                       reg = <3>;
+                       qup_spi1_cs_gpio: qup-spi1-cs-gpio-state {
+                               pins = "gpio18";
+                               function = "gpio";
+                       };
 
-                                       apss_tpda_in3: endpoint {
-                                               remote-endpoint = <&apss_tpdm3_out>;
-                                       };
-                               };
+                       qup_spi2_data_clk: qup-spi2-data-clk-state {
+                               pins = "gpio33", "gpio34", "gpio35";
+                               function = "qup0_se2";
+                       };
 
-                               port@4 {
-                                       reg = <4>;
+                       qup_spi2_cs: qup-spi2-cs-state {
+                               pins = "gpio36";
+                               function = "qup0_se2";
+                       };
 
-                                       apss_tpda_in4: endpoint {
-                                               remote-endpoint = <&apss_tpdm4_out>;
-                                       };
-                               };
+                       qup_spi2_cs_gpio: qup-spi2-cs-gpio-state {
+                               pins = "gpio36";
+                               function = "gpio";
                        };
 
-                       out-ports {
-                               port {
-                                       apss_tpda_out: endpoint {
-                                               remote-endpoint = <&apss_funnel1_in3>;
-                                       };
-                               };
+                       qup_spi3_data_clk: qup-spi3-data-clk-state {
+                               pins = "gpio25", "gpio26", "gpio27";
+                               function = "qup0_se3";
                        };
-               };
 
-               tpdm@68a0000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x068a0000 0x0 0x1000>;
+                       qup_spi3_cs: qup-spi3-cs-state {
+                               pins = "gpio28";
+                               function = "qup0_se3";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       qup_spi3_cs_gpio: qup-spi3-cs-gpio-state {
+                               pins = "gpio28";
+                               function = "gpio";
+                       };
 
-                       qcom,cmb-element-bits = <32>;
-                       qcom,cmb-msrs-num = <32>;
+                       qup_spi4_data_clk: qup-spi4-data-clk-state {
+                               pins = "gpio29", "gpio30", "gpio31";
+                               function = "qup0_se4";
+                       };
 
-                       out-ports {
-                               port {
-                                       apss_tpdm1_out: endpoint {
-                                               remote-endpoint = <&apss_tpda_in1>;
-                                       };
-                               };
+                       qup_spi4_cs: qup-spi4-cs-state {
+                               pins = "gpio32";
+                               function = "qup0_se4";
                        };
-               };
 
-               tpdm@68b0000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x068b0000 0x0 0x1000>;
+                       qup_spi4_cs_gpio: qup-spi4-cs-gpio-state {
+                               pins = "gpio32";
+                               function = "gpio";
+                       };
+
+                       qup_spi5_data_clk: qup-spi5-data-clk-state {
+                               pins = "gpio21", "gpio22", "gpio23";
+                               function = "qup0_se5";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       qup_spi5_cs: qup-spi5-cs-state {
+                               pins = "gpio24";
+                               function = "qup0_se5";
+                       };
 
-                       qcom,cmb-element-bits = <32>;
-                       qcom,cmb-msrs-num = <32>;
+                       qup_spi5_cs_gpio: qup-spi5-cs-gpio-state {
+                               pins = "gpio24";
+                               function = "gpio";
+                       };
 
-                       out-ports {
-                               port {
-                                       apss_tpdm0_out: endpoint {
-                                               remote-endpoint = <&apss_tpda_in0>;
-                                       };
-                               };
+                       qup_spi6_data_clk: qup-spi6-data-clk-state {
+                               pins = "gpio80", "gpio81", "gpio82";
+                               function = "qup0_se6";
                        };
-               };
 
-               tpdm@68c0000 {
-                       compatible = "qcom,coresight-tpdm", "arm,primecell";
-                       reg = <0x0 0x068c0000 0x0 0x1000>;
+                       qup_spi6_cs: qup-spi6-cs-state {
+                               pins = "gpio83";
+                               function = "qup0_se6";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
+                       qup_spi6_cs_gpio: qup-spi6-cs-gpio-state {
+                               pins = "gpio83";
+                               function = "gpio";
+                       };
 
-                       qcom,dsb-element-bits = <32>;
-                       qcom,dsb-msrs-num = <32>;
+                       qup_spi8_data_clk: qup-spi8-data-clk-state {
+                               pins = "gpio37", "gpio38", "gpio39";
+                               function = "qup1_se0";
+                       };
 
-                       out-ports {
-                               port {
-                                       apss_tpdm2_out: endpoint {
-                                               remote-endpoint = <&apss_tpda_in2>;
-                                       };
-                               };
+                       qup_spi8_cs: qup-spi8-cs-state {
+                               pins = "gpio40";
+                               function = "qup1_se0";
                        };
-               };
 
-               cti@68e0000 {
-                       compatible = "arm,coresight-cti", "arm,primecell";
-                       reg = <0x0 0x068e0000 0x0 0x1000>;
+                       qup_spi8_cs_gpio: qup-spi8-cs-gpio-state {
+                               pins = "gpio40";
+                               function = "gpio";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-               };
+                       qup_spi9_data_clk: qup-spi9-data-clk-state {
+                               pins = "gpio39", "gpio40", "gpio37";
+                               function = "qup1_se1";
+                       };
 
-               cti@68f0000 {
-                       compatible = "arm,coresight-cti", "arm,primecell";
-                       reg = <0x0 0x068f0000 0x0 0x1000>;
+                       qup_spi9_cs: qup-spi9-cs-state {
+                               pins = "gpio38";
+                               function = "qup1_se1";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-               };
+                       qup_spi9_cs_gpio: qup-spi9-cs-gpio-state {
+                               pins = "gpio38";
+                               function = "gpio";
+                       };
 
-               cti@6900000 {
-                       compatible = "arm,coresight-cti", "arm,primecell";
-                       reg = <0x0 0x06900000 0x0 0x1000>;
+                       qup_spi10_data_clk: qup-spi10-data-clk-state {
+                               pins = "gpio84", "gpio85", "gpio86";
+                               function = "qup1_se2";
+                       };
 
-                       clocks = <&aoss_qmp>;
-                       clock-names = "apb_pclk";
-               };
+                       qup_spi10_cs: qup-spi10-cs-state {
+                               pins = "gpio87";
+                               function = "qup1_se2";
+                       };
 
-               usb_1_hsphy: phy@8904000 {
-                       compatible = "qcom,qcs8300-usb-hs-phy",
-                                    "qcom,usb-snps-hs-7nm-phy";
-                       reg = <0x0 0x08904000 0x0 0x400>;
+                       qup_spi10_cs_gpio: qup-spi10-cs-gpio-state {
+                               pins = "gpio87";
+                               function = "gpio";
+                       };
 
-                       clocks = <&rpmhcc RPMH_CXO_CLK>;
-                       clock-names = "ref";
+                       qup_spi12_data_clk: qup-spi12-data-clk-state {
+                               pins = "gpio45", "gpio46", "gpio47";
+                               function = "qup1_se4";
+                       };
 
-                       resets = <&gcc GCC_USB2_PHY_PRIM_BCR>;
+                       qup_spi12_cs: qup-spi12-cs-state {
+                               pins = "gpio48";
+                               function = "qup1_se4";
+                       };
 
-                       #phy-cells = <0>;
+                       qup_spi12_cs_gpio: qup-spi12-cs-gpio-state {
+                               pins = "gpio48";
+                               function = "gpio";
+                       };
 
-                       status = "disabled";
-               };
+                       qup_spi13_data_clk: qup-spi13-data-clk-state {
+                               pins = "gpio49", "gpio50", "gpio51";
+                               function = "qup1_se5";
+                       };
 
-               usb_2_hsphy: phy@8906000 {
-                       compatible = "qcom,qcs8300-usb-hs-phy",
-                                    "qcom,usb-snps-hs-7nm-phy";
-                       reg = <0x0 0x08906000 0x0 0x400>;
+                       qup_spi13_cs: qup-spi13-cs-state {
+                               pins = "gpio52";
+                               function = "qup1_se5";
+                       };
 
-                       clocks = <&rpmhcc RPMH_CXO_CLK>;
-                       clock-names = "ref";
+                       qup_spi13_cs_gpio: qup-spi13-cs-gpio-state {
+                               pins = "gpio52";
+                               function = "gpio";
+                       };
 
-                       resets = <&gcc GCC_USB2_PHY_SEC_BCR>;
+                       qup_spi14_data_clk: qup-spi14-data-clk-state {
+                               pins = "gpio89", "gpio90", "gpio91";
+                               function = "qup1_se6";
+                       };
 
-                       #phy-cells = <0>;
+                       qup_spi14_cs: qup-spi14-cs-state {
+                               pins = "gpio92";
+                               function = "qup1_se6";
+                       };
 
-                       status = "disabled";
-               };
+                       qup_spi14_cs_gpio: qup-spi14-cs-gpio-state {
+                               pins = "gpio92";
+                               function = "gpio";
+                       };
 
-               usb_qmpphy: phy@8907000 {
-                       compatible = "qcom,qcs8300-qmp-usb3-uni-phy";
-                       reg = <0x0 0x08907000 0x0 0x2000>;
+                       qup_spi15_data_clk: qup-spi15-data-clk-state {
+                               pins = "gpio91", "gpio92", "gpio89";
+                               function = "qup1_se7";
+                       };
 
-                       clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
-                                <&gcc GCC_USB_CLKREF_EN>,
-                                <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>,
-                                <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
-                       clock-names = "aux",
-                                     "ref",
-                                     "com_aux",
-                                     "pipe";
+                       qup_spi15_cs: qup-spi15-cs-state {
+                               pins = "gpio90";
+                               function = "qup1_se7";
+                       };
 
-                       resets = <&gcc GCC_USB3_PHY_PRIM_BCR>,
-                                <&gcc GCC_USB3PHY_PHY_PRIM_BCR>;
-                       reset-names = "phy", "phy_phy";
+                       qup_spi15_cs_gpio: qup-spi15-cs-gpio-state {
+                               pins = "gpio90";
+                               function = "gpio";
+                       };
 
-                       power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
+                       qup_spi16_data_clk: qup-spi16-data-clk-state {
+                               pins = "gpio10", "gpio11", "gpio12";
+                               function = "qup2_se0";
+                       };
 
-                       #clock-cells = <0>;
-                       clock-output-names = "usb3_prim_phy_pipe_clk_src";
+                       qup_spi16_cs: qup-spi16-cs-state {
+                               pins = "gpio13";
+                               function = "qup2_se0";
+                       };
 
-                       #phy-cells = <0>;
+                       qup_spi16_cs_gpio: qup-spi16-cs-gpio-state {
+                               pins = "gpio13";
+                               function = "gpio";
+                       };
 
-                       status = "disabled";
-               };
+                       qup_uart0_cts: qup-uart0-cts-state {
+                               pins = "gpio17";
+                               function = "qup0_se0";
+                       };
 
-               serdes0: phy@8909000 {
-                       compatible = "qcom,qcs8300-dwmac-sgmii-phy", "qcom,sa8775p-dwmac-sgmii-phy";
-                       reg = <0x0 0x08909000 0x0 0x00000e10>;
-                       clocks = <&gcc GCC_SGMI_CLKREF_EN>;
-                       clock-names = "sgmi_ref";
-                       #phy-cells = <0>;
-                       status = "disabled";
-               };
+                       qup_uart0_rts: qup-uart0-rts-state {
+                               pins = "gpio18";
+                               function = "qup0_se0";
+                       };
 
-               gpucc: clock-controller@3d90000 {
-                       compatible = "qcom,qcs8300-gpucc";
-                       reg = <0x0 0x03d90000 0x0 0xa000>;
-                       clocks = <&rpmhcc RPMH_CXO_CLK>,
-                                <&gcc GCC_GPU_GPLL0_CLK_SRC>,
-                                <&gcc GCC_GPU_GPLL0_DIV_CLK_SRC>;
-                       clock-names = "bi_tcxo",
-                                     "gcc_gpu_gpll0_clk_src",
-                                     "gcc_gpu_gpll0_div_clk_src";
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-               };
+                       qup_uart0_tx: qup-uart0-tx-state {
+                               pins = "gpio19";
+                               function = "qup0_se0";
+                       };
 
-               pmu@9091000 {
-                       compatible = "qcom,qcs8300-llcc-bwmon", "qcom,sc7280-llcc-bwmon";
-                       reg = <0x0 0x9091000 0x0 0x1000>;
+                       qup_uart0_rx: qup-uart0-rx-state {
+                               pins = "gpio20";
+                               function = "qup0_se0";
+                       };
 
-                       interrupts = <GIC_SPI 620 IRQ_TYPE_LEVEL_HIGH>;
+                       qup_uart1_cts: qup-uart1-cts-state {
+                               pins = "gpio19";
+                               function = "qup0_se1";
+                       };
 
-                       interconnects = <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       qup_uart1_rts: qup-uart1-rts-state {
+                               pins = "gpio20";
+                               function = "qup0_se1";
+                       };
 
-                       operating-points-v2 = <&llcc_bwmon_opp_table>;
+                       qup_uart1_tx: qup-uart1-tx-state {
+                               pins = "gpio17";
+                               function = "qup0_se1";
+                       };
 
-                       llcc_bwmon_opp_table: opp-table {
-                               compatible = "operating-points-v2";
+                       qup_uart1_rx: qup-uart1-rx-state {
+                               pins = "gpio18";
+                               function = "qup0_se1";
+                       };
 
-                               opp-0 {
-                                       opp-peak-kBps = <762000>;
-                               };
+                       qup_uart2_cts: qup-uart2-cts-state {
+                               pins = "gpio33";
+                               function = "qup0_se2";
+                       };
 
-                               opp-1 {
-                                       opp-peak-kBps = <1720000>;
-                               };
+                       qup_uart2_rts: qup-uart2-rts-state {
+                               pins = "gpio34";
+                               function = "qup0_se2";
+                       };
 
-                               opp-2 {
-                                       opp-peak-kBps = <2086000>;
-                               };
+                       qup_uart2_tx: qup-uart2-tx-state {
+                               pins = "gpio35";
+                               function = "qup0_se2";
+                       };
 
-                               opp-3 {
-                                       opp-peak-kBps = <2601000>;
-                               };
+                       qup_uart2_rx: qup-uart2-rx-state {
+                               pins = "gpio36";
+                               function = "qup0_se2";
+                       };
 
-                               opp-4 {
-                                       opp-peak-kBps = <2929000>;
-                               };
+                       qup_uart3_cts: qup-uart3-cts-state {
+                               pins = "gpio25";
+                               function = "qup0_se3";
+                       };
 
-                               opp-5 {
-                                       opp-peak-kBps = <5931000>;
-                               };
+                       qup_uart3_rts: qup-uart3-rts-state {
+                               pins = "gpio26";
+                               function = "qup0_se3";
+                       };
 
-                               opp-6 {
-                                       opp-peak-kBps = <6515000>;
-                               };
+                       qup_uart3_tx: qup-uart3-tx-state {
+                               pins = "gpio27";
+                               function = "qup0_se3";
+                       };
 
-                               opp-7 {
-                                       opp-peak-kBps = <7984000>;
-                               };
+                       qup_uart3_rx: qup-uart3-rx-state {
+                               pins = "gpio28";
+                               function = "qup0_se3";
+                       };
 
-                               opp-8 {
-                                       opp-peak-kBps = <10437000>;
-                               };
+                       qup_uart4_cts: qup-uart4-cts-state {
+                               pins = "gpio29";
+                               function = "qup0_se4";
+                       };
 
-                               opp-9 {
-                                       opp-peak-kBps = <12195000>;
-                               };
+                       qup_uart4_rts: qup-uart4-rts-state {
+                               pins = "gpio30";
+                               function = "qup0_se4";
                        };
-               };
 
-               pmu@90b5400 {
-                       compatible = "qcom,qcs8300-cpu-bwmon", "qcom,sdm845-bwmon";
-                       reg = <0x0 0x90b5400 0x0 0x600>;
-                       interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
-                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
-                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       qup_uart4_tx: qup-uart4-tx-state {
+                               pins = "gpio31";
+                               function = "qup0_se4";
+                       };
 
-                       operating-points-v2 = <&cpu_bwmon_opp_table>;
+                       qup_uart4_rx: qup-uart4-rx-state {
+                               pins = "gpio32";
+                               function = "qup0_se4";
+                       };
 
-                       cpu_bwmon_opp_table: opp-table {
-                               compatible = "operating-points-v2";
+                       qup_uart5_cts: qup-uart5-cts-state {
+                               pins = "gpio21";
+                               function = "qup0_se5";
+                       };
 
-                               opp-0 {
-                                       opp-peak-kBps = <9155000>;
-                               };
+                       qup_uart5_rts: qup-uart5-rts-state {
+                               pins = "gpio22";
+                               function = "qup0_se5";
+                       };
 
-                               opp-1 {
-                                       opp-peak-kBps = <12298000>;
-                               };
+                       qup_uart5_tx: qup-uart5-tx-state {
+                               pins = "gpio23";
+                               function = "qup0_se5";
+                       };
 
-                               opp-2 {
-                                       opp-peak-kBps = <14236000>;
-                               };
+                       qup_uart5_rx: qup-uart5-rx-state {
+                               pins = "gpio23";
+                               function = "qup0_se5";
+                       };
 
-                               opp-3 {
-                                       opp-peak-kBps = <16265000>;
-                               };
+                       qup_uart6_cts: qup-uart6-cts-state {
+                               pins = "gpio80";
+                               function = "qup0_se6";
                        };
-               };
 
-               pmu@90b6400 {
-                       compatible = "qcom,qcs8300-cpu-bwmon", "qcom,sdm845-bwmon";
-                       reg = <0x0 0x90b6400 0x0 0x600>;
-                       interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
-                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
-                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       qup_uart6_rts: qup-uart6-rts-state {
+                               pins = "gpio81";
+                               function = "qup0_se6";
+                       };
 
-                       operating-points-v2 = <&cpu_bwmon_opp_table>;
-               };
+                       qup_uart6_tx: qup-uart6-tx-state {
+                               pins = "gpio82";
+                               function = "qup0_se6";
+                       };
 
-               dc_noc: interconnect@90e0000 {
-                       compatible = "qcom,qcs8300-dc-noc";
-                       reg = <0x0 0x090e0000 0x0 0x5080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       qup_uart6_rx: qup-uart6-rx-state {
+                               pins = "gpio83";
+                               function = "qup0_se6";
+                       };
 
-               gem_noc: interconnect@9100000 {
-                       compatible = "qcom,qcs8300-gem-noc";
-                       reg = <0x0 0x9100000 0x0 0xf7080>;
-                       #interconnect-cells = <2>;
-                       qcom,bcm-voters = <&apps_bcm_voter>;
-               };
+                       qup_uart7_tx: qup-uart7-tx-state {
+                               pins = "gpio43";
+                               function = "qup0_se7";
+                       };
 
-               llcc: system-cache-controller@9200000 {
-                       compatible = "qcom,qcs8300-llcc";
-                       reg = <0x0 0x09200000 0x0 0x80000>,
-                             <0x0 0x09300000 0x0 0x80000>,
-                             <0x0 0x09400000 0x0 0x80000>,
-                             <0x0 0x09500000 0x0 0x80000>,
-                             <0x0 0x09a00000 0x0 0x80000>;
-                       reg-names = "llcc0_base",
-                                   "llcc1_base",
-                                   "llcc2_base",
-                                   "llcc3_base",
-                                   "llcc_broadcast_base";
-                       interrupts = <GIC_SPI 582 IRQ_TYPE_LEVEL_HIGH>;
-               };
+                       qup_uart7_rx: qup-uart7-rx-state {
+                               pins = "gpio44";
+                               function = "qup0_se7";
+                       };
 
-               usb_1: usb@a6f8800 {
-                       compatible = "qcom,qcs8300-dwc3", "qcom,dwc3";
-                       reg = <0x0 0x0a6f8800 0x0 0x400>;
+                       qup_uart8_cts: qup-uart8-cts-state {
+                               pins = "gpio37";
+                               function = "qup1_se0";
+                       };
 
-                       clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
-                                <&gcc GCC_USB30_PRIM_MASTER_CLK>,
-                                <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
-                                <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
-                                <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
-                       clock-names = "cfg_noc",
-                                     "core",
-                                     "iface",
-                                     "sleep",
-                                     "mock_utmi";
+                       qup_uart8_rts: qup-uart8-rts-state {
+                               pins = "gpio38";
+                               function = "qup1_se0";
+                       };
 
-                       assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
-                                         <&gcc GCC_USB30_PRIM_MASTER_CLK>;
-                       assigned-clock-rates = <19200000>, <200000000>;
+                       qup_uart8_tx: qup-uart8-tx-state {
+                               pins = "gpio39";
+                               function = "qup1_se0";
+                       };
 
-                       interrupts-extended = <&intc GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>,
-                                             <&intc GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
-                                             <&pdc 14 IRQ_TYPE_EDGE_BOTH>,
-                                             <&pdc 15 IRQ_TYPE_EDGE_BOTH>,
-                                             <&pdc 12 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "pwr_event",
-                                         "hs_phy_irq",
-                                         "dp_hs_phy_irq",
-                                         "dm_hs_phy_irq",
-                                         "ss_phy_irq";
+                       qup_uart8_rx: qup-uart8-rx-state {
+                               pins = "gpio40";
+                               function = "qup1_se0";
+                       };
 
-                       power-domains = <&gcc GCC_USB30_PRIM_GDSC>;
-                       required-opps = <&rpmhpd_opp_nom>;
+                       qup_uart9_cts: qup-uart9-cts-state {
+                               pins = "gpio39";
+                               function = "qup1_se1";
+                       };
 
-                       resets = <&gcc GCC_USB30_PRIM_BCR>;
-                       interconnects = <&aggre1_noc MASTER_USB3_0 QCOM_ICC_TAG_ALWAYS
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_USB3_0 QCOM_ICC_TAG_ALWAYS>;
-                       interconnect-names = "usb-ddr", "apps-usb";
+                       qup_uart9_rts: qup-uart9-rts-state {
+                               pins = "gpio40";
+                               function = "qup1_se1";
+                       };
 
-                       wakeup-source;
+                       qup_uart9_tx: qup-uart9-tx-state {
+                               pins = "gpio37";
+                               function = "qup1_se1";
+                       };
 
-                       #address-cells = <2>;
-                       #size-cells = <2>;
-                       ranges;
+                       qup_uart9_rx: qup-uart9-rx-state {
+                               pins = "gpio38";
+                               function = "qup1_se1";
+                       };
 
-                       status = "disabled";
+                       qup_uart10_cts: qup-uart10-cts-state {
+                               pins = "gpio84";
+                               function = "qup1_se2";
+                       };
 
-                       usb_1_dwc3: usb@a600000 {
-                               compatible = "snps,dwc3";
-                               reg = <0x0 0x0a600000 0x0 0xe000>;
-                               interrupts = <GIC_SPI 292 IRQ_TYPE_LEVEL_HIGH>;
-                               iommus = <&apps_smmu 0x80 0x0>;
-                               phys = <&usb_1_hsphy>, <&usb_qmpphy>;
-                               phy-names = "usb2-phy", "usb3-phy";
-                               snps,dis_enblslpm_quirk;
-                               snps,dis-u1-entry-quirk;
-                               snps,dis-u2-entry-quirk;
-                               snps,dis_u2_susphy_quirk;
-                               snps,dis_u3_susphy_quirk;
+                       qup_uart10_rts: qup-uart10-rts-state {
+                               pins = "gpio84";
+                               function = "qup1_se2";
                        };
-               };
 
-               usb_2: usb@a4f8800 {
-                       compatible = "qcom,qcs8300-dwc3", "qcom,dwc3";
-                       reg = <0x0 0x0a4f8800 0x0 0x400>;
+                       qup_uart10_tx: qup-uart10-tx-state {
+                               pins = "gpio85";
+                               function = "qup1_se2";
+                       };
 
-                       clocks = <&gcc GCC_CFG_NOC_USB2_PRIM_AXI_CLK>,
-                                <&gcc GCC_USB20_MASTER_CLK>,
-                                <&gcc GCC_AGGRE_USB2_PRIM_AXI_CLK>,
-                                <&gcc GCC_USB20_SLEEP_CLK>,
-                                <&gcc GCC_USB20_MOCK_UTMI_CLK>;
-                       clock-names = "cfg_noc",
-                                     "core",
-                                     "iface",
-                                     "sleep",
-                                     "mock_utmi";
+                       qup_uart10_rx: qup-uart10-rx-state {
+                               pins = "gpio87";
+                               function = "qup1_se2";
+                       };
 
-                       assigned-clocks = <&gcc GCC_USB20_MOCK_UTMI_CLK>,
-                                         <&gcc GCC_USB20_MASTER_CLK>;
-                       assigned-clock-rates = <19200000>, <120000000>;
+                       qup_uart11_tx: qup-uart11-tx-state {
+                               pins = "gpio41";
+                               function = "qup1_se3";
+                       };
 
-                       interrupts-extended = <&intc GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>,
-                                             <&intc GIC_SPI 443 IRQ_TYPE_LEVEL_HIGH>,
-                                             <&pdc 10 IRQ_TYPE_EDGE_BOTH>,
-                                             <&pdc 9 IRQ_TYPE_EDGE_BOTH>;
-                       interrupt-names = "pwr_event",
-                                         "hs_phy_irq",
-                                         "dp_hs_phy_irq",
-                                         "dm_hs_phy_irq";
+                       qup_uart11_rx: qup-uart11-rx-state {
+                               pins = "gpio42";
+                               function = "qup1_se3";
+                       };
 
-                       power-domains = <&gcc GCC_USB20_PRIM_GDSC>;
-                       required-opps = <&rpmhpd_opp_nom>;
+                       qup_uart12_cts: qup-uart12-cts-state {
+                               pins = "gpio45";
+                               function = "qup1_se4";
+                       };
 
-                       resets = <&gcc GCC_USB20_PRIM_BCR>;
+                       qup_uart12_rts: qup-uart12-rts-state {
+                               pins = "gpio46";
+                               function = "qup1_se4";
+                       };
 
-                       interconnects = <&aggre1_noc MASTER_USB2 QCOM_ICC_TAG_ALWAYS
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_USB2 QCOM_ICC_TAG_ALWAYS>;
-                       interconnect-names = "usb-ddr", "apps-usb";
+                       qup_uart12_tx: qup-uart12-tx-state {
+                               pins = "gpio47";
+                               function = "qup1_se4";
+                       };
 
-                       qcom,select-utmi-as-pipe-clk;
-                       wakeup-source;
+                       qup_uart12_rx: qup-uart12-rx-state {
+                               pins = "gpio48";
+                               function = "qup1_se4";
+                       };
 
-                       #address-cells = <2>;
-                       #size-cells = <2>;
-                       ranges;
+                       qup_uart13_cts: qup-uart13-cts-state {
+                               pins = "gpio49";
+                               function = "qup1_se5";
+                       };
 
-                       status = "disabled";
+                       qup_uart13_rts: qup-uart13-rts-state {
+                               pins = "gpio50";
+                               function = "qup1_se5";
+                       };
 
-                       usb_2_dwc3: usb@a400000 {
-                               compatible = "snps,dwc3";
-                               reg = <0x0 0x0a400000 0x0 0xe000>;
+                       qup_uart13_tx: qup-uart13-tx-state {
+                               pins = "gpio51";
+                               function = "qup1_se5";
+                       };
 
-                               interrupts = <GIC_SPI 442 IRQ_TYPE_LEVEL_HIGH>;
-                               iommus = <&apps_smmu 0x20 0x0>;
+                       qup_uart13_rx: qup-uart13-rx-state {
+                               pins = "gpio52";
+                               function = "qup1_se5";
+                       };
 
-                               phys = <&usb_2_hsphy>;
-                               phy-names = "usb2-phy";
-                               maximum-speed = "high-speed";
+                       qup_uart14_cts: qup-uart14-cts-state {
+                               pins = "gpio89";
+                               function = "qup1_se6";
+                       };
 
-                               snps,dis-u1-entry-quirk;
-                               snps,dis-u2-entry-quirk;
-                               snps,dis_u2_susphy_quirk;
-                               snps,dis_u3_susphy_quirk;
-                               snps,dis_enblslpm_quirk;
+                       qup_uart14_rts: qup-uart14-rts-state {
+                               pins = "gpio90";
+                               function = "qup1_se6";
                        };
-               };
 
-               videocc: clock-controller@abf0000 {
-                       compatible = "qcom,qcs8300-videocc";
-                       reg = <0x0 0x0abf0000 0x0 0x10000>;
-                       clocks = <&gcc GCC_VIDEO_AHB_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK_A>,
-                                <&sleep_clk>;
-                       power-domains = <&rpmhpd RPMHPD_MMCX>;
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-               };
+                       qup_uart14_tx: qup-uart14-tx-state {
+                               pins = "gpio91";
+                               function = "qup1_se6";
+                       };
 
-               camcc: clock-controller@ade0000 {
-                       compatible = "qcom,qcs8300-camcc";
-                       reg = <0x0 0x0ade0000 0x0 0x20000>;
-                       clocks = <&gcc GCC_CAMERA_AHB_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK_A>,
-                                <&sleep_clk>;
-                       power-domains = <&rpmhpd RPMHPD_MMCX>;
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-               };
+                       qup_uart14_rx: qup-uart14-rx-state {
+                               pins = "gpio92";
+                               function = "qup1_se6";
+                       };
 
-               dispcc: clock-controller@af00000 {
-                       compatible = "qcom,sa8775p-dispcc0";
-                       reg = <0x0 0x0af00000 0x0 0x20000>;
-                       clocks = <&gcc GCC_DISP_AHB_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK>,
-                                <&rpmhcc RPMH_CXO_CLK_A>,
-                                <&sleep_clk>,
-                                <0>, <0>, <0>, <0>,
-                                <0>, <0>, <0>, <0>;
-                       power-domains = <&rpmhpd RPMHPD_MMCX>;
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-               };
+                       qup_uart15_cts: qup-uart15-cts-state {
+                               pins = "gpio91";
+                               function = "qup1_se7";
+                       };
 
-               pdc: interrupt-controller@b220000 {
-                       compatible = "qcom,qcs8300-pdc", "qcom,pdc";
-                       reg = <0x0 0xb220000 0x0 0x30000>,
-                             <0x0 0x17c000f0 0x0 0x64>;
-                       interrupt-parent = <&intc>;
-                       #interrupt-cells = <2>;
-                       interrupt-controller;
-                       qcom,pdc-ranges = <0 480 40>,
-                                         <40 140 14>,
-                                         <54 263 1>,
-                                         <55 306 4>,
-                                         <59 312 3>,
-                                         <62 374 2>,
-                                         <64 434 2>,
-                                         <66 438 2>,
-                                         <70 520 1>,
-                                         <73 523 1>,
-                                         <118 568 6>,
-                                         <124 609 3>,
-                                         <159 638 1>,
-                                         <160 720 3>,
-                                         <169 728 30>,
-                                         <199 416 2>,
-                                         <201 449 1>,
-                                         <202 89 1>,
-                                         <203 451 1>,
-                                         <204 462 1>,
-                                         <205 264 1>,
-                                         <206 579 1>,
-                                         <207 653 1>,
-                                         <208 656 1>,
-                                         <209 659 1>,
-                                         <210 122 1>,
-                                         <211 699 1>,
-                                         <212 705 1>,
-                                         <213 450 1>,
-                                         <214 643 2>,
-                                         <216 646 5>,
-                                         <221 390 5>,
-                                         <226 700 2>,
-                                         <228 440 1>,
-                                         <229 663 1>,
-                                         <230 524 2>,
-                                         <232 612 3>,
-                                         <235 723 5>;
-               };
+                       qup_uart15_rts: qup-uart15-rts-state {
+                               pins = "gpio92";
+                               function = "qup1_se7";
+                       };
 
-               aoss_qmp: power-management@c300000 {
-                       compatible = "qcom,qcs8300-aoss-qmp", "qcom,aoss-qmp";
-                       reg = <0x0 0x0c300000 0x0 0x400>;
-                       interrupts-extended = <&ipcc IPCC_CLIENT_AOP
-                                              IPCC_MPROC_SIGNAL_GLINK_QMP
-                                              IRQ_TYPE_EDGE_RISING>;
-                       mboxes = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP>;
-                       #clock-cells = <0>;
-               };
+                       qup_uart15_tx: qup-uart15-tx-state {
+                               pins = "gpio89";
+                               function = "qup1_se7";
+                       };
 
-               tlmm: pinctrl@f100000 {
-                       compatible = "qcom,qcs8300-tlmm";
-                       reg = <0x0 0x0f100000 0x0 0x300000>;
-                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
-                       gpio-controller;
-                       #gpio-cells = <2>;
-                       gpio-ranges = <&tlmm 0 0 134>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-                       wakeup-parent = <&pdc>;
+                       qup_uart15_rx: qup-uart15-rx-state {
+                               pins = "gpio90";
+                               function = "qup1_se7";
+                       };
 
-                       qup_uart7_default: qup-uart7-state {
-                               /* TX, RX */
-                               pins = "gpio43", "gpio44";
-                               function = "qup0_se7";
+                       qup_uart16_cts: qup-uart16-cts-state {
+                               pins = "gpio10";
+                               function = "qup2_se0";
+                       };
+
+                       qup_uart16_rts: qup-uart16-rts-state {
+                               pins = "gpio11";
+                               function = "qup2_se0";
+                       };
+
+                       qup_uart16_tx: qup-uart16-tx-state {
+                               pins = "gpio12";
+                               function = "qup2_se0";
+                       };
+
+                       qup_uart16_rx: qup-uart16-rx-state {
+                               pins = "gpio13";
+                               function = "qup2_se0";
                        };
                };
 
                                     <GIC_SPI 895 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+               pcie_smmu: iommu@15200000 {
+                       compatible = "qcom,qcs8300-smmu-500", "qcom,smmu-500", "arm,mmu-500";
+                       reg = <0x0 0x15200000 0x0 0x80000>;
+                       #iommu-cells = <2>;
+                       #global-interrupts = <2>;
+                       dma-coherent;
+
+                       interrupts = <GIC_SPI 920 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 921 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 925 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 926 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 927 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 928 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 950 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 951 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 952 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 953 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 954 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 955 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 956 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 957 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 958 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 885 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 886 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 887 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 888 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 820 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 823 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 447 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 452 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 840 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 841 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 842 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 843 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 844 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 845 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 846 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 847 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 848 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 849 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 802 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 803 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 804 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 805 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 806 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 807 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 808 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 809 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 810 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 811 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 812 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 813 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 814 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 836 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 837 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 838 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 839 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 854 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 855 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 856 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 790 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 791 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 792 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 793 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 794 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 795 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 796 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 639 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 640 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                intc: interrupt-controller@17a00000 {
                        compatible = "arm,gic-v3";
                        reg = <0x0 0x17a00000 0x0 0x10000>,
                        };
                };
 
+               cpufreq_hw: cpufreq@18591000 {
+                       compatible = "qcom,qcs8300-cpufreq-epss", "qcom,cpufreq-epss";
+                       reg = <0x0 0x18591000 0x0 0x1000>,
+                             <0x0 0x18593000 0x0 0x1000>,
+                             <0x0 0x18594000 0x0 0x1000>;
+                       reg-names = "freq-domain0",
+                                   "freq-domain1",
+                                   "freq-domain2";
+
+                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "dcvsh-irq-0",
+                                         "dcvsh-irq-1",
+                                         "dcvsh-irq-2";
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>;
+                       clock-names = "xo", "alternate";
+
+                       #freq-domain-cells = <1>;
+               };
+
                remoteproc_gpdsp: remoteproc@20c00000 {
                        compatible = "qcom,qcs8300-gpdsp-pas", "qcom,sa8775p-gpdsp0-pas";
                        reg = <0x0 0x20c00000 0x0 0x10000>;
index f973aa8f74775d2a6812b866736df527211019f8..846e5e5899aa3797d030898f0ff7d373889e96ae 100644 (file)
@@ -47,7 +47,7 @@
                        enable-method = "psci";
                        power-domains = <&cpu_pd0>;
                        power-domain-names = "psci";
-                       qcom,freq-domains = <&cpufreq_hw 0>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
                        next-level-cache = <&l2_0>;
                        l2_0: l2-cache {
                                compatible = "cache";
@@ -70,7 +70,7 @@
                        enable-method = "psci";
                        power-domains = <&cpu_pd1>;
                        power-domain-names = "psci";
-                       qcom,freq-domains = <&cpufreq_hw 0>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
                        next-level-cache = <&l2_100>;
                        l2_100: l2-cache {
                                compatible = "cache";
@@ -88,7 +88,7 @@
                        enable-method = "psci";
                        power-domains = <&cpu_pd2>;
                        power-domain-names = "psci";
-                       qcom,freq-domains = <&cpufreq_hw 0>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
                        next-level-cache = <&l2_200>;
                        l2_200: l2-cache {
                                compatible = "cache";
                        enable-method = "psci";
                        power-domains = <&cpu_pd3>;
                        power-domain-names = "psci";
-                       qcom,freq-domains = <&cpufreq_hw 0>;
+                       qcom,freq-domain = <&cpufreq_hw 0>;
                        next-level-cache = <&l2_300>;
                        l2_300: l2-cache {
                                compatible = "cache";
 
                                iommus = <&apps_smmu 0xc0 0x0>;
                                snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
                                snps,dis_enblslpm_quirk;
                                snps,dis-u1-entry-quirk;
                                snps,dis-u2-entry-quirk;
index 7a789b41c2f1887f0c41ae24da2e2fe8915ab13c..b2e0fc5501c1eefc7e037b2efd939126b483b226 100644 (file)
@@ -15,6 +15,7 @@
 
        aliases {
                serial0 = &uart4;
+               serial1 = &uart3;
                sdhc1 = &sdhc_1;
                sdhc2 = &sdhc_2;
        };
 };
 
 &tlmm {
+       uart3_default: uart3-default-state {
+               cts-pins {
+                       pins = "gpio8";
+                       function = "qup3";
+                       drive-strength = <2>;
+                       bias-bus-hold;
+               };
+
+               rts-pins {
+                       pins = "gpio9";
+                       function = "qup3";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               tx-pins {
+                       pins = "gpio10";
+                       function = "qup3";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               rx-pins {
+                       pins = "gpio11";
+                       function = "qup3";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       uart3_sleep: uart3-sleep-state {
+               cts-pins {
+                       pins = "gpio8";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-bus-hold;
+               };
+
+               rts-pins {
+                       pins = "gpio9";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-down;
+               };
+
+               tx-pins {
+                       pins = "gpio10";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               rx-pins {
+                       pins = "gpio11";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
        lt9611_rst_pin: lt9611-rst-state {
                pins = "gpio41";
                function = "gpio";
        };
 };
 
+&uart3 {
+       /delete-property/ interrupts;
+       interrupts-extended = <&intc GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
+                             <&tlmm 11 IRQ_TYPE_LEVEL_HIGH>;
+       pinctrl-0 = <&uart3_default>;
+       pinctrl-1 = <&uart3_sleep>;
+       pinctrl-names = "default", "sleep";
+
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn3950-bt";
+
+               vddio-supply = <&pm4125_l15>;
+               vddxo-supply = <&pm4125_l13>;
+               vddrf-supply = <&pm4125_l10>;
+               vddch0-supply = <&pm4125_l22>;
+               enable-gpios = <&tlmm 87 GPIO_ACTIVE_HIGH>;
+               max-speed = <3200000>;
+       };
+};
+
 /* UART connected to the Micro-USB port via a FTDI chip */
 &uart4 {
        compatible = "qcom,geni-debug-uart";
        vdd-1.8-xo-supply = <&pm4125_l13>;
        vdd-1.3-rfa-supply = <&pm4125_l10>;
        vdd-3.3-ch0-supply = <&pm4125_l22>;
-       qcom,ath10k-calibration-variant = "Thundercomm_RB1";
+       qcom,calibration-variant = "Thundercomm_RB1";
        firmware-name = "qcm2290";
        status = "okay";
 };
index 52db18847803e3d6bc7acf34f5b9b4f0f10e8f32..a37860175d2733214f1b257e84d5cb4821033242 100644 (file)
                pinctrl-0 = <&lpi_i2s2_active>;
                pinctrl-names = "default";
                model = "Qualcomm-RB2-WSA8815-Speakers-DMIC0";
-               audio-routing = "MM_DL1", "MultiMedia1 Playback",
-                               "MM_DL2", "MultiMedia2 Playback";
 
                mm1-dai-link {
                        link-name = "MultiMedia1";
        vdd-1.8-xo-supply = <&vreg_l16a_1p3>;
        vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
        vdd-3.3-ch0-supply = <&vreg_l23a_3p3>;
-       qcom,ath10k-calibration-variant = "Thundercomm_RB2";
+       qcom,calibration-variant = "Thundercomm_RB2";
        firmware-name = "qrb4210";
 
        status = "okay";
index ae256c713a36078afdadc67193f381a19ea8e5d3..5fe331923dd3cd31ff2be047a2228e1c4104e80e 100644 (file)
@@ -9,17 +9,6 @@
 #include <dt-bindings/clock/qcom,camcc-sm8250.h>
 #include <dt-bindings/gpio/gpio.h>
 
-/ {
-       reserved-memory {
-               linux,cma {
-                       compatible = "shared-dma-pool";
-                       size = <0x0 0x8000000>;
-                       reusable;
-                       linux,cma-default;
-               };
-       };
-};
-
 &camcc {
        status = "okay";
 };
index 7afa5acac3fcf7cb6f8c5274acdc2e55192c1280..33ecbc81997c5ecb5606c7555adefd1a53634b80 100644 (file)
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
+       };
+
+       dai@3 {
+               direction = <Q6ASM_DAI_RX>;
+               is-compress-dai;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>;
        };
 };
 
        no-mmc;
 };
 
+&slpi {
+       firmware-name = "qcom/sm8250/Thundercomm/RB5/slpi.mbn";
+
+       status = "okay";
+};
+
 &sound {
        compatible = "qcom,qrb5165-rb5-sndcard";
        pinctrl-0 = <&tert_mi2s_active>;
                "SpkrLeft IN", "WSA_SPK1 OUT",
                "SpkrRight IN", "WSA_SPK2 OUT",
                "VA DMIC0", "vdd-micb",
-               "VA DMIC1", "vdd-micb",
-               "MM_DL1",  "MultiMedia1 Playback",
-               "MM_DL2",  "MultiMedia2 Playback",
-               "MultiMedia3 Capture", "MM_UL3";
+               "VA DMIC1", "vdd-micb";
 
        mm1-dai-link {
                link-name = "MultiMedia1";
                };
        };
 
+       mm4-dai-link {
+               link-name = "MultiMedia4";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
+               };
+       };
+
        hdmi-dai-link {
                link-name = "HDMI Playback";
                cpu {
index 9e9c7f81096bbafe771780698da19a7e2f908416..388d5ecee949780a9487c08cc96b7ae4156e097b 100644 (file)
 
        phy-handle = <&rgmii_phy>;
        phy-mode = "rgmii";
-       max-speed = <1000>;
 
        mdio {
                compatible = "snps,dwmac-mdio";
 
 &remoteproc_adsp {
        status = "okay";
-       firmware-name = "qcom/sa8155p/adsp.mdt";
+       firmware-name = "qcom/sa8155p/adsp.mbn";
 };
 
 &remoteproc_cdsp {
        status = "okay";
-       firmware-name = "qcom/sa8155p/cdsp.mdt";
+       firmware-name = "qcom/sa8155p/cdsp.mbn";
 };
 
 &sdhc_2 {
index 177b9dad6ff703467ea4d10e0f5a651d11569275..44177e9b64b52bf56eb48d2b02d9c3e4592ed086 100644 (file)
        snps,mtl-rx-config = <&ethernet0_mtl_rx_setup>;
        snps,mtl-tx-config = <&ethernet0_mtl_tx_setup>;
 
-       max-speed = <1000>;
        phy-handle = <&rgmii_phy>;
        phy-mode = "rgmii-txid";
 
 
        ethernet0_mtl_tx_setup: tx-queues-config {
                snps,tx-queues-to-use = <1>;
-               snps,tx-sched-sp;
 
                queue0 {
                        snps,dcb-algorithm;
        snps,mtl-rx-config = <&ethernet1_mtl_rx_setup>;
        snps,mtl-tx-config = <&ethernet1_mtl_tx_setup>;
 
-       max-speed = <1000>;
        phy-mode = "rgmii-txid";
 
        pinctrl-names = "default";
 
        ethernet1_mtl_tx_setup: tx-queues-config {
                snps,tx-queues-to-use = <1>;
-               snps,tx-sched-sp;
 
                queue0 {
                        snps,dcb-algorithm;
index 175f8b1e3b2ded15fc3265ac8c26b14473b618f6..3ae416ab66e8b30e52529934f0379a581c6c1e32 100644 (file)
 
        mtl_tx_setup: tx-queues-config {
                snps,tx-queues-to-use = <4>;
-               snps,tx-sched-sp;
 
                queue0 {
                        snps,dcb-algorithm;
 
        mtl_tx_setup1: tx-queues-config {
                snps,tx-queues-to-use = <4>;
-               snps,tx-sched-sp;
 
                queue0 {
                        snps,dcb-algorithm;
 
 &i2c11 {
        clock-frequency = <400000>;
-       pinctrl-0 = <&qup_i2c11_default>;
-       pinctrl-names = "default";
        status = "okay";
 };
 
 &i2c18 {
        clock-frequency = <400000>;
-       pinctrl-0 = <&qup_i2c18_default>;
-       pinctrl-names = "default";
        status = "okay";
 };
 
        status = "okay";
 };
 
+&qup_spi16_default {
+       drive-strength = <6>;
+       bias-disable;
+};
+
+&qup_i2c11_default {
+       drive-strength = <2>;
+       bias-pull-up;
+};
+
+&qup_i2c18_default {
+       drive-strength = <2>;
+       bias-pull-up;
+};
+
+&qup_uart12_cts {
+       bias-disable;
+};
+
+&qup_uart12_rts {
+       bias-pull-down;
+};
+
+&qup_uart12_tx {
+       bias-pull-up;
+};
+
+&qup_uart12_rx {
+       bias-pull-down;
+};
+
+&qup_uart17_cts {
+       bias-disable;
+};
+
+&qup_uart17_rts {
+       bias-pull-down;
+};
+
+&qup_uart17_tx {
+       bias-pull-up;
+};
+
+&qup_uart17_rx {
+       bias-pull-down;
+};
+
 &serdes0 {
        phy-supply = <&vreg_l5a>;
        status = "okay";
 };
 
 &spi16 {
-       pinctrl-0 = <&qup_spi16_default>;
-       pinctrl-names = "default";
        status = "okay";
 };
 
                };
        };
 
-       qup_uart10_default: qup-uart10-state {
-               pins = "gpio46", "gpio47";
-               function = "qup1_se3";
-       };
-
-       qup_spi16_default: qup-spi16-state {
-               pins = "gpio86", "gpio87", "gpio88", "gpio89";
-               function = "qup2_se2";
-               drive-strength = <6>;
-               bias-disable;
-       };
-
-       qup_i2c11_default: qup-i2c11-state {
-               pins = "gpio48", "gpio49";
-               function = "qup1_se4";
-               drive-strength = <2>;
-               bias-pull-up;
-       };
-
-       qup_i2c18_default: qup-i2c18-state {
-               pins = "gpio95", "gpio96";
-               function = "qup2_se4";
-               drive-strength = <2>;
-               bias-pull-up;
-       };
-
-       qup_uart12_default: qup-uart12-state {
-               qup_uart12_cts: qup-uart12-cts-pins {
-                       pins = "gpio52";
-                       function = "qup1_se5";
-                       bias-disable;
-               };
-
-               qup_uart12_rts: qup-uart12-rts-pins {
-                       pins = "gpio53";
-                       function = "qup1_se5";
-                       bias-pull-down;
-               };
-
-               qup_uart12_tx: qup-uart12-tx-pins {
-                       pins = "gpio54";
-                       function = "qup1_se5";
-                       bias-pull-up;
-               };
-
-               qup_uart12_rx: qup-uart12-rx-pins {
-                       pins = "gpio55";
-                       function = "qup1_se5";
-                       bias-pull-down;
-               };
-       };
-
-       qup_uart17_default: qup-uart17-state {
-               qup_uart17_cts: qup-uart17-cts-pins {
-                       pins = "gpio91";
-                       function = "qup2_se3";
-                       bias-disable;
-               };
-
-               qup_uart17_rts: qup0-uart17-rts-pins {
-                       pins = "gpio92";
-                       function = "qup2_se3";
-                       bias-pull-down;
-               };
-
-               qup_uart17_tx: qup0-uart17-tx-pins {
-                       pins = "gpio93";
-                       function = "qup2_se3";
-                       bias-pull-up;
-               };
-
-               qup_uart17_rx: qup0-uart17-rx-pins {
-                       pins = "gpio94";
-                       function = "qup2_se3";
-                       bias-pull-down;
-               };
-       };
-
        pcie0_default_state: pcie0-default-state {
                perst-pins {
                        pins = "gpio2";
                compatible = "pci17cb,1101";
                reg = <0x10000 0x0 0x0 0x0 0x0>;
 
-               qcom,ath11k-calibration-variant = "QC_SA8775P_Ride";
+               qcom,calibration-variant = "QC_SA8775P_Ride";
 
                vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
                vddaon-supply = <&vreg_pmu_aon_0p59>;
 
 &uart10 {
        compatible = "qcom,geni-debug-uart";
-       pinctrl-0 = <&qup_uart10_default>;
-       pinctrl-names = "default";
        status = "okay";
 };
 
 
        bluetooth {
                compatible = "qcom,wcn6855-bt";
+               firmware-name = "QCA6698/hpnv21", "QCA6698/hpbtfw21.tlv";
 
                vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
                vddaon-supply = <&vreg_pmu_aon_0p59>;
index 3394ae2d13003417a15e64c9e47833725ec779e6..45f536633f6449e6ce6bb0109b5446968921f684 100644 (file)
 
                cluster_0_pd: power-domain-cluster0 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_2_pd>;
                        domain-idle-states = <&cluster_sleep_gold>;
+                       power-domains = <&system_pd>;
                };
 
                cluster_1_pd: power-domain-cluster1 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_2_pd>;
                        domain-idle-states = <&cluster_sleep_gold>;
+                       power-domains = <&system_pd>;
                };
 
-               cluster_2_pd: power-domain-cluster2 {
+               system_pd: power-domain-system {
                        #power-domain-cells = <0>;
                        domain-idle-states = <&cluster_sleep_apss_rsc_pc>;
                };
                                interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c14_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi14_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart14_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c15_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi15_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart15_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c16_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi16_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart16_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c17_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi17_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart17_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c18_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi18_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart18_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c19_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi19_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart19_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c20_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi20_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart20_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 550 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c0_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 550 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi0_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 550 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart0_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 551 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c1_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 551 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi1_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 551 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart1_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 529 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c2_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 529 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi2_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 529 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart2_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c3_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi3_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart3_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c4_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi4_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart4_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c5_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi5_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart5_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c7_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi7_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
+                               pinctrl-0 = <&qup_uart7_default>;
+                               pinctrl-names = "default";
                                interconnect-names = "qup-core", "qup-config";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c8_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi8_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
+                               pinctrl-0 = <&qup_uart8_default>;
+                               pinctrl-names = "default";
                                interconnect-names = "qup-core", "qup-config";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c9_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi9_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart9_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c10_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi10_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
+                               pinctrl-0 = <&qup_uart10_default>;
+                               pinctrl-names = "default";
                                interconnect-names = "qup-core", "qup-config";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 0
                                                 &clk_virt SLAVE_QUP_CORE_1 0>,
                                interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c11_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi11_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
+                               pinctrl-0 = <&qup_uart11_default>;
+                               pinctrl-names = "default";
                                interconnect-names = "qup-core", "qup-config";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c12_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi12_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_uart12_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 836 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c13_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 831 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP3_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_i2c21_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS
                                                &clk_virt SLAVE_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS>,
                                           <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                interrupts = <GIC_SPI 831 IRQ_TYPE_LEVEL_HIGH>;
                                clocks = <&gcc GCC_QUPV3_WRAP3_S0_CLK>;
                                clock-names = "se";
+                               pinctrl-0 = <&qup_spi21_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS
                                                &clk_virt SLAVE_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS>,
                                           <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP3_S0_CLK>;
                                interconnect-names = "qup-core", "qup-config";
+                               pinctrl-0 = <&qup_uart21_default>;
+                               pinctrl-names = "default";
                                interconnects = <&clk_virt MASTER_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_3 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                        interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
                        #dma-cells = <1>;
                        qcom,ee = <0>;
+                       qcom,num-ees = <4>;
+                       num-channels = <20>;
                        qcom,controlled-remotely;
                        iommus = <&apps_smmu 0x480 0x00>,
                                 <&apps_smmu 0x481 0x00>;
                };
 
-               crypto: crypto@1dfa000 {
-                       compatible = "qcom,sa8775p-qce", "qcom,qce";
-                       reg = <0x0 0x01dfa000 0x0 0x6000>;
-                       dmas = <&cryptobam 4>, <&cryptobam 5>;
-                       dma-names = "rx", "tx";
-                       iommus = <&apps_smmu 0x480 0x00>,
-                                <&apps_smmu 0x481 0x00>;
-                       interconnects = <&aggre2_noc MASTER_CRYPTO_CORE0 0 &mc_virt SLAVE_EBI1 0>;
-                       interconnect-names = "memory";
+               ctcu@4001000 {
+                       compatible = "qcom,sa8775p-ctcu";
+                       reg = <0x0 0x04001000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb";
+
+                       in-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       ctcu_in0: endpoint {
+                                               remote-endpoint = <&etr0_out>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       ctcu_in1: endpoint {
+                                               remote-endpoint = <&etr1_out>;
+                                       };
+                               };
+                       };
                };
 
                stm: stm@4002000 {
                        };
                };
 
+               replicator@4046000 {
+                       compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
+                       reg = <0x0 0x04046000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               port {
+                                       qdss_rep_in: endpoint {
+                                               remote-endpoint = <&swao_rep_out0>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       qdss_rep_out0: endpoint {
+                                               remote-endpoint = <&etr_rep_in>;
+                                       };
+                               };
+                       };
+               };
+
+               tmc_etr: tmc@4048000 {
+                       compatible = "arm,coresight-tmc", "arm,primecell";
+                       reg = <0x0 0x04048000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       iommus = <&apps_smmu 0x04c0 0x00>;
+
+                       arm,scatter-gather;
+
+                       in-ports {
+                               port {
+                                       etr0_in: endpoint {
+                                               remote-endpoint = <&etr_rep_out0>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       etr0_out: endpoint {
+                                               remote-endpoint = <&ctcu_in0>;
+                                       };
+                               };
+                       };
+               };
+
+               replicator@404e000 {
+                       compatible = "arm,coresight-dynamic-replicator", "arm,primecell";
+                       reg = <0x0 0x0404e000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+
+                       in-ports {
+                               port {
+                                       etr_rep_in: endpoint {
+                                               remote-endpoint = <&qdss_rep_out0>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       etr_rep_out0: endpoint {
+                                               remote-endpoint = <&etr0_in>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       etr_rep_out1: endpoint {
+                                               remote-endpoint = <&etr1_in>;
+                                       };
+                               };
+                       };
+               };
+
+               tmc_etr1: tmc@404f000 {
+                       compatible = "arm,coresight-tmc", "arm,primecell";
+                       reg = <0x0 0x0404f000 0x0 0x1000>;
+
+                       clocks = <&aoss_qmp>;
+                       clock-names = "apb_pclk";
+                       iommus = <&apps_smmu 0x04a0 0x40>;
+
+                       arm,scatter-gather;
+                       arm,buffer-size = <0x400000>;
+
+                       in-ports {
+                               port {
+                                       etr1_in: endpoint {
+                                               remote-endpoint = <&etr_rep_out1>;
+                                       };
+                               };
+                       };
+
+                       out-ports {
+                               port {
+                                       etr1_out: endpoint {
+                                               remote-endpoint = <&ctcu_in1>;
+                                       };
+                               };
+                       };
+               };
+
                funnel@4b04000 {
                        compatible = "arm,coresight-dynamic-funnel", "arm,primecell";
                        reg = <0x0 0x4b04000 0x0 0x1000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
 
+                               port@0 {
+                                       reg = <0>;
+
+                                       swao_rep_out0: endpoint {
+                                               remote-endpoint = <&qdss_rep_in>;
+                                       };
+                               };
+
                                port@1 {
                                        reg = <1>;
                                        swao_rep_out1: endpoint {
                        reg-names = "mdss";
 
                        /* same path used twice */
-                       interconnects = <&mmss_noc MASTER_MDP0 QCOM_ICC_TAG_ACTIVE_ONLY
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
-                                       <&mmss_noc MASTER_MDP1 QCOM_ICC_TAG_ACTIVE_ONLY
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                       interconnects = <&mmss_noc MASTER_MDP0 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&mmss_noc MASTER_MDP1 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
                                        <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
                                         &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "mdp0-mem",
                        mdss0_mdp: display-controller@ae01000 {
                                compatible = "qcom,sa8775p-dpu";
                                reg = <0x0 0x0ae01000 0x0 0x8f000>,
-                                     <0x0 0x0aeb0000 0x0 0x2008>;
+                                     <0x0 0x0aeb0000 0x0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
                        #interrupt-cells = <2>;
                        gpio-ranges = <&tlmm 0 0 149>;
                        wakeup-parent = <&pdc>;
+
+                       qup_i2c0_default: qup-i2c0-state {
+                               pins = "gpio20", "gpio21";
+                               function = "qup0_se0";
+                       };
+
+                       qup_i2c1_default: qup-i2c1-state {
+                               pins = "gpio24", "gpio25";
+                               function = "qup0_se1";
+                       };
+
+                       qup_i2c2_default: qup-i2c2-state {
+                               pins = "gpio36", "gpio37";
+                               function = "qup0_se2";
+                       };
+
+                       qup_i2c3_default: qup-i2c3-state {
+                               pins = "gpio28", "gpio29";
+                               function = "qup0_se3";
+                       };
+
+                       qup_i2c4_default: qup-i2c4-state {
+                               pins = "gpio32", "gpio33";
+                               function = "qup0_se4";
+                       };
+
+                       qup_i2c5_default: qup-i2c5-state {
+                               pins = "gpio36", "gpio37";
+                               function = "qup0_se5";
+                       };
+
+                       qup_i2c7_default: qup-i2c7-state {
+                               pins = "gpio40", "gpio41";
+                               function = "qup1_se0";
+                       };
+
+                       qup_i2c8_default: qup-i2c8-state {
+                               pins = "gpio42", "gpio43";
+                               function = "qup1_se1";
+                       };
+
+                       qup_i2c9_default: qup-i2c9-state {
+                               pins = "gpio46", "gpio47";
+                               function = "qup1_se2";
+                       };
+
+                       qup_i2c10_default: qup-i2c10-state {
+                               pins = "gpio44", "gpio45";
+                               function = "qup1_se3";
+                       };
+
+                       qup_i2c11_default: qup-i2c11-state {
+                               pins = "gpio48", "gpio49";
+                               function = "qup1_se4";
+                       };
+
+                       qup_i2c12_default: qup-i2c12-state {
+                               pins = "gpio52", "gpio53";
+                               function = "qup1_se5";
+                       };
+
+                       qup_i2c13_default: qup-i2c13-state {
+                               pins = "gpio56", "gpio57";
+                               function = "qup1_se6";
+                       };
+
+                       qup_i2c14_default: qup-i2c14-state {
+                               pins = "gpio80", "gpio81";
+                               function = "qup2_se0";
+                       };
+
+                       qup_i2c15_default: qup-i2c15-state {
+                               pins = "gpio84", "gpio85";
+                               function = "qup2_se1";
+                       };
+
+                       qup_i2c16_default: qup-i2c16-state {
+                               pins = "gpio86", "gpio87";
+                               function = "qup2_se2";
+                       };
+
+                       qup_i2c17_default: qup-i2c17-state {
+                               pins = "gpio91", "gpio92";
+                               function = "qup2_se3";
+                       };
+
+                       qup_i2c18_default: qup-i2c18-state {
+                               pins = "gpio95", "gpio96";
+                               function = "qup2_se4";
+                       };
+
+                       qup_i2c19_default: qup-i2c19-state {
+                               pins = "gpio99", "gpio100";
+                               function = "qup2_se5";
+                       };
+
+                       qup_i2c20_default: qup-i2c20-state {
+                               pins = "gpio97", "gpio98";
+                               function = "qup2_se6";
+                       };
+
+                       qup_i2c21_default: qup-i2c21-state {
+                               pins = "gpio13", "gpio14";
+                               function = "qup3_se0";
+                       };
+
+                       qup_spi0_default: qup-spi0-state {
+                               pins = "gpio20", "gpio21", "gpio22", "gpio23";
+                               function = "qup0_se0";
+                       };
+
+                       qup_spi1_default: qup-spi1-state {
+                               pins = "gpio24", "gpio25", "gpio26", "gpio27";
+                               function = "qup0_se1";
+                       };
+
+                       qup_spi2_default: qup-spi2-state {
+                               pins = "gpio36", "gpio37", "gpio38", "gpio39";
+                               function = "qup0_se2";
+                       };
+
+                       qup_spi3_default: qup-spi3-state {
+                               pins = "gpio28", "gpio29", "gpio30", "gpio31";
+                               function = "qup0_se3";
+                       };
+
+                       qup_spi4_default: qup-spi4-state {
+                               pins = "gpio32", "gpio33", "gpio34", "gpio35";
+                               function = "qup0_se4";
+                       };
+
+                       qup_spi5_default: qup-spi5-state {
+                               pins = "gpio36", "gpio37", "gpio38", "gpio39";
+                               function = "qup0_se5";
+                       };
+
+                       qup_spi7_default: qup-spi7-state {
+                               pins = "gpio40", "gpio41", "gpio42", "gpio43";
+                               function = "qup1_se0";
+                       };
+
+                       qup_spi8_default: qup-spi8-state {
+                               pins = "gpio42", "gpio43", "gpio40", "gpio41";
+                               function = "qup1_se1";
+                       };
+
+                       qup_spi9_default: qup-spi9-state {
+                               pins = "gpio46", "gpio47", "gpio44", "gpio45";
+                               function = "qup1_se2";
+                       };
+
+                       qup_spi10_default: qup-spi10-state {
+                               pins = "gpio44", "gpio45", "gpio46", "gpio47";
+                               function = "qup1_se3";
+                       };
+
+                       qup_spi11_default: qup-spi11-state {
+                               pins = "gpio48", "gpio49", "gpio50", "gpio51";
+                               function = "qup1_se4";
+                       };
+
+                       qup_spi12_default: qup-spi12-state {
+                               pins = "gpio52", "gpio53", "gpio54", "gpio55";
+                               function = "qup1_se5";
+                       };
+
+                       qup_spi14_default: qup-spi14-state {
+                               pins = "gpio80", "gpio81", "gpio82", "gpio83";
+                               function = "qup2_se0";
+                       };
+
+                       qup_spi15_default: qup-spi15-state {
+                               pins = "gpio84", "gpio85", "gpio99", "gpio100";
+                               function = "qup2_se1";
+                       };
+
+                       qup_spi16_default: qup-spi16-state {
+                               pins = "gpio86", "gpio87", "gpio88", "gpio89";
+                               function = "qup2_se2";
+                       };
+
+                       qup_spi17_default: qup-spi17-state {
+                               pins = "gpio91", "gpio92", "gpio93", "gpio94";
+                               function = "qup2_se3";
+                       };
+
+                       qup_spi18_default: qup-spi18-state {
+                               pins = "gpio95", "gpio96", "gpio97", "gpio98";
+                               function = "qup2_se4";
+                       };
+
+                       qup_spi19_default: qup-spi19-state {
+                               pins = "gpio99", "gpio100", "gpio84", "gpio85";
+                               function = "qup2_se5";
+                       };
+
+                       qup_spi20_default: qup-spi20-state {
+                               pins = "gpio97", "gpio98", "gpio95", "gpio96";
+                               function = "qup2_se6";
+                       };
+
+                       qup_spi21_default: qup-spi21-state {
+                               pins = "gpio13", "gpio14", "gpio15", "gpio16";
+                               function = "qup3_se0";
+                       };
+
+                       qup_uart0_default: qup-uart0-state {
+                               qup_uart0_cts: qup-uart0-cts-pins {
+                                       pins = "gpio20";
+                                       function = "qup0_se0";
+                               };
+
+                               qup_uart0_rts: qup-uart0-rts-pins {
+                                       pins = "gpio21";
+                                       function = "qup0_se0";
+                               };
+
+                               qup_uart0_tx: qup-uart0-tx-pins {
+                                       pins = "gpio22";
+                                       function = "qup0_se0";
+                               };
+
+                               qup_uart0_rx: qup-uart0-rx-pins {
+                                       pins = "gpio23";
+                                       function = "qup0_se0";
+                               };
+                       };
+
+                       qup_uart1_default: qup-uart1-state {
+                               qup_uart1_cts: qup-uart1-cts-pins {
+                                       pins = "gpio24";
+                                       function = "qup0_se1";
+                               };
+
+                               qup_uart1_rts: qup-uart1-rts-pins {
+                                       pins = "gpio25";
+                                       function = "qup0_se1";
+                               };
+
+                               qup_uart1_tx: qup-uart1-tx-pins {
+                                       pins = "gpio26";
+                                       function = "qup0_se1";
+                               };
+
+                               qup_uart1_rx: qup-uart1-rx-pins {
+                                       pins = "gpio27";
+                                       function = "qup0_se1";
+                               };
+                       };
+
+                       qup_uart2_default: qup-uart2-state {
+                               qup_uart2_cts: qup-uart2-cts-pins {
+                                       pins = "gpio36";
+                                       function = "qup0_se2";
+                               };
+
+                               qup_uart2_rts: qup-uart2-rts-pins {
+                                       pins = "gpio37";
+                                       function = "qup0_se2";
+                               };
+
+                               qup_uart2_tx: qup-uart2-tx-pins {
+                                       pins = "gpio38";
+                                       function = "qup0_se2";
+                               };
+
+                               qup_uart2_rx: qup-uart2-rx-pins {
+                                       pins = "gpio39";
+                                       function = "qup0_se2";
+                               };
+                       };
+
+                       qup_uart3_default: qup-uart3-state {
+                               qup_uart3_cts: qup-uart3-cts-pins {
+                                       pins = "gpio28";
+                                       function = "qup0_se3";
+                               };
+
+                               qup_uart3_rts: qup-uart3-rts-pins {
+                                       pins = "gpio29";
+                                       function = "qup0_se3";
+                               };
+
+                               qup_uart3_tx: qup-uart3-tx-pins {
+                                       pins = "gpio30";
+                                       function = "qup0_se3";
+                               };
+
+                               qup_uart3_rx: qup-uart3-rx-pins {
+                                       pins = "gpio31";
+                                       function = "qup0_se3";
+                               };
+                       };
+
+                       qup_uart4_default: qup-uart4-state {
+                               qup_uart4_cts: qup-uart4-cts-pins {
+                                       pins = "gpio32";
+                                       function = "qup0_se4";
+                               };
+
+                               qup_uart4_rts: qup-uart4-rts-pins {
+                                       pins = "gpio33";
+                                       function = "qup0_se4";
+                               };
+
+                               qup_uart4_tx: qup-uart4-tx-pins {
+                                       pins = "gpio34";
+                                       function = "qup0_se4";
+                               };
+
+                               qup_uart4_rx: qup-uart4-rx-pins {
+                                       pins = "gpio35";
+                                       function = "qup0_se4";
+                               };
+                       };
+
+                       qup_uart5_default: qup-uart5-state {
+                               qup_uart5_cts: qup-uart5-cts-pins {
+                                       pins = "gpio36";
+                                       function = "qup0_se5";
+                               };
+
+                               qup_uart5_rts: qup-uart5-rts-pins {
+                                       pins = "gpio37";
+                                       function = "qup0_se5";
+                               };
+
+                               qup_uart5_tx: qup-uart5-tx-pins {
+                                       pins = "gpio38";
+                                       function = "qup0_se5";
+                               };
+
+                               qup_uart5_rx: qup-uart5-rx-pins {
+                                       pins = "gpio39";
+                                       function = "qup0_se5";
+                               };
+                       };
+
+                       qup_uart7_default: qup-uart7-state {
+                               qup_uart7_cts: qup-uart7-cts-pins {
+                                       pins = "gpio40";
+                                       function = "qup1_se0";
+                               };
+
+                               qup_uart7_rts: qup-uart7-rts-pins {
+                                       pins = "gpio41";
+                                       function = "qup1_se0";
+                               };
+
+                               qup_uart7_tx: qup-uart7-tx-pins {
+                                       pins = "gpio42";
+                                       function = "qup1_se0";
+                               };
+
+                               qup_uart7_rx: qup-uart7-rx-pins {
+                                       pins = "gpio43";
+                                       function = "qup1_se0";
+                               };
+                       };
+
+                       qup_uart8_default: qup-uart8-state {
+                               qup_uart8_cts: qup-uart8-cts-pins {
+                                       pins = "gpio42";
+                                       function = "qup1_se1";
+                               };
+
+                               qup_uart8_rts: qup-uart8-rts-pins {
+                                       pins = "gpio43";
+                                       function = "qup1_se1";
+                               };
+
+                               qup_uart8_tx: qup-uart8-tx-pins {
+                                       pins = "gpio40";
+                                       function = "qup1_se1";
+                               };
+
+                               qup_uart8_rx: qup-uart8-rx-pins {
+                                       pins = "gpio41";
+                                       function = "qup1_se1";
+                               };
+                       };
+
+                       qup_uart9_default: qup-uart9-state {
+                               qup_uart9_cts: qup-uart9-cts-pins {
+                                       pins = "gpio46";
+                                       function = "qup1_se2";
+                               };
+
+                               qup_uart9_rts: qup-uart9-rts-pins {
+                                       pins = "gpio47";
+                                       function = "qup1_se2";
+                               };
+
+                               qup_uart9_tx: qup-uart9-tx-pins {
+                                       pins = "gpio44";
+                                       function = "qup1_se2";
+                               };
+
+                               qup_uart9_rx: qup-uart9-rx-pins {
+                                       pins = "gpio45";
+                                       function = "qup1_se2";
+                               };
+                       };
+
+                       qup_uart10_default: qup-uart10-state {
+                               pins = "gpio46", "gpio47";
+                               function = "qup1_se3";
+                       };
+
+                       qup_uart11_default: qup-uart11-state {
+                               qup_uart11_cts: qup-uart11-cts-pins {
+                                       pins = "gpio48";
+                                       function = "qup1_se4";
+                               };
+
+                               qup_uart11_rts: qup-uart11-rts-pins {
+                                       pins = "gpio49";
+                                       function = "qup1_se4";
+                               };
+
+                               qup_uart11_tx: qup-uart11-tx-pins {
+                                       pins = "gpio50";
+                                       function = "qup1_se4";
+                               };
+
+                               qup_uart11_rx: qup-uart11-rx-pins {
+                                       pins = "gpio51";
+                                       function = "qup1_se4";
+                               };
+                       };
+
+                       qup_uart12_default: qup-uart12-state {
+                               qup_uart12_cts: qup-uart12-cts-pins {
+                                       pins = "gpio52";
+                                       function = "qup1_se5";
+                               };
+
+                               qup_uart12_rts: qup-uart12-rts-pins {
+                                       pins = "gpio53";
+                                       function = "qup1_se5";
+                               };
+
+                               qup_uart12_tx: qup-uart12-tx-pins {
+                                       pins = "gpio54";
+                                       function = "qup1_se5";
+                               };
+
+                               qup_uart12_rx: qup-uart12-rx-pins {
+                                       pins = "gpio55";
+                                       function = "qup1_se5";
+                               };
+                       };
+
+                       qup_uart14_default: qup-uart14-state {
+                               qup_uart14_cts: qup-uart14-cts-pins {
+                                       pins = "gpio80";
+                                       function = "qup2_se0";
+                               };
+
+                               qup_uart14_rts: qup-uart14-rts-pins {
+                                       pins = "gpio81";
+                                       function = "qup2_se0";
+                               };
+
+                               qup_uart14_tx: qup-uart14-tx-pins {
+                                       pins = "gpio82";
+                                       function = "qup2_se0";
+                               };
+
+                               qup_uart14_rx: qup-uart14-rx-pins {
+                                       pins = "gpio83";
+                                       function = "qup2_se0";
+                               };
+                       };
+
+                       qup_uart15_default: qup-uart15-state {
+                               qup_uart15_cts: qup-uart15-cts-pins {
+                                       pins = "gpio84";
+                                       function = "qup2_se1";
+                               };
+
+                               qup_uart15_rts: qup-uart15-rts-pins {
+                                       pins = "gpio85";
+                                       function = "qup2_se1";
+                               };
+
+                               qup_uart15_tx: qup-uart15-tx-pins {
+                                       pins = "gpio99";
+                                       function = "qup2_se1";
+                               };
+
+                               qup_uart15_rx: qup-uart15-rx-pins {
+                                       pins = "gpio100";
+                                       function = "qup2_se1";
+                               };
+                       };
+
+                       qup_uart16_default: qup-uart16-state {
+                               qup_uart16_cts: qup-uart16-cts-pins {
+                                       pins = "gpio86";
+                                       function = "qup2_se2";
+                               };
+
+                               qup_uart16_rts: qup-uart16-rts-pins {
+                                       pins = "gpio87";
+                                       function = "qup2_se2";
+                               };
+
+                               qup_uart16_tx: qup-uart16-tx-pins {
+                                       pins = "gpio88";
+                                       function = "qup2_se2";
+                               };
+
+                               qup_uart16_rx: qup-uart16-rx-pins {
+                                       pins = "gpio89";
+                                       function = "qup2_se2";
+                               };
+                       };
+
+                       qup_uart17_default: qup-uart17-state {
+                               qup_uart17_cts: qup-uart17-cts-pins {
+                                       pins = "gpio91";
+                                       function = "qup2_se3";
+                               };
+
+                               qup_uart17_rts: qup0-uart17-rts-pins {
+                                       pins = "gpio92";
+                                       function = "qup2_se3";
+                               };
+
+                               qup_uart17_tx: qup0-uart17-tx-pins {
+                                       pins = "gpio93";
+                                       function = "qup2_se3";
+                               };
+
+                               qup_uart17_rx: qup0-uart17-rx-pins {
+                                       pins = "gpio94";
+                                       function = "qup2_se3";
+                               };
+                       };
+
+                       qup_uart18_default: qup-uart18-state {
+                               qup_uart18_cts: qup-uart18-cts-pins {
+                                       pins = "gpio95";
+                                       function = "qup2_se4";
+                               };
+
+                               qup_uart18_rts: qup-uart18-rts-pins {
+                                       pins = "gpio96";
+                                       function = "qup2_se4";
+                               };
+
+                               qup_uart18_tx: qup-uart18-tx-pins {
+                                       pins = "gpio97";
+                                       function = "qup2_se4";
+                               };
+
+                               qup_uart18_rx: qup-uart18-rx-pins {
+                                       pins = "gpio98";
+                                       function = "qup2_se4";
+                               };
+                       };
+
+                       qup_uart19_default: qup-uart19-state {
+                               qup_uart19_cts: qup-uart19-cts-pins {
+                                       pins = "gpio99";
+                                       function = "qup2_se5";
+                               };
+
+                               qup_uart19_rts: qup-uart19-rts-pins {
+                                       pins = "gpio100";
+                                       function = "qup2_se5";
+                               };
+
+                               qup_uart19_tx: qup-uart19-tx-pins {
+                                       pins = "gpio84";
+                                       function = "qup2_se5";
+                               };
+
+                               qup_uart19_rx: qup-uart19-rx-pins {
+                                       pins = "gpio85";
+                                       function = "qup2_se5";
+                               };
+                       };
+
+                       qup_uart20_default: qup-uart20-state {
+                               qup_uart20_cts: qup-uart20-cts-pins {
+                                       pins = "gpio97";
+                                       function = "qup2_se6";
+                               };
+
+                               qup_uart20_rts: qup-uart20-rts-pins {
+                                       pins = "gpio98";
+                                       function = "qup2_se6";
+                               };
+
+                               qup_uart20_tx: qup-uart20-tx-pins {
+                                       pins = "gpio95";
+                                       function = "qup2_se6";
+                               };
+
+                               qup_uart20_rx: qup-uart20-rx-pins {
+                                       pins = "gpio96";
+                                       function = "qup2_se6";
+                               };
+                       };
+
+                       qup_uart21_default: qup-uart21-state {
+                               qup_uart21_cts: qup-uart21-cts-pins {
+                                       pins = "gpio13";
+                                       function = "qup3_se0";
+                               };
+
+                               qup_uart21_rts: qup-uart21-rts-pins {
+                                       pins = "gpio14";
+                                       function = "qup3_se0";
+                               };
+
+                               qup_uart21_tx: qup-uart21-tx-pins {
+                                       pins = "gpio15";
+                                       function = "qup3_se0";
+                               };
+
+                               qup_uart21_rx: qup-uart21-rx-pins {
+                                       pins = "gpio16";
+                                       function = "qup3_se0";
+                               };
+                       };
                };
 
                sram: sram@146d8000 {
                                          <WAKE_TCS 3>,
                                          <CONTROL_TCS 0>;
                        label = "apps_rsc";
+                       power-domains = <&system_pd>;
 
                        apps_bcm_voter: bcm-voter {
                                compatible = "qcom,bcm-voter";
                              <0x0 0x18593000 0x0 0x1000>;
                        reg-names = "freq-domain0", "freq-domain1";
 
+                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "dcvsh-irq-0", "dcvsh-irq-1";
+
                        clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>;
                        clock-names = "xo", "alternate";
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <1>;
                                                iommus = <&apps_smmu 0x2141 0x04a0>,
-                                                        <&apps_smmu 0x2161 0x04a0>,
-                                                        <&apps_smmu 0x2181 0x0400>,
-                                                        <&apps_smmu 0x21c1 0x04a0>,
-                                                        <&apps_smmu 0x21e1 0x04a0>,
-                                                        <&apps_smmu 0x2541 0x04a0>,
-                                                        <&apps_smmu 0x2561 0x04a0>,
-                                                        <&apps_smmu 0x2581 0x0400>,
-                                                        <&apps_smmu 0x25c1 0x04a0>,
-                                                        <&apps_smmu 0x25e1 0x04a0>;
+                                                        <&apps_smmu 0x2181 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <2>;
                                                iommus = <&apps_smmu 0x2142 0x04a0>,
-                                                        <&apps_smmu 0x2162 0x04a0>,
-                                                        <&apps_smmu 0x2182 0x0400>,
-                                                        <&apps_smmu 0x21c2 0x04a0>,
-                                                        <&apps_smmu 0x21e2 0x04a0>,
-                                                        <&apps_smmu 0x2542 0x04a0>,
-                                                        <&apps_smmu 0x2562 0x04a0>,
-                                                        <&apps_smmu 0x2582 0x0400>,
-                                                        <&apps_smmu 0x25c2 0x04a0>,
-                                                        <&apps_smmu 0x25e2 0x04a0>;
+                                                        <&apps_smmu 0x2182 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <3>;
                                                iommus = <&apps_smmu 0x2143 0x04a0>,
-                                                        <&apps_smmu 0x2163 0x04a0>,
-                                                        <&apps_smmu 0x2183 0x0400>,
-                                                        <&apps_smmu 0x21c3 0x04a0>,
-                                                        <&apps_smmu 0x21e3 0x04a0>,
-                                                        <&apps_smmu 0x2543 0x04a0>,
-                                                        <&apps_smmu 0x2563 0x04a0>,
-                                                        <&apps_smmu 0x2583 0x0400>,
-                                                        <&apps_smmu 0x25c3 0x04a0>,
-                                                        <&apps_smmu 0x25e3 0x04a0>;
+                                                        <&apps_smmu 0x2183 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <4>;
                                                iommus = <&apps_smmu 0x2144 0x04a0>,
-                                                        <&apps_smmu 0x2164 0x04a0>,
-                                                        <&apps_smmu 0x2184 0x0400>,
-                                                        <&apps_smmu 0x21c4 0x04a0>,
-                                                        <&apps_smmu 0x21e4 0x04a0>,
-                                                        <&apps_smmu 0x2544 0x04a0>,
-                                                        <&apps_smmu 0x2564 0x04a0>,
-                                                        <&apps_smmu 0x2584 0x0400>,
-                                                        <&apps_smmu 0x25c4 0x04a0>,
-                                                        <&apps_smmu 0x25e4 0x04a0>;
+                                                        <&apps_smmu 0x2184 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <5>;
                                                iommus = <&apps_smmu 0x2145 0x04a0>,
-                                                        <&apps_smmu 0x2165 0x04a0>,
-                                                        <&apps_smmu 0x2185 0x0400>,
-                                                        <&apps_smmu 0x21c5 0x04a0>,
-                                                        <&apps_smmu 0x21e5 0x04a0>,
-                                                        <&apps_smmu 0x2545 0x04a0>,
-                                                        <&apps_smmu 0x2565 0x04a0>,
-                                                        <&apps_smmu 0x2585 0x0400>,
-                                                        <&apps_smmu 0x25c5 0x04a0>,
-                                                        <&apps_smmu 0x25e5 0x04a0>;
+                                                        <&apps_smmu 0x2185 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <6>;
                                                iommus = <&apps_smmu 0x2146 0x04a0>,
-                                                        <&apps_smmu 0x2166 0x04a0>,
-                                                        <&apps_smmu 0x2186 0x0400>,
-                                                        <&apps_smmu 0x21c6 0x04a0>,
-                                                        <&apps_smmu 0x21e6 0x04a0>,
-                                                        <&apps_smmu 0x2546 0x04a0>,
-                                                        <&apps_smmu 0x2566 0x04a0>,
-                                                        <&apps_smmu 0x2586 0x0400>,
-                                                        <&apps_smmu 0x25c6 0x04a0>,
-                                                        <&apps_smmu 0x25e6 0x04a0>;
+                                                        <&apps_smmu 0x2186 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <7>;
                                                iommus = <&apps_smmu 0x2147 0x04a0>,
-                                                        <&apps_smmu 0x2167 0x04a0>,
-                                                        <&apps_smmu 0x2187 0x0400>,
-                                                        <&apps_smmu 0x21c7 0x04a0>,
-                                                        <&apps_smmu 0x21e7 0x04a0>,
-                                                        <&apps_smmu 0x2547 0x04a0>,
-                                                        <&apps_smmu 0x2567 0x04a0>,
-                                                        <&apps_smmu 0x2587 0x0400>,
-                                                        <&apps_smmu 0x25c7 0x04a0>,
-                                                        <&apps_smmu 0x25e7 0x04a0>;
+                                                        <&apps_smmu 0x2187 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <8>;
                                                iommus = <&apps_smmu 0x2148 0x04a0>,
-                                                        <&apps_smmu 0x2168 0x04a0>,
-                                                        <&apps_smmu 0x2188 0x0400>,
-                                                        <&apps_smmu 0x21c8 0x04a0>,
-                                                        <&apps_smmu 0x21e8 0x04a0>,
-                                                        <&apps_smmu 0x2548 0x04a0>,
-                                                        <&apps_smmu 0x2568 0x04a0>,
-                                                        <&apps_smmu 0x2588 0x0400>,
-                                                        <&apps_smmu 0x25c8 0x04a0>,
-                                                        <&apps_smmu 0x25e8 0x04a0>;
+                                                        <&apps_smmu 0x2188 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <9>;
                                                iommus = <&apps_smmu 0x2149 0x04a0>,
-                                                        <&apps_smmu 0x2169 0x04a0>,
-                                                        <&apps_smmu 0x2189 0x0400>,
-                                                        <&apps_smmu 0x21c9 0x04a0>,
-                                                        <&apps_smmu 0x21e9 0x04a0>,
-                                                        <&apps_smmu 0x2549 0x04a0>,
-                                                        <&apps_smmu 0x2569 0x04a0>,
-                                                        <&apps_smmu 0x2589 0x0400>,
-                                                        <&apps_smmu 0x25c9 0x04a0>,
-                                                        <&apps_smmu 0x25e9 0x04a0>;
-                                               dma-coherent;
-                                       };
-
-                                       compute-cb@10 {
-                                               compatible = "qcom,fastrpc-compute-cb";
-                                               reg = <10>;
-                                               iommus = <&apps_smmu 0x214a 0x04a0>,
-                                                        <&apps_smmu 0x216a 0x04a0>,
-                                                        <&apps_smmu 0x218a 0x0400>,
-                                                        <&apps_smmu 0x21ca 0x04a0>,
-                                                        <&apps_smmu 0x21ea 0x04a0>,
-                                                        <&apps_smmu 0x254a 0x04a0>,
-                                                        <&apps_smmu 0x256a 0x04a0>,
-                                                        <&apps_smmu 0x258a 0x0400>,
-                                                        <&apps_smmu 0x25ca 0x04a0>,
-                                                        <&apps_smmu 0x25ea 0x04a0>;
+                                                        <&apps_smmu 0x2189 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <11>;
                                                iommus = <&apps_smmu 0x214b 0x04a0>,
-                                                        <&apps_smmu 0x216b 0x04a0>,
-                                                        <&apps_smmu 0x218b 0x0400>,
-                                                        <&apps_smmu 0x21cb 0x04a0>,
-                                                        <&apps_smmu 0x21eb 0x04a0>,
-                                                        <&apps_smmu 0x254b 0x04a0>,
-                                                        <&apps_smmu 0x256b 0x04a0>,
-                                                        <&apps_smmu 0x258b 0x0400>,
-                                                        <&apps_smmu 0x25cb 0x04a0>,
-                                                        <&apps_smmu 0x25eb 0x04a0>;
+                                                        <&apps_smmu 0x218b 0x0400>;
                                                dma-coherent;
                                        };
                                };
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <1>;
                                                iommus = <&apps_smmu 0x2941 0x04a0>,
-                                                        <&apps_smmu 0x2961 0x04a0>,
-                                                        <&apps_smmu 0x2981 0x0400>,
-                                                        <&apps_smmu 0x29c1 0x04a0>,
-                                                        <&apps_smmu 0x29e1 0x04a0>,
-                                                        <&apps_smmu 0x2d41 0x04a0>,
-                                                        <&apps_smmu 0x2d61 0x04a0>,
-                                                        <&apps_smmu 0x2d81 0x0400>,
-                                                        <&apps_smmu 0x2dc1 0x04a0>,
-                                                        <&apps_smmu 0x2de1 0x04a0>;
+                                                        <&apps_smmu 0x2981 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <2>;
                                                iommus = <&apps_smmu 0x2942 0x04a0>,
-                                                        <&apps_smmu 0x2962 0x04a0>,
-                                                        <&apps_smmu 0x2982 0x0400>,
-                                                        <&apps_smmu 0x29c2 0x04a0>,
-                                                        <&apps_smmu 0x29e2 0x04a0>,
-                                                        <&apps_smmu 0x2d42 0x04a0>,
-                                                        <&apps_smmu 0x2d62 0x04a0>,
-                                                        <&apps_smmu 0x2d82 0x0400>,
-                                                        <&apps_smmu 0x2dc2 0x04a0>,
-                                                        <&apps_smmu 0x2de2 0x04a0>;
+                                                        <&apps_smmu 0x2982 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <3>;
                                                iommus = <&apps_smmu 0x2943 0x04a0>,
-                                                        <&apps_smmu 0x2963 0x04a0>,
-                                                        <&apps_smmu 0x2983 0x0400>,
-                                                        <&apps_smmu 0x29c3 0x04a0>,
-                                                        <&apps_smmu 0x29e3 0x04a0>,
-                                                        <&apps_smmu 0x2d43 0x04a0>,
-                                                        <&apps_smmu 0x2d63 0x04a0>,
-                                                        <&apps_smmu 0x2d83 0x0400>,
-                                                        <&apps_smmu 0x2dc3 0x04a0>,
-                                                        <&apps_smmu 0x2de3 0x04a0>;
+                                                        <&apps_smmu 0x2983 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <4>;
                                                iommus = <&apps_smmu 0x2944 0x04a0>,
-                                                        <&apps_smmu 0x2964 0x04a0>,
-                                                        <&apps_smmu 0x2984 0x0400>,
-                                                        <&apps_smmu 0x29c4 0x04a0>,
-                                                        <&apps_smmu 0x29e4 0x04a0>,
-                                                        <&apps_smmu 0x2d44 0x04a0>,
-                                                        <&apps_smmu 0x2d64 0x04a0>,
-                                                        <&apps_smmu 0x2d84 0x0400>,
-                                                        <&apps_smmu 0x2dc4 0x04a0>,
-                                                        <&apps_smmu 0x2de4 0x04a0>;
+                                                        <&apps_smmu 0x2984 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <5>;
                                                iommus = <&apps_smmu 0x2945 0x04a0>,
-                                                        <&apps_smmu 0x2965 0x04a0>,
-                                                        <&apps_smmu 0x2985 0x0400>,
-                                                        <&apps_smmu 0x29c5 0x04a0>,
-                                                        <&apps_smmu 0x29e5 0x04a0>,
-                                                        <&apps_smmu 0x2d45 0x04a0>,
-                                                        <&apps_smmu 0x2d65 0x04a0>,
-                                                        <&apps_smmu 0x2d85 0x0400>,
-                                                        <&apps_smmu 0x2dc5 0x04a0>,
-                                                        <&apps_smmu 0x2de5 0x04a0>;
+                                                        <&apps_smmu 0x2985 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <6>;
                                                iommus = <&apps_smmu 0x2946 0x04a0>,
-                                                        <&apps_smmu 0x2966 0x04a0>,
-                                                        <&apps_smmu 0x2986 0x0400>,
-                                                        <&apps_smmu 0x29c6 0x04a0>,
-                                                        <&apps_smmu 0x29e6 0x04a0>,
-                                                        <&apps_smmu 0x2d46 0x04a0>,
-                                                        <&apps_smmu 0x2d66 0x04a0>,
-                                                        <&apps_smmu 0x2d86 0x0400>,
-                                                        <&apps_smmu 0x2dc6 0x04a0>,
-                                                        <&apps_smmu 0x2de6 0x04a0>;
+                                                        <&apps_smmu 0x2986 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <7>;
                                                iommus = <&apps_smmu 0x2947 0x04a0>,
-                                                        <&apps_smmu 0x2967 0x04a0>,
-                                                        <&apps_smmu 0x2987 0x0400>,
-                                                        <&apps_smmu 0x29c7 0x04a0>,
-                                                        <&apps_smmu 0x29e7 0x04a0>,
-                                                        <&apps_smmu 0x2d47 0x04a0>,
-                                                        <&apps_smmu 0x2d67 0x04a0>,
-                                                        <&apps_smmu 0x2d87 0x0400>,
-                                                        <&apps_smmu 0x2dc7 0x04a0>,
-                                                        <&apps_smmu 0x2de7 0x04a0>;
+                                                        <&apps_smmu 0x2987 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <8>;
                                                iommus = <&apps_smmu 0x2948 0x04a0>,
-                                                        <&apps_smmu 0x2968 0x04a0>,
-                                                        <&apps_smmu 0x2988 0x0400>,
-                                                        <&apps_smmu 0x29c8 0x04a0>,
-                                                        <&apps_smmu 0x29e8 0x04a0>,
-                                                        <&apps_smmu 0x2d48 0x04a0>,
-                                                        <&apps_smmu 0x2d68 0x04a0>,
-                                                        <&apps_smmu 0x2d88 0x0400>,
-                                                        <&apps_smmu 0x2dc8 0x04a0>,
-                                                        <&apps_smmu 0x2de8 0x04a0>;
+                                                        <&apps_smmu 0x2988 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <9>;
                                                iommus = <&apps_smmu 0x2949 0x04a0>,
-                                                        <&apps_smmu 0x2969 0x04a0>,
-                                                        <&apps_smmu 0x2989 0x0400>,
-                                                        <&apps_smmu 0x29c9 0x04a0>,
-                                                        <&apps_smmu 0x29e9 0x04a0>,
-                                                        <&apps_smmu 0x2d49 0x04a0>,
-                                                        <&apps_smmu 0x2d69 0x04a0>,
-                                                        <&apps_smmu 0x2d89 0x0400>,
-                                                        <&apps_smmu 0x2dc9 0x04a0>,
-                                                        <&apps_smmu 0x2de9 0x04a0>;
+                                                        <&apps_smmu 0x2989 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <10>;
                                                iommus = <&apps_smmu 0x294a 0x04a0>,
-                                                        <&apps_smmu 0x296a 0x04a0>,
-                                                        <&apps_smmu 0x298a 0x0400>,
-                                                        <&apps_smmu 0x29ca 0x04a0>,
-                                                        <&apps_smmu 0x29ea 0x04a0>,
-                                                        <&apps_smmu 0x2d4a 0x04a0>,
-                                                        <&apps_smmu 0x2d6a 0x04a0>,
-                                                        <&apps_smmu 0x2d8a 0x0400>,
-                                                        <&apps_smmu 0x2dca 0x04a0>,
-                                                        <&apps_smmu 0x2dea 0x04a0>;
+                                                        <&apps_smmu 0x298a 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <11>;
                                                iommus = <&apps_smmu 0x294b 0x04a0>,
-                                                        <&apps_smmu 0x296b 0x04a0>,
-                                                        <&apps_smmu 0x298b 0x0400>,
-                                                        <&apps_smmu 0x29cb 0x04a0>,
-                                                        <&apps_smmu 0x29eb 0x04a0>,
-                                                        <&apps_smmu 0x2d4b 0x04a0>,
-                                                        <&apps_smmu 0x2d6b 0x04a0>,
-                                                        <&apps_smmu 0x2d8b 0x0400>,
-                                                        <&apps_smmu 0x2dcb 0x04a0>,
-                                                        <&apps_smmu 0x2deb 0x04a0>;
+                                                        <&apps_smmu 0x298b 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <12>;
                                                iommus = <&apps_smmu 0x294c 0x04a0>,
-                                                        <&apps_smmu 0x296c 0x04a0>,
-                                                        <&apps_smmu 0x298c 0x0400>,
-                                                        <&apps_smmu 0x29cc 0x04a0>,
-                                                        <&apps_smmu 0x29ec 0x04a0>,
-                                                        <&apps_smmu 0x2d4c 0x04a0>,
-                                                        <&apps_smmu 0x2d6c 0x04a0>,
-                                                        <&apps_smmu 0x2d8c 0x0400>,
-                                                        <&apps_smmu 0x2dcc 0x04a0>,
-                                                        <&apps_smmu 0x2dec 0x04a0>;
+                                                        <&apps_smmu 0x298c 0x0400>;
                                                dma-coherent;
                                        };
 
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <13>;
                                                iommus = <&apps_smmu 0x294d 0x04a0>,
-                                                        <&apps_smmu 0x296d 0x04a0>,
-                                                        <&apps_smmu 0x298d 0x0400>,
-                                                        <&apps_smmu 0x29Cd 0x04a0>,
-                                                        <&apps_smmu 0x29ed 0x04a0>,
-                                                        <&apps_smmu 0x2d4d 0x04a0>,
-                                                        <&apps_smmu 0x2d6d 0x04a0>,
-                                                        <&apps_smmu 0x2d8d 0x0400>,
-                                                        <&apps_smmu 0x2dcd 0x04a0>,
-                                                        <&apps_smmu 0x2ded 0x04a0>;
+                                                        <&apps_smmu 0x298d 0x0400>;
                                                dma-coherent;
                                        };
                                };
index dd832e6816be85817fd1ecc853f8d4c800826bc4..b0e342810ae79e2861c6e8da02186fa337160af8 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/clock/qcom,sar2130p-gcc.h>
 #include <dt-bindings/clock/qcom,sar2130p-gpucc.h>
+#include <dt-bindings/clock/qcom,sm8550-dispcc.h>
 #include <dt-bindings/clock/qcom,sm8550-tcsr.h>
 #include <dt-bindings/dma/qcom-gpi.h>
 #include <dt-bindings/interconnect/qcom,icc.h>
                        };
                };
 
+               pcie1_ep: pcie-ep@1c08000 {
+                       compatible = "qcom,sar2130p-pcie-ep";
+                       reg = <0x0 0x01c08000 0x0 0x3000>,
+                             <0x0 0x40000000 0x0 0xf1d>,
+                             <0x0 0x40000f20 0x0 0xa8>,
+                             <0x0 0x40001000 0x0 0x1000>,
+                             <0x0 0x40200000 0x0 0x1000000>,
+                             <0x0 0x01c0b000 0x0 0x1000>,
+                             <0x0 0x40002000 0x0 0x2000>;
+                       reg-names = "parf",
+                                   "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "addr_space",
+                                   "mmio",
+                                   "dma";
+
+                       clocks = <&gcc GCC_PCIE_1_AUX_CLK>,
+                                <&gcc GCC_PCIE_1_CFG_AHB_CLK>,
+                                <&gcc GCC_PCIE_1_MSTR_AXI_CLK>,
+                                <&gcc GCC_PCIE_1_SLV_AXI_CLK>,
+                                <&gcc GCC_PCIE_1_SLV_Q2A_AXI_CLK>,
+                                <&gcc GCC_DDRSS_PCIE_SF_CLK>,
+                                <&gcc GCC_AGGRE_NOC_PCIE_1_AXI_CLK>,
+                                <&gcc GCC_CFG_NOC_PCIE_ANOC_AHB_CLK>,
+                                <&gcc GCC_QMIP_PCIE_AHB_CLK>;
+                       clock-names = "aux",
+                                     "cfg",
+                                     "bus_master",
+                                     "bus_slave",
+                                     "slave_q2a",
+                                     "ddrss_sf_tbu",
+                                     "aggre_noc_axi",
+                                     "cnoc_sf_axi",
+                                     "qmip_pcie_ahb";
+
+                       interrupts = <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 440 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "global",
+                                         "doorbell",
+                                         "dma";
+
+                       interconnects = <&pcie_noc MASTER_PCIE_1 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_PCIE_1 QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       interconnect-names = "pcie-mem",
+                                            "cpu-pcie";
+                       iommus = <&apps_smmu 0x1e00 0x1>;
+                       resets = <&gcc GCC_PCIE_1_BCR>;
+                       reset-names = "core";
+                       power-domains = <&gcc PCIE_1_GDSC>;
+                       phys = <&pcie1_phy>;
+                       phy-names = "pciephy";
+
+                       num-lanes = <2>;
+
+                       status = "disabled";
+               };
+
                pcie1_phy: phy@1c0e000 {
                        compatible = "qcom,sar2130p-qmp-gen3x2-pcie-phy";
                        reg = <0x0 0x01c0e000 0x0 0x2000>;
                                        reg = <2>;
 
                                        usb_dp_qmpphy_dp_in: endpoint {
+                                               remote-endpoint = <&mdss_dp0_out>;
                                        };
                                };
                        };
                        };
                };
 
+               mdss: display-subsystem@ae00000 {
+                       compatible = "qcom,sar2130p-mdss";
+                       reg = <0x0 0x0ae00000 0x0 0x1000>;
+                       reg-names = "mdss";
+
+                       interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+
+                       clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                                <&gcc GCC_DISP_AHB_CLK>,
+                                <&gcc GCC_DISP_HF_AXI_CLK>,
+                                <&dispcc DISP_CC_MDSS_MDP_CLK>;
+
+                       resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
+
+                       power-domains = <&dispcc MDSS_GDSC>;
+
+                       interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       interconnect-names = "mdp0-mem", "cpu-cfg";
+
+                       iommus = <&apps_smmu 0x2000 0x402>;
+
+                       #address-cells = <2>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       status = "disabled";
+
+                       mdss_mdp: display-controller@ae01000 {
+                               compatible = "qcom,sar2130p-dpu";
+                               reg = <0x0 0x0ae01000 0x0 0x8f000>,
+                                     <0x0 0x0aeb0000 0x0 0x2008>;
+                               reg-names = "mdp",
+                                           "vbif";
+
+                               interrupt-parent = <&mdss>;
+                               interrupts = <0>;
+
+                               clocks = <&gcc GCC_DISP_AHB_CLK>,
+                                        <&gcc GCC_DISP_HF_AXI_CLK>,
+                                        <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                                        <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
+                                        <&dispcc DISP_CC_MDSS_MDP_CLK>,
+                                        <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
+                               clock-names = "bus",
+                                             "nrt_bus",
+                                             "iface",
+                                             "lut",
+                                             "core",
+                                             "vsync";
+
+                               power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
+                               assigned-clock-rates = <19200000>;
+
+                               operating-points-v2 = <&mdp_opp_table>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               dpu_intf1_out: endpoint {
+                                                       remote-endpoint = <&mdss_dsi0_in>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               dpu_intf2_out: endpoint {
+                                                       remote-endpoint = <&mdss_dsi1_in>;
+                                               };
+                                       };
+
+                                       port@2 {
+                                               reg = <2>;
+
+                                               dpu_intf0_out: endpoint {
+                                                       remote-endpoint = <&mdss_dp0_in>;
+                                               };
+                                       };
+                               };
+
+                               mdp_opp_table: opp-table {
+                                       compatible = "operating-points-v2";
+
+                                       opp-200000000 {
+                                               opp-hz = /bits/ 64 <200000000>;
+                                               required-opps = <&rpmhpd_opp_low_svs>;
+                                       };
+
+                                       opp-325000000 {
+                                               opp-hz = /bits/ 64 <325000000>;
+                                               required-opps = <&rpmhpd_opp_svs>;
+                                       };
+
+                                       opp-514000000 {
+                                               opp-hz = /bits/ 64 <514000000>;
+                                               required-opps = <&rpmhpd_opp_turbo>;
+                                       };
+                               };
+                       };
+
+                       mdss_dp0: displayport-controller@ae90000 {
+                               compatible = "qcom,sar2130p-dp",
+                                            "qcom,sm8350-dp";
+                               reg = <0x0 0xae90000 0x0 0x200>,
+                                     <0x0 0xae90200 0x0 0x200>,
+                                     <0x0 0xae90400 0x0 0xc00>,
+                                     <0x0 0xae91000 0x0 0x400>,
+                                     <0x0 0xae91400 0x0 0x400>;
+                               interrupt-parent = <&mdss>;
+                               interrupts = <12>;
+                               clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                                        <&dispcc DISP_CC_MDSS_DPTX0_AUX_CLK>,
+                                        <&dispcc DISP_CC_MDSS_DPTX0_LINK_CLK>,
+                                        <&dispcc DISP_CC_MDSS_DPTX0_LINK_INTF_CLK>,
+                                        <&dispcc DISP_CC_MDSS_DPTX0_PIXEL0_CLK>;
+                               clock-names = "core_iface",
+                                             "core_aux",
+                                             "ctrl_link",
+                                             "ctrl_link_iface",
+                                             "stream_pixel";
+
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_DPTX0_LINK_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_DPTX0_PIXEL0_CLK_SRC>;
+                               assigned-clock-parents = <&usb_dp_qmpphy QMP_USB43DP_DP_LINK_CLK>,
+                                                        <&usb_dp_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
+
+                               phys = <&usb_dp_qmpphy QMP_USB43DP_DP_PHY>;
+                               phy-names = "dp";
+
+                               #sound-dai-cells = <0>;
+
+                               operating-points-v2 = <&dp_opp_table>;
+                               power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+                               status = "disabled";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+
+                                               mdss_dp0_in: endpoint {
+                                                       remote-endpoint = <&dpu_intf0_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+
+                                               mdss_dp0_out: endpoint {
+                                                       remote-endpoint = <&usb_dp_qmpphy_dp_in>;
+                                               };
+                                       };
+                               };
+
+                               dp_opp_table: opp-table {
+                                       compatible = "operating-points-v2";
+
+                                       opp-162000000 {
+                                               opp-hz = /bits/ 64 <162000000>;
+                                               required-opps = <&rpmhpd_opp_low_svs_d1>;
+                                       };
+
+                                       opp-270000000 {
+                                               opp-hz = /bits/ 64 <270000000>;
+                                               required-opps = <&rpmhpd_opp_low_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>;
+                                       };
+                               };
+                       };
+
+                       mdss_dsi0: dsi@ae94000 {
+                               compatible = "qcom,sar2130p-dsi-ctrl",
+                                            "qcom,mdss-dsi-ctrl";
+                               reg = <0x0 0x0ae94000 0x0 0x400>;
+                               reg-names = "dsi_ctrl";
+
+                               interrupt-parent = <&mdss>;
+                               interrupts = <4>;
+
+                               clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
+                                        <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
+                                        <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
+                                        <&dispcc DISP_CC_MDSS_ESC0_CLK>,
+                                        <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                                        <&gcc GCC_DISP_HF_AXI_CLK>;
+                               clock-names = "byte",
+                                             "byte_intf",
+                                             "pixel",
+                                             "core",
+                                             "iface",
+                                             "bus";
+
+                               power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
+                                                        <&mdss_dsi0_phy 1>;
+
+                               operating-points-v2 = <&mdss_dsi_opp_table>;
+
+                               phys = <&mdss_dsi0_phy>;
+                               phy-names = "dsi";
+
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               status = "disabled";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               mdss_dsi0_in: endpoint {
+                                                       remote-endpoint = <&dpu_intf1_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               mdss_dsi0_out: endpoint {
+                                               };
+                                       };
+                               };
+
+                               mdss_dsi_opp_table: opp-table {
+                                       compatible = "operating-points-v2";
+
+                                       opp-187500000 {
+                                               opp-hz = /bits/ 64 <187500000>;
+                                               required-opps = <&rpmhpd_opp_low_svs>;
+                                       };
+
+                                       opp-300000000 {
+                                               opp-hz = /bits/ 64 <300000000>;
+                                               required-opps = <&rpmhpd_opp_svs>;
+                                       };
+
+                                       opp-358000000 {
+                                               opp-hz = /bits/ 64 <358000000>;
+                                               required-opps = <&rpmhpd_opp_nom>;
+                                       };
+                               };
+                       };
+
+                       mdss_dsi0_phy: phy@ae95000 {
+                               compatible = "qcom,sar2130p-dsi-phy-5nm";
+                               reg = <0x0 0x0ae95000 0x0 0x200>,
+                                     <0x0 0x0ae95200 0x0 0x280>,
+                                     <0x0 0x0ae95500 0x0 0x400>;
+                               reg-names = "dsi_phy",
+                                           "dsi_phy_lane",
+                                           "dsi_pll";
+
+                               clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                                        <&rpmhcc RPMH_CXO_CLK>;
+                               clock-names = "iface", "ref";
+
+                               #clock-cells = <1>;
+                               #phy-cells = <0>;
+
+                               status = "disabled";
+                       };
+
+                       mdss_dsi1: dsi@ae96000 {
+                               compatible = "qcom,sar2130p-dsi-ctrl",
+                                            "qcom,mdss-dsi-ctrl";
+                               reg = <0x0 0x0ae96000 0x0 0x400>;
+                               reg-names = "dsi_ctrl";
+
+                               interrupt-parent = <&mdss>;
+                               interrupts = <5>;
+
+                               clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK>,
+                                        <&dispcc DISP_CC_MDSS_BYTE1_INTF_CLK>,
+                                        <&dispcc DISP_CC_MDSS_PCLK1_CLK>,
+                                        <&dispcc DISP_CC_MDSS_ESC1_CLK>,
+                                        <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                                        <&gcc GCC_DISP_HF_AXI_CLK>;
+                               clock-names = "byte",
+                                             "byte_intf",
+                                             "pixel",
+                                             "core",
+                                             "iface",
+                                             "bus";
+
+                               power-domains = <&rpmhpd RPMHPD_MMCX>;
+
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi1_phy 0>,
+                                                        <&mdss_dsi1_phy 1>;
+
+                               operating-points-v2 = <&mdss_dsi_opp_table>;
+
+                               phys = <&mdss_dsi1_phy>;
+                               phy-names = "dsi";
+
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               status = "disabled";
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               mdss_dsi1_in: endpoint {
+                                                       remote-endpoint = <&dpu_intf2_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               mdss_dsi1_out: endpoint {
+                                               };
+                                       };
+                               };
+                       };
+
+                       mdss_dsi1_phy: phy@ae97000 {
+                               compatible = "qcom,sar2130p-dsi-phy-5nm";
+                               reg = <0x0 0x0ae97000 0x0 0x200>,
+                                     <0x0 0x0ae97200 0x0 0x280>,
+                                     <0x0 0x0ae97500 0x0 0x400>;
+                               reg-names = "dsi_phy",
+                                           "dsi_phy_lane",
+                                           "dsi_pll";
+
+                               clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
+                                        <&rpmhcc RPMH_CXO_CLK>;
+                               clock-names = "iface", "ref";
+
+                               #clock-cells = <1>;
+                               #phy-cells = <0>;
+
+                               status = "disabled";
+                       };
+               };
+
+               dispcc: clock-controller@af00000 {
+                       compatible = "qcom,sar2130p-dispcc";
+                       reg = <0x0 0x0af00000 0x0 0x20000>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK_A>,
+                                <&gcc GCC_DISP_AHB_CLK>,
+                                <&sleep_clk>,
+                                <&mdss_dsi0_phy 0>,
+                                <&mdss_dsi0_phy 1>,
+                                <&mdss_dsi1_phy 0>,
+                                <&mdss_dsi1_phy 1>,
+                                <&usb_dp_qmpphy QMP_USB43DP_DP_LINK_CLK>,
+                                <&usb_dp_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>,
+                                <0>, /* dp1 */
+                                <0>,
+                                <0>, /* dp2 */
+                                <0>,
+                                <0>, /* dp3 */
+                                <0>;
+                       power-domains = <&rpmhpd RPMHPD_MMCX>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
                pdc: interrupt-controller@b220000 {
                        compatible = "qcom,sar2130p-pdc", "qcom,pdc";
                        reg = <0x0 0x0b220000 0x0 0x30000>, <0x0 0x174000f0 0x0 0x64>;
index 3f0d3e33894a0730bd0b14738ac95847bd92ee65..672ac4c3afa34011eba6a309148978a777e2fbfa 100644 (file)
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 
        dai@3 {
-               reg = <3>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>;
        };
 };
 
diff --git a/src/arm64/qcom/sc7180-el2.dtso b/src/arm64/qcom/sc7180-el2.dtso
new file mode 100644 (file)
index 0000000..49a9867
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+/*
+ * sc7180 specific modifications required to boot in EL2.
+ */
+
+/dts-v1/;
+/plugin/;
+
+/* We can't and don't need to use zap shader in EL2 as linux can zap the gpu on it's own. */
+&gpu {
+       zap-shader {
+               status = "disabled";
+       };
+};
+
+/* Venus can be used in EL2 if booted similarly to ChromeOS devices. */
+&venus {
+       video-firmware {
+               iommus = <&apps_smmu 0x0c42 0x0>;
+       };
+};
index f57976906d63040ee5aab7ea48702118f44824d2..8fee8d7a7d4cdc85bf7e8ec524dae5a6ec0d3e9a 100644 (file)
@@ -188,7 +188,7 @@ ap_ts_pen_1v8: &i2c4 {
 };
 
 &wifi {
-       qcom,ath10k-calibration-variant = "GO_HOMESTAR";
+       qcom,calibration-variant = "GO_HOMESTAR";
 };
 
 /* PINCTRL - modifications to sc7180-trogdor.dtsi */
index 655bea928e52a42498a3e7a5ce7a2774160f3b04..26514640a1ae29e0541643b565d63ce6d5cf5396 100644 (file)
@@ -79,7 +79,7 @@ ap_ts_pen_1v8: &i2c4 {
 };
 
 &wifi {
-       qcom,ath10k-calibration-variant = "GO_KINGOFTOWN";
+       qcom,calibration-variant = "GO_KINGOFTOWN";
 };
 
 /* PINCTRL - modifications to sc7180-trogdor.dtsi */
index c3fd6760de7a8ef0ff0e7d5cd793cac358aba798..eb9c9e713a89656467724dd731507d484d7dc86b 100644 (file)
@@ -69,7 +69,7 @@ ap_ts_pen_1v8: &i2c4 {
 };
 
 &wifi {
-       qcom,ath10k-calibration-variant = "GO_LAZOR";
+       qcom,calibration-variant = "GO_LAZOR";
 };
 
 /* PINCTRL - modifications to sc7180-trogdor.dtsi */
index 89034b6702f4185d7bb20e2453b76ef65c40ccf6..a2224de841b1dcf4dad4bb8d6282abc730dbad7b 100644 (file)
@@ -59,5 +59,5 @@ ap_ts_pen_1v8: &i2c4 {
 };
 
 &wifi {
-       qcom,ath10k-calibration-variant = "GO_PAZQUEL360";
+       qcom,calibration-variant = "GO_PAZQUEL360";
 };
index f7300ffbb4519a7973c74198fc0f9ca2d770bc3e..4f5ab378cf8e68ecca8152170af13200716bcda3 100644 (file)
@@ -181,7 +181,7 @@ ap_ts_pen_1v8: &i2c4 {
 };
 
 &wifi {
-       qcom,ath10k-calibration-variant = "GO_POMPOM";
+       qcom,calibration-variant = "GO_POMPOM";
 };
 
 /* PINCTRL - board-specific pinctrl */
index d4925be3b1fcf5219866f9754b5bff3e45d84c08..17908c93652011d69a2d04b980f45f6732f16977 100644 (file)
 };
 
 &wifi {
-       qcom,ath10k-calibration-variant = "GO_WORMDINGLER";
+       qcom,calibration-variant = "GO_WORMDINGLER";
 };
 
 /*
index 87c432c12a240f8035753ad10ce8662584a3f1f3..01e727b021ec587f7b3384f7301620a21ddef281 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <dt-bindings/clock/qcom,dispcc-sc7180.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sc7180.h>
 #include <dt-bindings/clock/qcom,gpucc-sc7180.h>
 #include <dt-bindings/clock/qcom,lpasscorecc-sc7180.h>
                        mdp: display-controller@ae01000 {
                                compatible = "qcom,sc7180-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
                                              "iface",
                                              "bus";
 
-                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SC7180_CX>;
                        reg = <0 0x0af00000 0 0x200000>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&gcc GCC_DISP_GPLL0_CLK_SRC>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
                        clock-names = "bi_tcxo",
                };
 
                apps_rsc: rsc@18200000 {
-                       compatible = "qcom,rpmh-rsc";
+                       compatible = "qcom,sc7180-rpmh-apps-rsc", "qcom,rpmh-rsc";
                        reg = <0 0x18200000 0 0x10000>,
                              <0 0x18210000 0 0x10000>,
                              <0 0x18220000 0 0x10000>;
index a90c70b1b73ea042af3c5509dccc60844f599acc..0e07429982bd69a5f2455d5fcb7bb03bdeb32fab 100644 (file)
@@ -139,6 +139,7 @@ hp_i2c: &i2c2 {
        vdd-micb-supply = <&pp1800_l2c>;
        pinctrl-0 = <&lpass_dmic01_clk>, <&lpass_dmic01_data>, <&lpass_dmic23_clk>,
                        <&lpass_dmic23_data>;
+       pinctrl-names = "default";
 
        status = "okay";
 };
index 020ef666e35fc676fcc4e4ae8aa65e5ba4f42d98..ce48e4cda1708798f40e792620de96034f093472 100644 (file)
 };
 
 &lpass_va_macro {
+       pinctrl-0 = <&lpass_dmic01_clk>, <&lpass_dmic01_data>;
+       pinctrl-names = "default";
+
        status = "okay";
 };
 
index 7370aa0dbf0e3f9e7a3e38c3f00686e1d3dcbc9f..90e5b9ab5b847edc447111825999f73f6453b33a 100644 (file)
 &lpass_va_macro {
        status = "okay";
        vdd-micb-supply = <&vreg_bob>;
+       pinctrl-0 = <&lpass_dmic01_clk>, <&lpass_dmic01_data>;
+       pinctrl-names = "default";
 };
 
 &pcie1 {
index 0f2caf36910b65c398c9e03800a8ce0a8a1f8fc7..b1cc3bc1aec8b769021cdc25c8d66845e7bebe70 100644 (file)
@@ -6,6 +6,7 @@
  */
 #include <dt-bindings/clock/qcom,camcc-sc7280.h>
 #include <dt-bindings/clock/qcom,dispcc-sc7280.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sc7280.h>
 #include <dt-bindings/clock/qcom,gpucc-sc7280.h>
 #include <dt-bindings/clock/qcom,lpassaudiocc-sc7280.h>
@@ -27,6 +28,7 @@
 #include <dt-bindings/soc/qcom,apr.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 #include <dt-bindings/sound/qcom,lpass.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
 #include <dt-bindings/thermal/thermal.h>
 
 / {
                                      "tx_lane0_sync_clk",
                                      "rx_lane0_sync_clk",
                                      "rx_lane1_sync_clk";
-                       freq-table-hz =
-                               <75000000 300000000>,
-                               <0 0>,
-                               <0 0>,
-                               <75000000 300000000>,
-                               <0 0>,
-                               <0 0>,
-                               <0 0>,
-                               <0 0>;
+
+                       operating-points-v2 = <&ufs_opp_table>;
+
                        qcom,ice = <&ice>;
 
                        status = "disabled";
+
+                       ufs_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-75000000 {
+                                       opp-hz = /bits/ 64 <75000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <75000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                               };
+
+                               opp-150000000 {
+                                       opp-hz = /bits/ 64 <150000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <150000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>;
+                                       required-opps = <&rpmhpd_opp_svs>;
+                               };
+
+                               opp-300000000 {
+                                       opp-hz = /bits/ 64 <300000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <300000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                               };
+                       };
                };
 
                ufs_mem_phy: phy@1d87000 {
                        compatible = "qcom,sc7280-lpass-va-macro";
                        reg = <0 0x03370000 0 0x1000>;
 
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&lpass_dmic01_clk>, <&lpass_dmic01_data>;
-
                        clocks = <&lpass_aon LPASS_AON_CC_TX_MCLK_CLK>;
                        clock-names = "mclk";
 
                        #clock-cells = <1>;
                        #phy-cells = <1>;
 
+                       orientation-switch;
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                        reg = <1>;
 
                                        usb_dp_qmpphy_usb_ss_in: endpoint {
+                                               remote-endpoint = <&usb_1_dwc3_ss>;
                                        };
                                };
 
                                        reg = <2>;
 
                                        usb_dp_qmpphy_dp_in: endpoint {
+                                               remote-endpoint = <&mdss_dp_out>;
                                        };
                                };
                        };
                                                        iommus = <&apps_smmu 0x1801 0x0>;
 
                                                        dai@0 {
-                                                               reg = <0>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
                                                        };
 
                                                        dai@1 {
-                                                               reg = <1>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
                                                        };
 
                                                        dai@2 {
-                                                               reg = <2>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
                                                        };
                                                };
                                        };
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <3>;
                                                iommus = <&apps_smmu 0x1803 0x0>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@4 {
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <4>;
                                                iommus = <&apps_smmu 0x1804 0x0>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@5 {
                                                compatible = "qcom,fastrpc-compute-cb";
                                                reg = <5>;
                                                iommus = <&apps_smmu 0x1805 0x0>;
+                                               dma-coherent;
                                        };
                                };
                        };
                                                reg = <1>;
                                                iommus = <&apps_smmu 0x11a1 0x0420>,
                                                         <&apps_smmu 0x1181 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@2 {
                                                reg = <2>;
                                                iommus = <&apps_smmu 0x11a2 0x0420>,
                                                         <&apps_smmu 0x1182 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@3 {
                                                reg = <3>;
                                                iommus = <&apps_smmu 0x11a3 0x0420>,
                                                         <&apps_smmu 0x1183 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@4 {
                                                reg = <4>;
                                                iommus = <&apps_smmu 0x11a4 0x0420>,
                                                         <&apps_smmu 0x1184 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@5 {
                                                reg = <5>;
                                                iommus = <&apps_smmu 0x11a5 0x0420>,
                                                         <&apps_smmu 0x1185 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@6 {
                                                reg = <6>;
                                                iommus = <&apps_smmu 0x11a6 0x0420>,
                                                         <&apps_smmu 0x1186 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@7 {
                                                reg = <7>;
                                                iommus = <&apps_smmu 0x11a7 0x0420>,
                                                         <&apps_smmu 0x1187 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@8 {
                                                reg = <8>;
                                                iommus = <&apps_smmu 0x11a8 0x0420>,
                                                         <&apps_smmu 0x1188 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        /* note: secure cb9 in downstream */
                                                reg = <11>;
                                                iommus = <&apps_smmu 0x11ab 0x0420>,
                                                         <&apps_smmu 0x118b 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@12 {
                                                reg = <12>;
                                                iommus = <&apps_smmu 0x11ac 0x0420>,
                                                         <&apps_smmu 0x118c 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@13 {
                                                reg = <13>;
                                                iommus = <&apps_smmu 0x11ad 0x0420>,
                                                         <&apps_smmu 0x118d 0x0420>;
+                                               dma-coherent;
                                        };
 
                                        compute-cb@14 {
                                                reg = <14>;
                                                iommus = <&apps_smmu 0x11ae 0x0420>,
                                                         <&apps_smmu 0x118e 0x0420>;
+                                               dma-coherent;
                                        };
                                };
                        };
                                                reg = <1>;
 
                                                usb_1_dwc3_ss: endpoint {
+                                                       remote-endpoint = <&usb_dp_qmpphy_usb_ss_in>;
                                                };
                                        };
                                };
 
                        status = "disabled";
 
-                       video-decoder {
-                               compatible = "venus-decoder";
-                       };
-
-                       video-encoder {
-                               compatible = "venus-encoder";
-                       };
-
                        venus_opp_table: opp-table {
                                compatible = "operating-points-v2";
 
                        };
                };
 
+               camss: isp@acb3000 {
+                       compatible = "qcom,sc7280-camss";
+
+                       reg = <0x0 0x0acb3000 0x0 0x1000>,
+                             <0x0 0x0acba000 0x0 0x1000>,
+                             <0x0 0x0acc1000 0x0 0x1000>,
+                             <0x0 0x0acc8000 0x0 0x1000>,
+                             <0x0 0x0accf000 0x0 0x1000>,
+                             <0x0 0x0ace0000 0x0 0x2000>,
+                             <0x0 0x0ace2000 0x0 0x2000>,
+                             <0x0 0x0ace4000 0x0 0x2000>,
+                             <0x0 0x0ace6000 0x0 0x2000>,
+                             <0x0 0x0ace8000 0x0 0x2000>,
+                             <0x0 0x0acaf000 0x0 0x4000>,
+                             <0x0 0x0acb6000 0x0 0x4000>,
+                             <0x0 0x0acbd000 0x0 0x4000>,
+                             <0x0 0x0acc4000 0x0 0x4000>,
+                             <0x0 0x0accb000 0x0 0x4000>;
+                       reg-names = "csid0",
+                                   "csid1",
+                                   "csid2",
+                                   "csid_lite0",
+                                   "csid_lite1",
+                                   "csiphy0",
+                                   "csiphy1",
+                                   "csiphy2",
+                                   "csiphy3",
+                                   "csiphy4",
+                                   "vfe0",
+                                   "vfe1",
+                                   "vfe2",
+                                   "vfe_lite0",
+                                   "vfe_lite1";
+
+                       clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>,
+                                <&camcc CAM_CC_CPAS_AHB_CLK>,
+                                <&camcc CAM_CC_CSIPHY0_CLK>,
+                                <&camcc CAM_CC_CSI0PHYTIMER_CLK>,
+                                <&camcc CAM_CC_CSIPHY1_CLK>,
+                                <&camcc CAM_CC_CSI1PHYTIMER_CLK>,
+                                <&camcc CAM_CC_CSIPHY2_CLK>,
+                                <&camcc CAM_CC_CSI2PHYTIMER_CLK>,
+                                <&camcc CAM_CC_CSIPHY3_CLK>,
+                                <&camcc CAM_CC_CSI3PHYTIMER_CLK>,
+                                <&camcc CAM_CC_CSIPHY4_CLK>,
+                                <&camcc CAM_CC_CSI4PHYTIMER_CLK>,
+                                <&gcc GCC_CAMERA_HF_AXI_CLK>,
+                                <&gcc GCC_CAMERA_SF_AXI_CLK>,
+                                <&camcc CAM_CC_ICP_AHB_CLK>,
+                                <&camcc CAM_CC_IFE_0_CLK>,
+                                <&camcc CAM_CC_IFE_0_AXI_CLK>,
+                                <&camcc CAM_CC_IFE_0_CPHY_RX_CLK>,
+                                <&camcc CAM_CC_IFE_0_CSID_CLK>,
+                                <&camcc CAM_CC_IFE_1_CLK>,
+                                <&camcc CAM_CC_IFE_1_AXI_CLK>,
+                                <&camcc CAM_CC_IFE_1_CPHY_RX_CLK>,
+                                <&camcc CAM_CC_IFE_1_CSID_CLK>,
+                                <&camcc CAM_CC_IFE_2_CLK>,
+                                <&camcc CAM_CC_IFE_2_AXI_CLK>,
+                                <&camcc CAM_CC_IFE_2_CPHY_RX_CLK>,
+                                <&camcc CAM_CC_IFE_2_CSID_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_0_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_0_CPHY_RX_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_0_CSID_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_1_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_1_CPHY_RX_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_1_CSID_CLK>;
+                       clock-names = "camnoc_axi",
+                                     "cpas_ahb",
+                                     "csiphy0",
+                                     "csiphy0_timer",
+                                     "csiphy1",
+                                     "csiphy1_timer",
+                                     "csiphy2",
+                                     "csiphy2_timer",
+                                     "csiphy3",
+                                     "csiphy3_timer",
+                                     "csiphy4",
+                                     "csiphy4_timer",
+                                     "gcc_axi_hf",
+                                     "gcc_axi_sf",
+                                     "icp_ahb",
+                                     "vfe0",
+                                     "vfe0_axi",
+                                     "vfe0_cphy_rx",
+                                     "vfe0_csid",
+                                     "vfe1",
+                                     "vfe1_axi",
+                                     "vfe1_cphy_rx",
+                                     "vfe1_csid",
+                                     "vfe2",
+                                     "vfe2_axi",
+                                     "vfe2_cphy_rx",
+                                     "vfe2_csid",
+                                     "vfe_lite0",
+                                     "vfe_lite0_cphy_rx",
+                                     "vfe_lite0_csid",
+                                     "vfe_lite1",
+                                     "vfe_lite1_cphy_rx",
+                                     "vfe_lite1_csid";
+
+                       interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 466 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 640 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 468 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 359 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 478 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 479 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 448 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 122 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 467 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 641 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 469 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 360 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "csid0",
+                                         "csid1",
+                                         "csid2",
+                                         "csid_lite0",
+                                         "csid_lite1",
+                                         "csiphy0",
+                                         "csiphy1",
+                                         "csiphy2",
+                                         "csiphy3",
+                                         "csiphy4",
+                                         "vfe0",
+                                         "vfe1",
+                                         "vfe2",
+                                         "vfe_lite0",
+                                         "vfe_lite1";
+
+                       interconnects = <&gem_noc  MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc2 SLAVE_CAMERA_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mmss_noc MASTER_CAMNOC_HF  QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "ahb",
+                                            "hf_0";
+
+                       iommus = <&apps_smmu 0x800 0x4e0>;
+
+                       power-domains = <&camcc CAM_CC_IFE_0_GDSC>,
+                                       <&camcc CAM_CC_IFE_1_GDSC>,
+                                       <&camcc CAM_CC_IFE_2_GDSC>,
+                                       <&camcc CAM_CC_TITAN_TOP_GDSC>;
+                       power-domain-names = "ife0",
+                                            "ife1",
+                                            "ife2",
+                                            "top";
+
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+                               };
+
+                               port@3 {
+                                       reg = <3>;
+                               };
+
+                               port@4 {
+                                       reg = <4>;
+                               };
+                       };
+               };
+
                camcc: clock-controller@ad00000 {
                        compatible = "qcom,sc7280-camcc";
                        reg = <0 0x0ad00000 0 0x10000>;
                        reg = <0 0x0af00000 0 0x20000>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&gcc GCC_DISP_GPLL0_CLK_SRC>,
-                                <&mdss_dsi_phy 0>,
-                                <&mdss_dsi_phy 1>,
+                                <&mdss_dsi_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>,
                                 <&mdss_edp_phy 0>,
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sc7280-dpu";
                                reg = <0 0x0ae01000 0 0x8f030>,
-                                       <0 0x0aeb0000 0 0x2008>;
+                                       <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
                                              "iface",
                                              "bus";
 
-                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi_phy 0>, <&mdss_dsi_phy 1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SC7280_CX>;
 
                                        port@1 {
                                                reg = <1>;
-                                               mdss_dp_out: endpoint { };
+                                               mdss_dp_out: endpoint {
+                                                       remote-endpoint = <&usb_dp_qmpphy_dp_in>;
+                                               };
                                        };
                                };
 
index 28693a3bfc7fefd883a7dee69a406235317c3047..b84e47a461a014871ef11e08d18af70bec8e2d63 100644 (file)
@@ -5,6 +5,7 @@
  */
 
 #include <dt-bindings/clock/qcom,dispcc-sm8250.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sc8180x.h>
 #include <dt-bindings/clock/qcom,gpucc-sm8150.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
                        mdss_mdp: mdp@ae01000 {
                                compatible = "qcom,sc8180x-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
                        compatible = "qcom,sc8180x-dispcc";
                        reg = <0 0x0af00000 0 0x20000>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_prim_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_prim_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>,
                                 <&edp_phy 0>,
                        #thermal-sensor-cells = <1>;
                };
 
-               aoss_qmp: power-controller@c300000 {
+               aoss_qmp: power-management@c300000 {
                        compatible = "qcom,sc8180x-aoss-qmp", "qcom,aoss-qmp";
                        reg = <0x0 0x0c300000 0x0 0x400>;
                        interrupts = <GIC_SPI 389 IRQ_TYPE_EDGE_RISING>;
index 75adaa19d1c3e0c8fcad40c7d0b0afb504331d75..8e2c02497c05c10a3a5a43a6002467736a3b7f95 100644 (file)
                stdout-path = "serial0:115200n8";
        };
 
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&kypd_vol_up_n>;
+               pinctrl-names = "default";
+
+               key-vol-up {
+                       label = "volume_up";
+                       gpios = <&pmc8280_1_gpios 6 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       wakeup-source;
+               };
+       };
+
        pmic-glink {
                compatible = "qcom,sc8280xp-pmic-glink", "qcom,pmic-glink";
 
                vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
                vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
 
-               qcom,ath11k-calibration-variant = "QC_8280XP_CRD";
+               qcom,calibration-variant = "QC_8280XP_CRD";
        };
 };
 
        status = "okay";
 };
 
+&remoteproc_slpi {
+       firmware-name = "qcom/sc8280xp/qcslpi8280.mbn";
+
+       status = "okay";
+};
+
 &sdc2 {
        pinctrl-0 = <&sdc2_default_state>;
        pinctrl-1 = <&sdc2_sleep_state>;
                function = "normal";
        };
 
+       kypd_vol_up_n: kypd-vol-up-n-state {
+               pins = "gpio6";
+               function = "normal";
+               power-source = <0>; /* 3.3 V */
+               bias-pull-up;
+               input-enable;
+       };
+
        misc_3p3_reg_en: misc-3p3-reg-en-state {
                pins = "gpio2";
                function = "normal";
diff --git a/src/arm64/qcom/sc8280xp-el2.dtso b/src/arm64/qcom/sc8280xp-el2.dtso
new file mode 100644 (file)
index 0000000..25d1fa4
--- /dev/null
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+/*
+ * sc8280xp specific modifications required to boot in EL2.
+ */
+
+/dts-v1/;
+/plugin/;
+
+/* We can't and don't need to use zap shader in EL2 as linux can zap the gpu on it's own. */
+&gpu {
+       zap-shader {
+               status = "disabled";
+       };
+};
+
+/*
+ * When running under QHEE, this IOMMU is controlled by the firmware,
+ * however when we take ownership of it in EL2, we need to configure
+ * it properly to use PCIe.
+ */
+&pcie2a {
+       iommu-map = <0 &pcie_smmu 0x20000 0x10000>;
+};
+
+&pcie2b {
+       iommu-map = <0 &pcie_smmu 0x30000 0x10000>;
+};
+
+&pcie3a {
+       iommu-map = <0 &pcie_smmu 0x40000 0x10000>;
+};
+
+&pcie3b {
+       iommu-map = <0 &pcie_smmu 0x50000 0x10000>;
+};
+
+&pcie4 {
+       iommu-map = <0 &pcie_smmu 0x60000 0x10000>;
+};
+
+&pcie_smmu {
+       status = "okay";
+};
index f3190f408f4b2c7ca9fe368d652d5d66bb3949af..cefecb7a23cf579b1f62ef6fccf9a27a6ea92ac4 100644 (file)
                vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
                vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
 
-               qcom,ath11k-calibration-variant = "LE_X13S";
+               qcom,calibration-variant = "LE_X13S";
        };
 };
 
 };
 
 &pmk8280_rtc {
-       nvmem-cells = <&rtc_offset>;
-       nvmem-cell-names = "offset";
+       qcom,uefi-rtc-info;
 
        status = "okay";
 };
 
-&pmk8280_sdam_6 {
-       status = "okay";
-
-       rtc_offset: rtc-offset@bc {
-               reg = <0xbc 0x4>;
-       };
-};
-
 &pmk8280_vadc {
        channel@144 {
                reg = <PM8350_ADC7_AMUX_THM1_100K_PU(1)>;
        status = "okay";
 };
 
+&remoteproc_slpi {
+       firmware-name = "qcom/sc8280xp/LENOVO/21BX/qcslpi8280.mbn";
+
+       status = "okay";
+};
+
 &rxmacro {
        status = "okay";
 };
                "VA DMIC0", "MIC BIAS1",
                "VA DMIC1", "MIC BIAS1",
                "VA DMIC2", "MIC BIAS3",
-               "VA DMIC0", "VA MIC BIAS1",
-               "VA DMIC1", "VA MIC BIAS1",
-               "VA DMIC2", "VA MIC BIAS3",
                "TX SWR_ADC1", "ADC2_OUTPUT";
 
        wcd-playback-dai-link {
index ae5daeac8fe284bbec86622c10e6831d60a25297..d00889fa6f0bac01d326dca9801c66a508ff1d67 100644 (file)
                compatible = "pci17cb,1103";
                reg = <0x10000 0x0 0x0 0x0 0x0>;
 
-               qcom,ath11k-calibration-variant = "MS_SP9_5G";
+               qcom,calibration-variant = "MS_SP9_5G";
        };
 };
 
index fa9d9410505226f70c1b1283a7360bf3a56e8c4f..812251324002b50f3b48845b6c244f692d42b9b2 100644 (file)
                vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
                vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
 
-               qcom,ath11k-calibration-variant = "MS_Volterra";
+               qcom,calibration-variant = "MS_Volterra";
        };
 };
 
index 1e3babf2e40d80dbe196f521b2de519354b0495f..307df1d3dcd2ebe6ebf3b484aa9ad0f79271a1f5 100644 (file)
                        };
                };
 
+               pmc8280c_thermal: pmc8280c-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pmc8280c_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
+
                pm8280_2_thermal: pm8280-2-thermal {
                        polling-delay-passive = <100>;
 
                                };
                        };
                };
+
+               pmr735a_thermal: pmr735a-thermal {
+                       polling-delay-passive = <100>;
+
+                       thermal-sensors = <&pmr735a_temp_alarm>;
+
+                       trips {
+                               trip0 {
+                                       temperature = <95000>;
+                                       hysteresis = <0>;
+                                       type = "passive";
+                               };
+
+                               trip1 {
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
+                                       type = "critical";
+                               };
+                       };
+               };
        };
 };
 
                #address-cells = <1>;
                #size-cells = <0>;
 
+               pmc8280c_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts-extended = <&spmi_bus 0x2 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       #thermal-sensor-cells = <0>;
+               };
+
                pmc8280c_gpios: gpio@8800 {
                        compatible = "qcom,pm8350c-gpio", "qcom,spmi-gpio";
                        reg = <0x8800>;
                pm8280_2_temp_alarm: temp-alarm@a00 {
                        compatible = "qcom,spmi-temp-alarm";
                        reg = <0xa00>;
-                       interrupts-extended = <&spmi_bus 0x2 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       interrupts-extended = <&spmi_bus 0x3 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
                        io-channels = <&pmk8280_vadc PM8350_ADC7_DIE_TEMP(3)>;
                        io-channel-names = "thermal";
                        #thermal-sensor-cells = <0>;
                #address-cells = <1>;
                #size-cells = <0>;
 
+               pmr735a_temp_alarm: temp-alarm@a00 {
+                       compatible = "qcom,spmi-temp-alarm";
+                       reg = <0xa00>;
+                       interrupts-extended = <&spmi_bus 0x4 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
+                       io-channels = <&pmk8280_vadc PMR735A_ADC7_DIE_TEMP>;
+                       io-channel-names = "thermal";
+                       #thermal-sensor-cells = <0>;
+               };
+
                pmr735a_gpios: gpio@8800 {
                        compatible = "qcom,pmr735a-gpio", "qcom,spmi-gpio";
                        reg = <0x8800>;
index 01501acb1790a100cb14e2d3e7a461159b3d0531..87555a119d947dca75415675807f7965b2f203ac 100644 (file)
                        no-map;
                };
 
+               pil_slpi_mem: slpi-region@88c00000 {
+                       reg = <0 0x88c00000 0 0x1500000>;
+                       no-map;
+               };
+
                pil_nsp0_mem: cdsp0-region@8a100000 {
                        reg = <0 0x8a100000 0 0x1e00000>;
                        no-map;
                };
        };
 
+       smp2p-slpi {
+               compatible = "qcom,smp2p";
+               qcom,smem = <481>, <430>;
+               interrupts-extended = <&ipcc IPCC_CLIENT_SLPI
+                                            IPCC_MPROC_SIGNAL_SMP2P
+                                            IRQ_TYPE_EDGE_RISING>;
+               mboxes = <&ipcc IPCC_CLIENT_SLPI
+                               IPCC_MPROC_SIGNAL_SMP2P>;
+
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <3>;
+
+               smp2p_slpi_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               smp2p_slpi_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
        soc: soc@0 {
                compatible = "simple-bus";
                #address-cells = <2>;
                                reg = <0 0x00980000 0 0x4000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
                                clock-names = "se";
                                interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
                                power-domains = <&rpmhpd SC8280XP_CX>;
                                reg = <0 0x00984000 0 0x4000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
                                clock-names = "se";
                                interrupts = <GIC_SPI 602 IRQ_TYPE_LEVEL_HIGH>;
                                power-domains = <&rpmhpd SC8280XP_CX>;
                                reg = <0 0x00988000 0 0x4000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
                                clock-names = "se";
                                interrupts = <GIC_SPI 603 IRQ_TYPE_LEVEL_HIGH>;
                                power-domains = <&rpmhpd SC8280XP_CX>;
                                reg = <0 0x0098c000 0 0x4000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S3_CLK>;
                                clock-names = "se";
                                interrupts = <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>;
                                power-domains = <&rpmhpd SC8280XP_CX>;
                                reg = <0 0x00990000 0 0x4000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S4_CLK>;
                                clock-names = "se";
                                interrupts = <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>;
                                power-domains = <&rpmhpd SC8280XP_CX>;
                                reg = <0 0x00994000 0 0x4000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
                                clock-names = "se";
                                interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH>;
                                power-domains = <&rpmhpd SC8280XP_CX>;
                                reg = <0 0x00998000 0 0x4000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S6_CLK>;
                                clock-names = "se";
                                interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
                                power-domains = <&rpmhpd SC8280XP_CX>;
                                reg = <0 0x0099c000 0 0x4000>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S7_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP0_S7_CLK>;
                                clock-names = "se";
                                interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
                                power-domains = <&rpmhpd SC8280XP_CX>;
                        reg = <0x0 0x01fc0000 0x0 0x30000>;
                };
 
-               gpu: gpu@3d00000 {
-                       compatible = "qcom,adreno-690.0", "qcom,adreno";
-
-                       reg = <0 0x03d00000 0 0x40000>,
-                             <0 0x03d9e000 0 0x1000>,
-                             <0 0x03d61000 0 0x800>;
-                       reg-names = "kgsl_3d0_reg_memory",
-                                   "cx_mem",
-                                   "cx_dbgc";
-                       interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
-                       iommus = <&gpu_smmu 0 0xc00>, <&gpu_smmu 1 0xc00>;
-                       operating-points-v2 = <&gpu_opp_table>;
-
-                       qcom,gmu = <&gmu>;
-                       interconnects = <&gem_noc MASTER_GFX3D 0 &mc_virt SLAVE_EBI1 0>;
-                       interconnect-names = "gfx-mem";
-                       #cooling-cells = <2>;
+               remoteproc_slpi: remoteproc@2400000 {
+                       compatible = "qcom,sc8280xp-slpi-pas", "qcom,sm8350-slpi-pas";
+                       reg = <0 0x02400000 0 0x10000>;
 
-                       status = "disabled";
+                       interrupts-extended = <&pdc 9 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_slpi_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_slpi_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_slpi_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_slpi_in 3 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog",
+                                         "fatal",
+                                         "ready",
+                                         "handover",
+                                         "stop-ack";
 
-                       gpu_opp_table: opp-table {
-                               compatible = "operating-points-v2";
-
-                               opp-270000000 {
-                                       opp-hz = /bits/ 64 <270000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
-                                       opp-peak-kBps = <451000>;
-                               };
-
-                               opp-410000000 {
-                                       opp-hz = /bits/ 64 <410000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
-                                       opp-peak-kBps = <1555000>;
-                               };
-
-                               opp-500000000 {
-                                       opp-hz = /bits/ 64 <500000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
-                                       opp-peak-kBps = <1555000>;
-                               };
-
-                               opp-547000000 {
-                                       opp-hz = /bits/ 64 <547000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
-                                       opp-peak-kBps = <1555000>;
-                               };
-
-                               opp-606000000 {
-                                       opp-hz = /bits/ 64 <606000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
-                                       opp-peak-kBps = <2736000>;
-                               };
-
-                               opp-640000000 {
-                                       opp-hz = /bits/ 64 <640000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
-                                       opp-peak-kBps = <2736000>;
-                               };
-
-                               opp-655000000 {
-                                       opp-hz = /bits/ 64 <655000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
-                                       opp-peak-kBps = <2736000>;
-                               };
-
-                               opp-690000000 {
-                                       opp-hz = /bits/ 64 <690000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
-                                       opp-peak-kBps = <2736000>;
-                               };
-                       };
-               };
-
-               gmu: gmu@3d6a000 {
-                       compatible = "qcom,adreno-gmu-690.0", "qcom,adreno-gmu";
-                       reg = <0 0x03d6a000 0 0x34000>,
-                             <0 0x03de0000 0 0x10000>,
-                             <0 0x0b290000 0 0x10000>;
-                       reg-names = "gmu", "rscc", "gmu_pdc";
-                       interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "hfi", "gmu";
-                       clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
-                                <&gpucc GPU_CC_CXO_CLK>,
-                                <&gcc GCC_DDRSS_GPU_AXI_CLK>,
-                                <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
-                                <&gpucc GPU_CC_AHB_CLK>,
-                                <&gpucc GPU_CC_HUB_CX_INT_CLK>,
-                                <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>;
-                       clock-names = "gmu",
-                                     "cxo",
-                                     "axi",
-                                     "memnoc",
-                                     "ahb",
-                                     "hub",
-                                     "smmu_vote";
-                       power-domains = <&gpucc GPU_CC_CX_GDSC>,
-                                       <&gpucc GPU_CC_GX_GDSC>;
-                       power-domain-names = "cx",
-                                            "gx";
-                       iommus = <&gpu_smmu 5 0xc00>;
-                       operating-points-v2 = <&gmu_opp_table>;
-
-                       gmu_opp_table: opp-table {
-                               compatible = "operating-points-v2";
-
-                               opp-200000000 {
-                                       opp-hz = /bits/ 64 <200000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
-                               };
-
-                               opp-500000000 {
-                                       opp-hz = /bits/ 64 <500000000>;
-                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
-                               };
-                       };
-               };
-
-               gpucc: clock-controller@3d90000 {
-                       compatible = "qcom,sc8280xp-gpucc";
-                       reg = <0 0x03d90000 0 0x9000>;
-                       clocks = <&rpmhcc RPMH_CXO_CLK>,
-                                <&gcc GCC_GPU_GPLL0_CLK_SRC>,
-                                <&gcc GCC_GPU_GPLL0_DIV_CLK_SRC>;
-                       clock-names = "bi_tcxo",
-                                     "gcc_gpu_gpll0_clk_src",
-                                     "gcc_gpu_gpll0_div_clk_src";
-
-                       power-domains = <&rpmhpd SC8280XP_GFX>;
-                       #clock-cells = <1>;
-                       #reset-cells = <1>;
-                       #power-domain-cells = <1>;
-               };
-
-               gpu_smmu: iommu@3da0000 {
-                       compatible = "qcom,sc8280xp-smmu-500", "qcom,adreno-smmu",
-                                    "qcom,smmu-500", "arm,mmu-500";
-                       reg = <0 0x03da0000 0 0x20000>;
-                       #iommu-cells = <2>;
-                       #global-interrupts = <2>;
-                       interrupts = <GIC_SPI 672 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 681 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 682 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 683 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 684 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 685 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 686 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 687 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 688 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 689 IRQ_TYPE_LEVEL_HIGH>;
-
-                       clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
-                                <&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
-                                <&gpucc GPU_CC_AHB_CLK>,
-                                <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
-                                <&gpucc GPU_CC_CX_GMU_CLK>,
-                                <&gpucc GPU_CC_HUB_CX_INT_CLK>,
-                                <&gpucc GPU_CC_HUB_AON_CLK>;
-                       clock-names = "gcc_gpu_memnoc_gfx_clk",
-                                     "gcc_gpu_snoc_dvm_gfx_clk",
-                                     "gpu_cc_ahb_clk",
-                                     "gpu_cc_hlos1_vote_gpu_smmu_clk",
-                                     "gpu_cc_cx_gmu_clk",
-                                     "gpu_cc_hub_cx_int_clk",
-                                     "gpu_cc_hub_aon_clk";
-
-                       power-domains = <&gpucc GPU_CC_CX_GDSC>;
-                       dma-coherent;
-               };
-
-               usb_0_hsphy: phy@88e5000 {
-                       compatible = "qcom,sc8280xp-usb-hs-phy",
-                                    "qcom,usb-snps-hs-5nm-phy";
-                       reg = <0 0x088e5000 0 0x400>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
-                       clock-names = "ref";
-                       resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
-
-                       #phy-cells = <0>;
-
-                       status = "disabled";
-               };
-
-               usb_2_hsphy0: phy@88e7000 {
-                       compatible = "qcom,sc8280xp-usb-hs-phy",
-                                    "qcom,usb-snps-hs-5nm-phy";
-                       reg = <0 0x088e7000 0 0x400>;
-                       clocks = <&gcc GCC_USB2_HS0_CLKREF_CLK>;
-                       clock-names = "ref";
-                       resets = <&gcc GCC_QUSB2PHY_HS0_MP_BCR>;
-
-                       #phy-cells = <0>;
-
-                       status = "disabled";
-               };
-
-               usb_2_hsphy1: phy@88e8000 {
-                       compatible = "qcom,sc8280xp-usb-hs-phy",
-                                    "qcom,usb-snps-hs-5nm-phy";
-                       reg = <0 0x088e8000 0 0x400>;
-                       clocks = <&gcc GCC_USB2_HS1_CLKREF_CLK>;
-                       clock-names = "ref";
-                       resets = <&gcc GCC_QUSB2PHY_HS1_MP_BCR>;
-
-                       #phy-cells = <0>;
-
-                       status = "disabled";
-               };
-
-               usb_2_hsphy2: phy@88e9000 {
-                       compatible = "qcom,sc8280xp-usb-hs-phy",
-                                    "qcom,usb-snps-hs-5nm-phy";
-                       reg = <0 0x088e9000 0 0x400>;
-                       clocks = <&gcc GCC_USB2_HS2_CLKREF_CLK>;
-                       clock-names = "ref";
-                       resets = <&gcc GCC_QUSB2PHY_HS2_MP_BCR>;
-
-                       #phy-cells = <0>;
-
-                       status = "disabled";
-               };
-
-               usb_2_hsphy3: phy@88ea000 {
-                       compatible = "qcom,sc8280xp-usb-hs-phy",
-                                    "qcom,usb-snps-hs-5nm-phy";
-                       reg = <0 0x088ea000 0 0x400>;
-                       clocks = <&gcc GCC_USB2_HS3_CLKREF_CLK>;
-                       clock-names = "ref";
-                       resets = <&gcc GCC_QUSB2PHY_HS3_MP_BCR>;
-
-                       #phy-cells = <0>;
-
-                       status = "disabled";
-               };
-
-               usb_2_qmpphy0: phy@88ef000 {
-                       compatible = "qcom,sc8280xp-qmp-usb3-uni-phy";
-                       reg = <0 0x088ef000 0 0x2000>;
-
-                       clocks = <&gcc GCC_USB3_MP_PHY_AUX_CLK>,
-                                <&gcc GCC_USB3_MP0_CLKREF_CLK>,
-                                <&gcc GCC_USB3_MP_PHY_COM_AUX_CLK>,
-                                <&gcc GCC_USB3_MP_PHY_PIPE_0_CLK>;
-                       clock-names = "aux", "ref", "com_aux", "pipe";
+                       clock-names = "xo";
 
-                       resets = <&gcc GCC_USB3_UNIPHY_MP0_BCR>,
-                                <&gcc GCC_USB3UNIPHY_PHY_MP0_BCR>;
-                       reset-names = "phy", "phy_phy";
+                       power-domains = <&rpmhpd SC8280XP_LCX>,
+                                       <&rpmhpd SC8280XP_LMX>;
+                       power-domain-names = "lcx", "lmx";
 
-                       power-domains = <&gcc USB30_MP_GDSC>;
+                       memory-region = <&pil_slpi_mem>;
 
-                       #clock-cells = <0>;
-                       clock-output-names = "usb2_phy0_pipe_clk";
+                       qcom,qmp = <&aoss_qmp>;
 
-                       #phy-cells = <0>;
+                       qcom,smem-states = <&smp2p_slpi_out 0>;
+                       qcom,smem-state-names = "stop";
 
                        status = "disabled";
-               };
-
-               usb_2_qmpphy1: phy@88f1000 {
-                       compatible = "qcom,sc8280xp-qmp-usb3-uni-phy";
-                       reg = <0 0x088f1000 0 0x2000>;
 
-                       clocks = <&gcc GCC_USB3_MP_PHY_AUX_CLK>,
-                                <&gcc GCC_USB3_MP1_CLKREF_CLK>,
-                                <&gcc GCC_USB3_MP_PHY_COM_AUX_CLK>,
-                                <&gcc GCC_USB3_MP_PHY_PIPE_1_CLK>;
-                       clock-names = "aux", "ref", "com_aux", "pipe";
+                       glink-edge {
+                               interrupts-extended = <&ipcc IPCC_CLIENT_SLPI
+                                                            IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                            IRQ_TYPE_EDGE_RISING>;
+                               mboxes = <&ipcc IPCC_CLIENT_SLPI
+                                               IPCC_MPROC_SIGNAL_GLINK_QMP>;
 
-                       resets = <&gcc GCC_USB3_UNIPHY_MP1_BCR>,
-                                <&gcc GCC_USB3UNIPHY_PHY_MP1_BCR>;
-                       reset-names = "phy", "phy_phy";
+                               label = "slpi";
+                               qcom,remote-pid = <3>;
 
-                       power-domains = <&gcc USB30_MP_GDSC>;
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "sdsp";
+                                       qcom,non-secure-domain;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
 
-                       #clock-cells = <0>;
-                       clock-output-names = "usb2_phy1_pipe_clk";
+                                       compute-cb@1 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <1>;
+                                               iommus = <&apps_smmu 0x0521 0x0>;
+                                       };
 
-                       #phy-cells = <0>;
+                                       compute-cb@2 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <2>;
+                                               iommus = <&apps_smmu 0x0522 0x0>;
+                                       };
 
-                       status = "disabled";
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x0523 0x0>;
+                                       };
+                               };
+                       };
                };
 
                remoteproc_adsp: remoteproc@3000000 {
                                        output-low;
                                };
 
-                               data-pins {
-                                       pins = "gpio9";
-                                       function = "dmic2_data";
-                                       drive-strength = <2>;
-                                       bias-pull-down;
-                                       input-enable;
+                               data-pins {
+                                       pins = "gpio9";
+                                       function = "dmic2_data";
+                                       drive-strength = <2>;
+                                       bias-pull-down;
+                                       input-enable;
+                               };
+                       };
+
+                       wsa_swr_default: wsa-swr-default-state {
+                               clk-pins {
+                                       pins = "gpio10";
+                                       function = "wsa_swr_clk";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-disable;
+                               };
+
+                               data-pins {
+                                       pins = "gpio11";
+                                       function = "wsa_swr_data";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-bus-hold;
+                               };
+                       };
+
+                       wsa2_swr_default: wsa2-swr-default-state {
+                               clk-pins {
+                                       pins = "gpio15";
+                                       function = "wsa2_swr_clk";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-disable;
+                               };
+
+                               data-pins {
+                                       pins = "gpio16";
+                                       function = "wsa2_swr_data";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-bus-hold;
+                               };
+                       };
+               };
+
+               lpasscc: clock-controller@33e0000 {
+                       compatible = "qcom,sc8280xp-lpasscc";
+                       reg = <0 0x033e0000 0 0x12000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
+               gpu: gpu@3d00000 {
+                       compatible = "qcom,adreno-690.0", "qcom,adreno";
+
+                       reg = <0 0x03d00000 0 0x40000>,
+                             <0 0x03d9e000 0 0x1000>,
+                             <0 0x03d61000 0 0x800>;
+                       reg-names = "kgsl_3d0_reg_memory",
+                                   "cx_mem",
+                                   "cx_dbgc";
+                       interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
+                       iommus = <&gpu_smmu 0 0xc00>, <&gpu_smmu 1 0xc00>;
+                       operating-points-v2 = <&gpu_opp_table>;
+
+                       qcom,gmu = <&gmu>;
+                       interconnects = <&gem_noc MASTER_GFX3D 0 &mc_virt SLAVE_EBI1 0>;
+                       interconnect-names = "gfx-mem";
+                       #cooling-cells = <2>;
+
+                       status = "disabled";
+
+                       gpu_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-270000000 {
+                                       opp-hz = /bits/ 64 <270000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
+                                       opp-peak-kBps = <451000>;
+                               };
+
+                               opp-410000000 {
+                                       opp-hz = /bits/ 64 <410000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+                                       opp-peak-kBps = <1555000>;
+                               };
+
+                               opp-500000000 {
+                                       opp-hz = /bits/ 64 <500000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+                                       opp-peak-kBps = <1555000>;
+                               };
+
+                               opp-547000000 {
+                                       opp-hz = /bits/ 64 <547000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
+                                       opp-peak-kBps = <1555000>;
+                               };
+
+                               opp-606000000 {
+                                       opp-hz = /bits/ 64 <606000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
+                                       opp-peak-kBps = <2736000>;
+                               };
+
+                               opp-640000000 {
+                                       opp-hz = /bits/ 64 <640000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
+                                       opp-peak-kBps = <2736000>;
                                };
-                       };
 
-                       wsa_swr_default: wsa-swr-default-state {
-                               clk-pins {
-                                       pins = "gpio10";
-                                       function = "wsa_swr_clk";
-                                       drive-strength = <2>;
-                                       slew-rate = <1>;
-                                       bias-disable;
+                               opp-655000000 {
+                                       opp-hz = /bits/ 64 <655000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
+                                       opp-peak-kBps = <2736000>;
                                };
 
-                               data-pins {
-                                       pins = "gpio11";
-                                       function = "wsa_swr_data";
-                                       drive-strength = <2>;
-                                       slew-rate = <1>;
-                                       bias-bus-hold;
+                               opp-690000000 {
+                                       opp-hz = /bits/ 64 <690000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
+                                       opp-peak-kBps = <2736000>;
                                };
                        };
+               };
 
-                       wsa2_swr_default: wsa2-swr-default-state {
-                               clk-pins {
-                                       pins = "gpio15";
-                                       function = "wsa2_swr_clk";
-                                       drive-strength = <2>;
-                                       slew-rate = <1>;
-                                       bias-disable;
+               gmu: gmu@3d6a000 {
+                       compatible = "qcom,adreno-gmu-690.0", "qcom,adreno-gmu";
+                       reg = <0 0x03d6a000 0 0x34000>,
+                             <0 0x03de0000 0 0x10000>,
+                             <0 0x0b290000 0 0x10000>;
+                       reg-names = "gmu", "rscc", "gmu_pdc";
+                       interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "hfi", "gmu";
+                       clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
+                                <&gpucc GPU_CC_CXO_CLK>,
+                                <&gcc GCC_DDRSS_GPU_AXI_CLK>,
+                                <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+                                <&gpucc GPU_CC_AHB_CLK>,
+                                <&gpucc GPU_CC_HUB_CX_INT_CLK>,
+                                <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>;
+                       clock-names = "gmu",
+                                     "cxo",
+                                     "axi",
+                                     "memnoc",
+                                     "ahb",
+                                     "hub",
+                                     "smmu_vote";
+                       power-domains = <&gpucc GPU_CC_CX_GDSC>,
+                                       <&gpucc GPU_CC_GX_GDSC>;
+                       power-domain-names = "cx",
+                                            "gx";
+                       iommus = <&gpu_smmu 5 0xc00>;
+                       operating-points-v2 = <&gmu_opp_table>;
+
+                       gmu_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-200000000 {
+                                       opp-hz = /bits/ 64 <200000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
                                };
 
-                               data-pins {
-                                       pins = "gpio16";
-                                       function = "wsa2_swr_data";
-                                       drive-strength = <2>;
-                                       slew-rate = <1>;
-                                       bias-bus-hold;
+                               opp-500000000 {
+                                       opp-hz = /bits/ 64 <500000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
                                };
                        };
                };
 
-               lpasscc: clock-controller@33e0000 {
-                       compatible = "qcom,sc8280xp-lpasscc";
-                       reg = <0 0x033e0000 0 0x12000>;
+               gpucc: clock-controller@3d90000 {
+                       compatible = "qcom,sc8280xp-gpucc";
+                       reg = <0 0x03d90000 0 0x9000>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>,
+                                <&gcc GCC_GPU_GPLL0_CLK_SRC>,
+                                <&gcc GCC_GPU_GPLL0_DIV_CLK_SRC>;
+                       clock-names = "bi_tcxo",
+                                     "gcc_gpu_gpll0_clk_src",
+                                     "gcc_gpu_gpll0_div_clk_src";
+
+                       power-domains = <&rpmhpd SC8280XP_GFX>;
                        #clock-cells = <1>;
                        #reset-cells = <1>;
+                       #power-domain-cells = <1>;
+               };
+
+               gpu_smmu: iommu@3da0000 {
+                       compatible = "qcom,sc8280xp-smmu-500", "qcom,adreno-smmu",
+                                    "qcom,smmu-500", "arm,mmu-500";
+                       reg = <0 0x03da0000 0 0x20000>;
+                       #iommu-cells = <2>;
+                       #global-interrupts = <2>;
+                       interrupts = <GIC_SPI 672 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 681 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 682 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 683 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 684 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 685 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 686 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 687 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 688 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 689 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
+                                <&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
+                                <&gpucc GPU_CC_AHB_CLK>,
+                                <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
+                                <&gpucc GPU_CC_CX_GMU_CLK>,
+                                <&gpucc GPU_CC_HUB_CX_INT_CLK>,
+                                <&gpucc GPU_CC_HUB_AON_CLK>;
+                       clock-names = "gcc_gpu_memnoc_gfx_clk",
+                                     "gcc_gpu_snoc_dvm_gfx_clk",
+                                     "gpu_cc_ahb_clk",
+                                     "gpu_cc_hlos1_vote_gpu_smmu_clk",
+                                     "gpu_cc_cx_gmu_clk",
+                                     "gpu_cc_hub_cx_int_clk",
+                                     "gpu_cc_hub_aon_clk";
+
+                       power-domains = <&gpucc GPU_CC_CX_GDSC>;
+                       dma-coherent;
                };
 
                sdc2: mmc@8804000 {
                        };
                };
 
+               usb_0_hsphy: phy@88e5000 {
+                       compatible = "qcom,sc8280xp-usb-hs-phy",
+                                    "qcom,usb-snps-hs-5nm-phy";
+                       reg = <0 0x088e5000 0 0x400>;
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "ref";
+                       resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               usb_2_hsphy0: phy@88e7000 {
+                       compatible = "qcom,sc8280xp-usb-hs-phy",
+                                    "qcom,usb-snps-hs-5nm-phy";
+                       reg = <0 0x088e7000 0 0x400>;
+                       clocks = <&gcc GCC_USB2_HS0_CLKREF_CLK>;
+                       clock-names = "ref";
+                       resets = <&gcc GCC_QUSB2PHY_HS0_MP_BCR>;
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               usb_2_hsphy1: phy@88e8000 {
+                       compatible = "qcom,sc8280xp-usb-hs-phy",
+                                    "qcom,usb-snps-hs-5nm-phy";
+                       reg = <0 0x088e8000 0 0x400>;
+                       clocks = <&gcc GCC_USB2_HS1_CLKREF_CLK>;
+                       clock-names = "ref";
+                       resets = <&gcc GCC_QUSB2PHY_HS1_MP_BCR>;
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               usb_2_hsphy2: phy@88e9000 {
+                       compatible = "qcom,sc8280xp-usb-hs-phy",
+                                    "qcom,usb-snps-hs-5nm-phy";
+                       reg = <0 0x088e9000 0 0x400>;
+                       clocks = <&gcc GCC_USB2_HS2_CLKREF_CLK>;
+                       clock-names = "ref";
+                       resets = <&gcc GCC_QUSB2PHY_HS2_MP_BCR>;
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               usb_2_hsphy3: phy@88ea000 {
+                       compatible = "qcom,sc8280xp-usb-hs-phy",
+                                    "qcom,usb-snps-hs-5nm-phy";
+                       reg = <0 0x088ea000 0 0x400>;
+                       clocks = <&gcc GCC_USB2_HS3_CLKREF_CLK>;
+                       clock-names = "ref";
+                       resets = <&gcc GCC_QUSB2PHY_HS3_MP_BCR>;
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
                usb_0_qmpphy: phy@88eb000 {
                        compatible = "qcom,sc8280xp-qmp-usb43dp-phy";
                        reg = <0 0x088eb000 0 0x4000>;
                        };
                };
 
+               usb_2_qmpphy0: phy@88ef000 {
+                       compatible = "qcom,sc8280xp-qmp-usb3-uni-phy";
+                       reg = <0 0x088ef000 0 0x2000>;
+
+                       clocks = <&gcc GCC_USB3_MP_PHY_AUX_CLK>,
+                                <&gcc GCC_USB3_MP0_CLKREF_CLK>,
+                                <&gcc GCC_USB3_MP_PHY_COM_AUX_CLK>,
+                                <&gcc GCC_USB3_MP_PHY_PIPE_0_CLK>;
+                       clock-names = "aux", "ref", "com_aux", "pipe";
+
+                       resets = <&gcc GCC_USB3_UNIPHY_MP0_BCR>,
+                                <&gcc GCC_USB3UNIPHY_PHY_MP0_BCR>;
+                       reset-names = "phy", "phy_phy";
+
+                       power-domains = <&gcc USB30_MP_GDSC>;
+
+                       #clock-cells = <0>;
+                       clock-output-names = "usb2_phy0_pipe_clk";
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
+               usb_2_qmpphy1: phy@88f1000 {
+                       compatible = "qcom,sc8280xp-qmp-usb3-uni-phy";
+                       reg = <0 0x088f1000 0 0x2000>;
+
+                       clocks = <&gcc GCC_USB3_MP_PHY_AUX_CLK>,
+                                <&gcc GCC_USB3_MP1_CLKREF_CLK>,
+                                <&gcc GCC_USB3_MP_PHY_COM_AUX_CLK>,
+                                <&gcc GCC_USB3_MP_PHY_PIPE_1_CLK>;
+                       clock-names = "aux", "ref", "com_aux", "pipe";
+
+                       resets = <&gcc GCC_USB3_UNIPHY_MP1_BCR>,
+                                <&gcc GCC_USB3UNIPHY_PHY_MP1_BCR>;
+                       reset-names = "phy", "phy_phy";
+
+                       power-domains = <&gcc USB30_MP_GDSC>;
+
+                       #clock-cells = <0>;
+                       clock-output-names = "usb2_phy1_pipe_clk";
+
+                       #phy-cells = <0>;
+
+                       status = "disabled";
+               };
+
                usb_1_hsphy: phy@8902000 {
                        compatible = "qcom,sc8280xp-usb-hs-phy",
                                     "qcom,usb-snps-hs-5nm-phy";
                        mdss0_mdp: display-controller@ae01000 {
                                compatible = "qcom,sc8280xp-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
                        };
                };
 
+               pcie_smmu: iommu@14f80000 {
+                       compatible = "arm,smmu-v3";
+                       reg = <0 0x14f80000 0 0x80000>;
+                       #iommu-cells = <1>;
+                       interrupts = <GIC_SPI 951 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 955 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 953 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eventq",
+                                         "gerror",
+                                         "cmdq-sync";
+                       dma-coherent;
+                       status = "reserved"; /* Controlled by QHEE. */
+               };
+
                apps_smmu: iommu@15000000 {
                        compatible = "qcom,sc8280xp-smmu-500", "arm,mmu-500";
                        reg = <0 0x15000000 0 0x100000>;
                        mdss1_mdp: display-controller@22001000 {
                                compatible = "qcom,sc8280xp-dpu";
                                reg = <0 0x22001000 0 0x8f000>,
-                                     <0 0x220b0000 0 0x2008>;
+                                     <0 0x220b0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
index d402f4c85b11d17dde80d17964d1f45767645ff1..74cb29cb7f1a60a3e805a52f4b01fc79f0ea7506 100644 (file)
         * BAM DMA interconnects support is in place.
         */
        /delete-property/ clocks;
+       /delete-property/ clock-names;
 };
 
 &blsp1_uart2 {
         * BAM DMA interconnects support is in place.
         */
        /delete-property/ clocks;
+       /delete-property/ clock-names;
 };
 
 &blsp2_uart1 {
        vdd-3.3-ch0-supply = <&vreg_l19a_3p3>;
        vdd-3.3-ch1-supply = <&vreg_l8b_3p3>;
 
-       qcom,ath10k-calibration-variant = "Inforce_IFC6560";
+       qcom,calibration-variant = "Inforce_IFC6560";
 
        status = "okay";
 };
index a4b722e0fc1e1216dcb55908040d6238406e80b3..40522e237eac8edade6631943a8cf4437fffc75f 100644 (file)
 };
 
 &adsp_pil {
-       firmware-name = "qcom/sdm630/Sony/nile/adsp.mdt";
+       firmware-name = "qcom/sdm630/Sony/nile/adsp.mbn";
 };
 
 &blsp_i2c1 {
index a2c079bac1a754643563718c8b0244035120be7d..8b1a45a4e56ed1ae02e5bb6e78ca6255d87add1c 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright (c) 2020, AngeloGioacchino Del Regno <kholk11@gmail.com>
  */
 
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sdm660.h>
 #include <dt-bindings/clock/qcom,gpucc-sdm660.h>
 #include <dt-bindings/clock/qcom,mmcc-sdm660.h>
                        reg = <0x0 0xfed00000 0x0 0xa00000>;
                        no-map;
                };
+
+               mdata_mem: mpss-metadata {
+                       alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>;
+                       size = <0x0 0x4000>;
+                       no-map;
+               };
        };
 
        smem: smem {
                                        <&rpmpd SDM660_VDDMX>;
                        power-domain-names = "cx", "mx";
 
-                       memory-region = <&mba_region>, <&mpss_region>;
+                       memory-region = <&mba_region>, <&mpss_region>, <&mdata_mem>;
 
                        status = "disabled";
 
                                        <&xo_board>;
                        clock-names = "iface", "core", "xo";
 
+                       resets = <&gcc GCC_SDCC2_BCR>;
 
                        interconnects = <&a2noc 3 &a2noc 10>,
                                        <&gnoc 0 &cnoc 28>;
                                 <&gcc GCC_SDCC1_ICE_CORE_CLK>;
                        clock-names = "iface", "core", "xo", "ice";
 
+                       resets = <&gcc GCC_SDCC1_BCR>;
+
                        interconnects = <&a2noc 2 &a2noc 10>,
                                        <&gnoc 0 &cnoc 27>;
                        interconnect-names = "sdhc-ddr", "cpu-sdhc";
                                        <&sleep_clk>,
                                        <&gcc GCC_MMSS_GPLL0_CLK>,
                                        <&gcc GCC_MMSS_GPLL0_DIV_CLK>,
-                                       <&mdss_dsi0_phy 1>,
-                                       <&mdss_dsi0_phy 0>,
+                                       <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                       <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
                                        <0>,
                                        <0>,
                                        <0>,
 
                                assigned-clocks = <&mmcc BYTE0_CLK_SRC>,
                                                  <&mmcc PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                clocks = <&mmcc MDSS_MDP_CLK>,
                                         <&mmcc MDSS_BYTE0_CLK>,
index 2c1172aa97e4bd1f4e905e9777e26672e8935d2f..31ed26c31e6ea381a8942ccf569513df3300cdeb 100644 (file)
 };
 
 &hsusb_phy {
-       status = "okay";
        vdd-supply = <&pm8953_l3>;
        vdda-pll-supply = <&pm8953_l7>;
        vdda-phy-dpdm-supply = <&pm8953_l13>;
+
+       status = "okay";
 };
 
 &i2c_3 {
 };
 
 &lpass {
+       firmware-name = "qcom/msm8953/fairphone/fp3/adsp.mbn";
+
        status = "okay";
 };
 
-&pm8953_resin {
+&mpss {
+       firmware-name = "qcom/msm8953/fairphone/fp3/mba.mbn",
+                       "qcom/msm8953/fairphone/fp3/modem.mbn";
+       pll-supply = <&pm8953_l7>;
+
        status = "okay";
+};
+
+&pm8953_resin {
        linux,code = <KEY_VOLUMEDOWN>;
+       status = "okay";
 };
 
 &pmi632_lpg {
 };
 
 &sdhc_1 {
-       status = "okay";
        vmmc-supply = <&pm8953_l8>;
        vqmmc-supply = <&pm8953_l5>;
+
+       status = "okay";
 };
 
 &sdhc_2 {
-       status = "okay";
        vmmc-supply = <&pm8953_l11>;
        vqmmc-supply = <&pm8953_l12>;
 
        cd-gpios = <&tlmm 133 GPIO_ACTIVE_LOW>;
+
+       status = "okay";
 };
 
 &rpm_requests {
                        regulator-min-microvolt = <984000>;
                        regulator-max-microvolt = <1240000>;
                };
+
                pm8953_s4: s4 {
                        regulator-min-microvolt = <1036000>;
                        regulator-max-microvolt = <2040000>;
                };
+
                pm8953_s5: s5 {
                        regulator-min-microvolt = <1036000>;
                        regulator-max-microvolt = <2040000>;
                        regulator-min-microvolt = <975000>;
                        regulator-max-microvolt = <1050000>;
                };
+
                pm8953_l2: l2 {
                        regulator-min-microvolt = <975000>;
                        regulator-max-microvolt = <1175000>;
                };
+
                pm8953_l3: l3 {
                        regulator-min-microvolt = <925000>;
                        regulator-max-microvolt = <925000>;
                };
+
                pm8953_l5: l5 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                };
+
                pm8953_l6: l6 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                };
+
                pm8953_l7: l7 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1900000>;
                };
+
                pm8953_l8: l8 {
                        regulator-min-microvolt = <2900000>;
                        regulator-max-microvolt = <2900000>;
                };
+
                pm8953_l9: l9 {
                        regulator-min-microvolt = <3000000>;
                        regulator-max-microvolt = <3300000>;
                };
+
                pm8953_l10: l10 {
                        regulator-min-microvolt = <2800000>;
                        regulator-max-microvolt = <3000000>;
                };
+
                pm8953_l11: l11 {
                        regulator-min-microvolt = <2950000>;
                        regulator-max-microvolt = <2950000>;
                };
+
                pm8953_l12: l12 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <2950000>;
                };
+
                pm8953_l13: l13 {
                        regulator-min-microvolt = <3125000>;
                        regulator-max-microvolt = <3125000>;
                };
+
                pm8953_l16: l16 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                };
+
                pm8953_l17: l17 {
                        regulator-min-microvolt = <2850000>;
                        regulator-max-microvolt = <2850000>;
                };
+
                pm8953_l19: l19 {
                        regulator-min-microvolt = <1200000>;
                        regulator-max-microvolt = <1350000>;
                };
+
                pm8953_l22: l22 {
                        regulator-min-microvolt = <2800000>;
                        regulator-max-microvolt = <2800000>;
                };
+
                pm8953_l23: l23 {
                        regulator-min-microvolt = <975000>;
                        regulator-max-microvolt = <1225000>;
 };
 
 &wcnss {
+       firmware-name = "qcom/msm8953/fairphone/fp3/wcnss.mbn";
+       vddpx-supply = <&pm8953_l5>;
+
        status = "okay";
+};
 
-       vddpx-supply = <&pm8953_l5>;
+&wcnss_ctrl {
+       firmware-name = "qcom/msm8953/fairphone/fp3/WCNSS_qcom_wlan_nv.bin";
 };
 
 &wcnss_iris {
index 7167f75bced3fdee2bf34b74f1396a2bda5a944f..a9926ad6c6f9f53e7916eba876b6342aa2f7d047 100644 (file)
        status = "okay";
 
        vdd-supply = <&vreg_l1b_0p925>;
+       vdda-pll-supply = <&vreg_l10a_1p8>;
        vdda-phy-dpdm-supply = <&vreg_l7b_3p125>;
 };
 
 &sdhc_2 {
        status = "okay";
 
+       cd-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
        vmmc-supply = <&vreg_l5b_2p95>;
        vqmmc-supply = <&vreg_l2b_2p95>;
 };
index 3164a4817e3267d458d81cabf2ae4223a7a94963..ef4a563c0feba7cd651158cdfa1b4d3cb7503c7c 100644 (file)
 
                assigned-clocks = <&mmcc BYTE1_CLK_SRC>,
                                        <&mmcc PCLK1_CLK_SRC>;
-               assigned-clock-parents = <&mdss_dsi1_phy 0>,
-                                               <&mdss_dsi1_phy 1>;
+               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                clocks = <&mmcc MDSS_MDP_CLK>,
                                <&mmcc MDSS_BYTE1_CLK>,
                        <&sleep_clk>,
                        <&gcc GCC_MMSS_GPLL0_CLK>,
                        <&gcc GCC_MMSS_GPLL0_DIV_CLK>,
-                       <&mdss_dsi0_phy 1>,
-                       <&mdss_dsi0_phy 0>,
-                       <&mdss_dsi1_phy 1>,
-                       <&mdss_dsi1_phy 0>,
+                       <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                       <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                       <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
+                       <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
                        <0>,
                        <0>;
 };
index 279e62ec5433af70c0a7c594f2c5241800b465cf..c33f3de779f6ef457a3336fa4fbe39175c378cce 100644 (file)
@@ -6,7 +6,9 @@
  * Copyright (c) 2022, Richard Acayan. All rights reserved.
  */
 
+#include <dt-bindings/clock/qcom,camcc-sdm845.h>
 #include <dt-bindings/clock/qcom,dispcc-sdm845.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
 #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
                        gpio-ranges = <&tlmm 0 0 151>;
                        wakeup-parent = <&pdc>;
 
+                       cci0_default: cci0-default-state {
+                               pins = "gpio17", "gpio18";
+                               function = "cci_i2c";
+                               drive-strength = <2>;
+                               bias-pull-up;
+                       };
+
+                       cci0_sleep: cci0-sleep-state {
+                               pins = "gpio17", "gpio18";
+                               function = "cci_i2c";
+                               drive-strength = <2>;
+                               bias-pull-down;
+                       };
+
+                       cci1_default: cci1-default-state {
+                               pins = "gpio19", "gpio20";
+                               function = "cci_i2c";
+                               drive-strength = <2>;
+                               bias-pull-up;
+                       };
+
+                       cci1_sleep: cci1-sleep-state {
+                               pins = "gpio19", "gpio20";
+                               function = "cci_i2c";
+                               drive-strength = <2>;
+                               bias-pull-down;
+                       };
+
                        qup_i2c0_default: qup-i2c0-default-state {
                                pins = "gpio0", "gpio1";
                                function = "qup0";
                        #interrupt-cells = <4>;
                };
 
+               cci: cci@ac4a000 {
+                       compatible = "qcom,sdm670-cci", "qcom,msm8996-cci";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       reg = <0 0x0ac4a000 0 0x4000>;
+                       interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
+                       power-domains = <&camcc TITAN_TOP_GDSC>;
+
+                       clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>,
+                                <&camcc CAM_CC_SOC_AHB_CLK>,
+                                <&camcc CAM_CC_CPAS_AHB_CLK>,
+                                <&camcc CAM_CC_CCI_CLK>;
+                       clock-names = "camnoc_axi",
+                                     "soc_ahb",
+                                     "cpas_ahb",
+                                     "cci";
+
+                       pinctrl-names = "default", "sleep";
+                       pinctrl-0 = <&cci0_default &cci1_default>;
+                       pinctrl-1 = <&cci0_sleep &cci1_sleep>;
+
+                       status = "disabled";
+
+                       cci_i2c0: i2c-bus@0 {
+                               reg = <0>;
+                               clock-frequency = <1000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+
+                       cci_i2c1: i2c-bus@1 {
+                               reg = <1>;
+                               clock-frequency = <1000000>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                       };
+               };
+
+               camss: isp@acb3000 {
+                       compatible = "qcom,sdm670-camss";
+                       reg = <0 0x0acb3000 0 0x1000>,
+                             <0 0x0acba000 0 0x1000>,
+                             <0 0x0acc8000 0 0x1000>,
+                             <0 0x0ac65000 0 0x1000>,
+                             <0 0x0ac66000 0 0x1000>,
+                             <0 0x0ac67000 0 0x1000>,
+                             <0 0x0acaf000 0 0x4000>,
+                             <0 0x0acb6000 0 0x4000>,
+                             <0 0x0acc4000 0 0x4000>;
+                       reg-names = "csid0",
+                                   "csid1",
+                                   "csid2",
+                                   "csiphy0",
+                                   "csiphy1",
+                                   "csiphy2",
+                                   "vfe0",
+                                   "vfe1",
+                                   "vfe_lite";
+
+                       interrupts = <GIC_SPI 464 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 466 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 468 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 477 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 478 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 479 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 465 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 467 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 469 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "csid0",
+                                         "csid1",
+                                         "csid2",
+                                         "csiphy0",
+                                         "csiphy1",
+                                         "csiphy2",
+                                         "vfe0",
+                                         "vfe1",
+                                         "vfe_lite";
+
+                       clocks = <&camcc CAM_CC_CAMNOC_AXI_CLK>,
+                                <&camcc CAM_CC_CPAS_AHB_CLK>,
+                                <&camcc CAM_CC_IFE_0_CSID_CLK>,
+                                <&camcc CAM_CC_IFE_1_CSID_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_CSID_CLK>,
+                                <&camcc CAM_CC_CSIPHY0_CLK>,
+                                <&camcc CAM_CC_CSI0PHYTIMER_CLK>,
+                                <&camcc CAM_CC_CSIPHY1_CLK>,
+                                <&camcc CAM_CC_CSI1PHYTIMER_CLK>,
+                                <&camcc CAM_CC_CSIPHY2_CLK>,
+                                <&camcc CAM_CC_CSI2PHYTIMER_CLK>,
+                                <&gcc GCC_CAMERA_AHB_CLK>,
+                                <&gcc GCC_CAMERA_AXI_CLK>,
+                                <&camcc CAM_CC_SOC_AHB_CLK>,
+                                <&camcc CAM_CC_IFE_0_CLK>,
+                                <&camcc CAM_CC_IFE_0_AXI_CLK>,
+                                <&camcc CAM_CC_IFE_0_CPHY_RX_CLK>,
+                                <&camcc CAM_CC_IFE_1_CLK>,
+                                <&camcc CAM_CC_IFE_1_AXI_CLK>,
+                                <&camcc CAM_CC_IFE_1_CPHY_RX_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_CLK>,
+                                <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>;
+                       clock-names = "camnoc_axi",
+                                     "cpas_ahb",
+                                     "csi0",
+                                     "csi1",
+                                     "csi2",
+                                     "csiphy0",
+                                     "csiphy0_timer",
+                                     "csiphy1",
+                                     "csiphy1_timer",
+                                     "csiphy2",
+                                     "csiphy2_timer",
+                                     "gcc_camera_ahb",
+                                     "gcc_camera_axi",
+                                     "soc_ahb",
+                                     "vfe0",
+                                     "vfe0_axi",
+                                     "vfe0_cphy_rx",
+                                     "vfe1",
+                                     "vfe1_axi",
+                                     "vfe1_cphy_rx",
+                                     "vfe_lite",
+                                     "vfe_lite_cphy_rx";
+
+                       iommus = <&apps_smmu 0x808 0x0>,
+                                <&apps_smmu 0x810 0x8>,
+                                <&apps_smmu 0xc08 0x0>,
+                                <&apps_smmu 0xc10 0x8>;
+
+                       power-domains = <&camcc IFE_0_GDSC>,
+                                       <&camcc IFE_1_GDSC>,
+                                       <&camcc TITAN_TOP_GDSC>;
+                       power-domain-names = "ife0",
+                                            "ife1",
+                                            "top";
+
+                       status = "disabled";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       camss_endpoint0: endpoint {
+                                               status = "disabled";
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       camss_endpoint1: endpoint {
+                                               status = "disabled";
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       camss_endpoint2: endpoint {
+                                               status = "disabled";
+                                       };
+                               };
+                       };
+               };
+
                camcc: clock-controller@ad00000 {
                        compatible = "qcom,sdm670-camcc", "qcom,sdm845-camcc";
                        reg = <0 0x0ad00000 0 0x10000>;
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sdm670-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_AXI_CLK>,
                                              "bus";
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SDM670_CX>;
                                              "bus";
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SDM670_CX>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&gcc GCC_DISP_GPLL0_CLK_SRC>,
                                 <&gcc GCC_DISP_GPLL0_DIV_CLK_SRC>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <0>,
                                 <0>;
                        clock-names = "bi_tcxo",
index 743c339ba1081e3a70d94a58b13c12c5525a1b11..b7e514f81f92810b39d128483d10d29878aad431 100644 (file)
@@ -741,10 +741,6 @@ ap_ts_i2c: &i2c14 {
        };
 };
 
-&gmu {
-       status = "okay";
-};
-
 &gpu {
        status = "okay";
 };
index 59970082da45203311146cc5249298f6188bf67a..51f1a4883ab8f0ee7c66fab89c6e1a88c868d2f8 100644 (file)
@@ -9,17 +9,6 @@
 #include <dt-bindings/clock/qcom,camcc-sdm845.h>
 #include <dt-bindings/gpio/gpio.h>
 
-/ {
-       reserved-memory {
-               linux,cma {
-                       compatible = "shared-dma-pool";
-                       size = <0x0 0x8000000>;
-                       reusable;
-                       linux,cma-default;
-               };
-       };
-};
-
 &camss {
        vdda-phy-supply = <&vreg_l1a_0p875>;
        vdda-pll-supply = <&vreg_l26a_1p2>;
index 1cc0f571e1f7f3023efa08adf2791ffce5f2fecf..b5c63fa0365d28fdc4a61dfe67ab6a184e748473 100644 (file)
                           <GCC_LPASS_SWAY_CLK>;
 };
 
-&gmu {
-       status = "okay";
-};
-
 &gpi_dma0 {
        status = "okay";
 };
        qcom,dual-dsi-mode;
 
        /* DSI1 is slave, so use DSI0 clocks */
-       assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+       assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
        status = "okay";
 
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 
        dai@3 {
-               reg = <3>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>;
                direction = <2>;
                is-compress-dai;
        };
        cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
 };
 
+&slpi_pas {
+       firmware-name = "qcom/sdm845/Thundercomm/db845c/slpi.mbn";
+
+       status = "okay";
+};
+
 &sound {
        compatible = "qcom,db845c-sndcard", "qcom,sdm845-sndcard";
        pinctrl-0 = <&quat_mi2s_active
                "DMIC2", "MIC BIAS3",
                "DMIC3", "MIC BIAS3",
                "SpkrLeft IN", "SPK1 OUT",
-               "SpkrRight IN", "SPK2 OUT",
-               "MM_DL1",  "MultiMedia1 Playback",
-               "MM_DL2",  "MultiMedia2 Playback",
-               "MM_DL4",  "MultiMedia4 Playback",
-               "MultiMedia3 Capture", "MM_UL3";
+               "SpkrRight IN", "SPK2 OUT";
 
        mm1-dai-link {
                link-name = "MultiMedia1";
        vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
 
        qcom,snoc-host-cap-8bit-quirk;
-       qcom,ath10k-calibration-variant = "Thundercomm_DB845C";
+       qcom,calibration-variant = "Thundercomm_DB845C";
 };
 
 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
index 2391f842c9038a3030511a1c9c8edd31bbacf2b0..a98756e8b965fe7aa475271f72c0b73b20fbceaa 100644 (file)
                           <GCC_LPASS_SWAY_CLK>;
 };
 
-&gmu {
-       status = "okay";
-};
-
 &gpu {
        status = "okay";
 
        qcom,dual-dsi-mode;
 
        /* DSI1 is slave, so use DSI0 clocks */
-       assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+       assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
        ports {
                port@1 {
        vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
 
        qcom,snoc-host-cap-8bit-quirk;
-       qcom,ath10k-calibration-variant = "Qualcomm_sdm845mtp";
+       qcom,calibration-variant = "Qualcomm_sdm845mtp";
 };
 
 /* PINCTRL - additions to nodes defined in sdm845.dtsi */
index 46e25c53829ad2cc3572198af6e4abd084bb0bbc..b118d666e535a433f44b66c71b36e55df2ce5c80 100644 (file)
                                <GCC_LPASS_SWAY_CLK>;
 };
 
-&gmu {
-       status = "okay";
-};
-
 &gpu {
        status = "okay";
 
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 
        dai@3 {
-               reg = <3>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA4>;
        };
 
        dai@4 {
-               reg = <4>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA5>;
        };
 
        dai@5 {
-               reg = <5>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA6>;
        };
 };
 
index d37a433130b98f057497be120047cb480b23cf3b..d686531bf4eacae2105bbed3a9d5478b45a4b2a3 100644 (file)
@@ -7,15 +7,38 @@
 
 /dts-v1/;
 
+#include <dt-bindings/input/linux-event-codes.h>
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+#include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
+#include <dt-bindings/sound/qcom,wcd934x.h>
+
 #include "sdm845.dtsi"
+#include "pm8998.dtsi"
+#include "sdm845-wcd9340.dtsi"
+
+/delete-node/ &rmtfs_mem;
+/delete-node/ &spss_mem;
+/delete-node/ &adsp_mem;
+/delete-node/ &slpi_mem;
 
 / {
        chassis-type = "handset";
        model = "Samsung Galaxy S9 SM-G9600";
        compatible = "samsung,starqltechn", "qcom,sdm845";
 
+       battery: battery {
+               compatible = "simple-battery";
+               constant-charge-current-max-microamp = <2150000>;
+               charge-full-design-microamp-hours = <3000000>;
+
+               over-voltage-threshold-microvolt = <4500000>;
+               voltage-min-design-microvolt = <3400000>;
+               voltage-max-design-microvolt = <4350000>;
+       };
+
        chosen {
                #address-cells = <2>;
                #size-cells = <2>;
                        height = <2960>;
                        stride = <(1440 * 4)>;
                        format = "a8r8g8b8";
+                       vci-supply = <&s2dos05_ldo4>;
+                       vddr-supply = <&s2dos05_buck>;
+                       vdd3-supply = <&s2dos05_ldo1>;
                };
        };
 
+       vib_regulator: gpio-regulator {
+               compatible = "regulator-fixed";
+
+               regulator-name = "haptic";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&pm8998_gpios 18 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               regulator-boot-on;
+       };
+
        vph_pwr: vph-pwr-regulator {
                compatible = "regulator-fixed";
                regulator-name = "vph_pwr";
                        ftrace-size = <0x40000>;
                        pmsg-size = <0x40000>;
                };
+
+               /*
+                * It seems like reserving the old rmtfs_mem region is also needed to prevent
+                * random crashes which are most likely modem related, more testing needed.
+                */
+               removed_region: removed-region@88f00000 {
+                       reg = <0 0x88f00000 0 0x1c00000>;
+                       no-map;
+               };
+
+               slpi_mem: slpi@96700000 {
+                       reg = <0 0x96700000 0 0xf00000>;
+                       no-map;
+               };
+
+               spss_mem: spss@97700000 {
+                       reg = <0 0x97700000 0 0x100000>;
+                       no-map;
+               };
+
+               adsp_mem: memory@97800000 {
+                       reg = <0 0x97800000 0 0x2000000>;
+                       no-map;
+               };
+
+               rmtfs_mem: rmtfs-mem@fde00000 {
+                       compatible = "qcom,rmtfs-mem";
+                       reg = <0 0xfde00000 0 0x202000>;
+                       qcom,use-guard-pages;
+                       no-map;
+
+                       qcom,client-id = <1>;
+                       qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
+               };
+       };
+
+       i2c21 {
+               compatible = "i2c-gpio";
+               sda-gpios = <&tlmm 127 GPIO_ACTIVE_HIGH>;
+               scl-gpios = <&tlmm 128 GPIO_ACTIVE_HIGH>;
+               i2c-gpio,delay-us = <2>;
+               pinctrl-0 = <&i2c21_sda_state &i2c21_scl_state>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pmic@60 {
+                       compatible = "samsung,s2dos05";
+                       reg = <0x60>;
+
+                       regulators {
+                               s2dos05_ldo1: ldo1 {
+                                       regulator-active-discharge = <1>;
+                                       regulator-enable-ramp-delay = <12000>;
+                                       regulator-min-microvolt = <1500000>;
+                                       regulator-max-microvolt = <2000000>;
+                                       regulator-name = "ldo1";
+                               };
+
+                               s2dos05_ldo2: ldo2 {
+                                       regulator-active-discharge = <1>;
+                                       regulator-boot-on;
+                                       regulator-enable-ramp-delay = <12000>;
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-name = "ldo2";
+                               };
+
+                               s2dos05_ldo3: ldo3 {
+                                       regulator-active-discharge = <1>;
+                                       regulator-boot-on;
+                                       regulator-enable-ramp-delay = <12000>;
+                                       regulator-min-microvolt = <3000000>;
+                                       regulator-max-microvolt = <3000000>;
+                                       regulator-name = "ldo3";
+                               };
+
+                               s2dos05_ldo4: ldo4 {
+                                       regulator-active-discharge = <1>;
+                                       regulator-enable-ramp-delay = <12000>;
+                                       regulator-min-microvolt = <2700000>;
+                                       regulator-max-microvolt = <3775000>;
+                                       regulator-name = "ldo4";
+                               };
+
+                               s2dos05_buck: buck {
+                                       regulator-active-discharge = <1>;
+                                       regulator-enable-ramp-delay = <12000>;
+                                       regulator-min-microvolt = <850000>;
+                                       regulator-max-microvolt = <2100000>;
+                                       regulator-name = "buck";
+                               };
+                       };
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+
+               key-vol-up {
+                       label = "Volume Up";
+                       gpios = <&pm8998_gpios 6 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       debounce-interval = <15>;
+               };
+
+               key-wink {
+                       label = "Bixby";
+                       gpios = <&pm8998_gpios 19 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_ENTER>;
+                       debounce-interval = <15>;
+               };
+       };
+
+       vib_pwm: pwm {
+               compatible = "clk-pwm";
+               #pwm-cells = <2>;
+               assigned-clock-parents = <&rpmhcc RPMH_CXO_CLK>;
+               assigned-clocks = <&gcc GCC_GP1_CLK_SRC>;
+               clocks = <&gcc GCC_GP1_CLK>;
+               pinctrl-0 = <&motor_pwm_default_state>;
+               pinctrl-1 = <&motor_pwm_suspend_state>;
+               pinctrl-names = "default", "suspend";
+       };
+};
+
+&gpu {
+       status = "okay";
+
+       zap-shader {
+               memory-region = <&gpu_mem>;
+               firmware-name = "qcom/sdm845/starqltechn/a630_zap.mbn";
+       };
+};
+
+&mdss {
+       status = "okay";
+};
+
+&mdss_dsi0 {
+       vdda-supply = <&vreg_l26a_1p2>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "samsung,s6e3ha8";
+               reg = <0>;
+               vci-supply = <&s2dos05_ldo4>;
+               vddr-supply = <&s2dos05_buck>;
+               vdd3-supply = <&s2dos05_ldo1>;
+               te-gpios = <&tlmm 10 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&tlmm 6 GPIO_ACTIVE_HIGH>;
+               pinctrl-0 = <&dsi_default &dsi_te>;
+               pinctrl-1 = <&dsi_suspend &dsi_te>;
+               pinctrl-names = "default", "suspend";
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&mdss_dsi0_out>;
+                       };
+               };
        };
 };
 
+&mdss_dsi0_out {
+       data-lanes = <0 1 2 3>;
+       remote-endpoint = <&panel_in>;
+};
+
+&mdss_dsi0_phy {
+       vdds-supply = <&vdda_mipi_dsi0_pll>;
+       status = "okay";
+};
 
 &apps_rsc {
        regulators-0 {
                vdda_sp_sensor:
                vdda_ufs1_core:
                vdda_ufs2_core:
-               vdda_usb1_ss_core:
-               vdda_usb2_ss_core:
                vreg_l1a_0p875: ldo1 {
                        regulator-min-microvolt = <880000>;
                        regulator-max-microvolt = <880000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
+               vdda_usb1_ss_core:
                vdd_wcss_cx:
                vdd_wcss_mx:
                vdda_wcss_pll:
        status = "okay";
 };
 
+&gpi_dma1 {
+       status = "okay";
+};
+
 &uart9 {
        status = "okay";
 };
 
+&i2c14 {
+       status = "okay";
+
+       pmic@66 {
+               compatible = "maxim,max77705";
+               reg = <0x66>;
+               interrupt-parent = <&pm8998_gpios>;
+               interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&pmic_int_default>;
+               pinctrl-names = "default";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               leds {
+                       compatible = "maxim,max77705-rgb";
+
+                       multi-led {
+                               color = <LED_COLOR_ID_RGB>;
+                               function = LED_FUNCTION_STATUS;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               led@1 {
+                                       reg = <1>;
+                                       color = <LED_COLOR_ID_RED>;
+                               };
+
+                               led@2 {
+                                       reg = <2>;
+                                       color = <LED_COLOR_ID_GREEN>;
+                               };
+
+                               led@3 {
+                                       reg = <3>;
+                                       color = <LED_COLOR_ID_BLUE>;
+                               };
+                       };
+               };
+
+               haptic {
+                       compatible = "maxim,max77705-haptic";
+                       haptic-supply = <&vib_regulator>;
+                       pwms = <&vib_pwm 0 52084>;
+               };
+       };
+
+       max77705_charger: charger@69 {
+               reg = <0x69>;
+               compatible = "maxim,max77705-charger";
+               monitored-battery = <&battery>;
+               interrupt-parent = <&pm8998_gpios>;
+               interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+
+       };
+
+       fuel-gauge@36 {
+               reg = <0x36>;
+               compatible = "maxim,max77705-battery";
+               power-supplies = <&max77705_charger>;
+               maxim,rsns-microohm = <5000>;
+               interrupt-parent = <&pm8998_gpios>;
+               interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
 &ufs_mem_hc {
        reset-gpios = <&tlmm 150 GPIO_ACTIVE_LOW>;
        vcc-supply = <&vreg_l20a_2p95>;
 };
 
 &sdhc_2 {
-       pinctrl-names = "default";
        pinctrl-0 = <&sdc2_clk_state &sdc2_cmd_state &sdc2_data_state &sd_card_det_n_state>;
+       pinctrl-names = "default";
        cd-gpios = <&tlmm 126 GPIO_ACTIVE_LOW>;
        vmmc-supply = <&vreg_l21a_2p95>;
        vqmmc-supply = <&vddpx_2>;
        status = "okay";
 };
 
+&i2c11 {
+       clock-frequency = <400000>;
+       status = "okay";
+
+       touchscreen@48 {
+               compatible = "samsung,s6sy761";
+               reg = <0x48>;
+               interrupt-parent = <&tlmm>;
+               interrupts = <120 IRQ_TYPE_LEVEL_HIGH>;
+               vdd-supply = <&s2dos05_ldo2>;
+               avdd-supply = <&s2dos05_ldo3>;
+
+               pinctrl-0 = <&touch_irq_state>;
+               pinctrl-names = "default";
+       };
+};
+
+&adsp_pas {
+       firmware-name = "qcom/sdm845/starqltechn/adsp.mbn";
+       status = "okay";
+};
+
+&lpasscc {
+       status = "okay";
+};
+
+&sound {
+       compatible = "qcom,sdm845-sndcard";
+       model = "Samsung Galaxy S9";
+       pinctrl-0 = <&quat_mi2s_active &quat_mi2s_sd0_active &quat_mi2s_sd1_active>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       audio-routing = "RX_BIAS", "MCLK",
+                       "AMIC2", "MIC BIAS2",   /* Headset Mic */
+                       "AMIC3", "MIC BIAS2",   /* FM radio left Tx */
+                       "AMIC4", "MIC BIAS2",   /* FM radio right Tx */
+                       "DMIC0", "MCLK",        /* Bottom Mic */
+                       "DMIC0", "MIC BIAS1",
+                       "DMIC2", "MCLK",        /* Top Mic */
+                       "DMIC2", "MIC BIAS3";
+
+       mm1-dai-link {
+               link-name = "MultiMedia1";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA1>;
+               };
+       };
+
+       mm2-dai-link {
+               link-name = "MultiMedia2";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA2>;
+               };
+       };
+
+       mm3-dai-link {
+               link-name = "MultiMedia3";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA3>;
+               };
+       };
+
+       mm4-dai-link {
+               link-name = "MultiMedia4";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA4>;
+               };
+       };
+
+       mm5-dai-link {
+               link-name = "MultiMedia5";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA5>;
+               };
+       };
+
+       mm6-dai-link {
+               link-name = "MultiMedia6";
+
+               cpu {
+                       sound-dai = <&q6asmdai MSM_FRONTEND_DAI_MULTIMEDIA6>;
+               };
+       };
+
+       slim-dai-link {
+               link-name = "SLIM Playback 1";
+
+               codec {
+                       sound-dai = <&wcd9340 AIF1_PB>;
+               };
+
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_0_RX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+       };
+
+       slimcap-dai-link {
+               link-name = "SLIM Capture 1";
+
+               codec {
+                       sound-dai = <&wcd9340 AIF1_CAP>;
+               };
+
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_0_TX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+       };
+
+       slim2-dai-link {
+               link-name = "SLIM Playback 2";
+
+               codec {
+                       sound-dai = <&wcd9340 AIF2_PB>;
+               };
+
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_1_RX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+       };
+
+       slimcap2-dai-link {
+               link-name = "SLIM Capture 2";
+
+               codec {
+                       sound-dai = <&wcd9340 AIF2_CAP>;
+               };
+
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_1_TX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+       };
+
+       slimcap3-dai-link {
+               link-name = "SLIM Capture 3";
+
+               codec {
+                       sound-dai = <&wcd9340 AIF3_CAP>;
+               };
+
+               cpu {
+                       sound-dai = <&q6afedai SLIMBUS_2_TX>;
+               };
+
+               platform {
+                       sound-dai = <&q6routing>;
+               };
+       };
+};
+
+&q6afedai {
+       dai@22 {
+               reg = <22>;
+               qcom,sd-lines = <1>;
+       };
+
+       dai@23 {
+               reg = <23>;
+               qcom,sd-lines = <0>;
+       };
+};
+
+&q6asmdai {
+       dai@0 {
+               reg = <0>;
+       };
+
+       dai@1 {
+               reg = <1>;
+       };
+
+       dai@2 {
+               reg = <2>;
+       };
+
+       dai@3 {
+               reg = <3>;
+       };
+
+       dai@4 {
+               reg = <4>;
+       };
+
+       dai@5 {
+               reg = <5>;
+       };
+};
+
+&wcd9340 {
+       reset-gpios = <&tlmm 64 GPIO_ACTIVE_HIGH>;
+       vdd-buck-supply = <&vreg_s4a_1p8>;
+       vdd-buck-sido-supply = <&vreg_s4a_1p8>;
+       vdd-tx-supply = <&vreg_s4a_1p8>;
+       vdd-rx-supply = <&vreg_s4a_1p8>;
+       vdd-io-supply = <&vreg_s4a_1p8>;
+       qcom,micbias1-microvolt = <1800000>;
+       qcom,micbias2-microvolt = <2700000>;
+       qcom,micbias3-microvolt = <1800000>;
+       qcom,micbias4-microvolt = <1800000>;
+};
+
+&mss_pil {
+       firmware-name = "qcom/sdm845/starqltechn/mba.mbn",
+                       "qcom/sdm845/starqltechn/modem.mbn";
+       status = "okay";
+};
+
+&ipa {
+       qcom,gsi-loader = "self";
+       memory-region = <&ipa_fw_mem>;
+       firmware-name = "qcom/sdm845/starqltechn/ipa_fws.mbn";
+       status = "okay";
+};
+
 &usb_1 {
        status = "okay";
 };
        status = "okay";
 };
 
-&wifi {
-       vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
-       vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
-       vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
-       vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
+&pm8998_resin {
+       linux,code = <KEY_VOLUMEDOWN>;
        status = "okay";
 };
 
+&pm8998_gpios {
+       pmic_int_default: pmic-int-default-state {
+               pins = "gpio11";
+               function = "normal";
+               input-enable;
+               bias-disable;
+               power-source = <0>;
+       };
+};
+
 &tlmm {
-       gpio-reserved-ranges = <0 4>, <27 4>, <81 4>, <85 4>;
+       gpio-reserved-ranges = <27 4>, /* SPI (eSE - embedded Secure Element) */
+                              <85 4>; /* SPI (fingerprint reader) */
+
+       dsi_default: dsi-default-state {
+               pins = "gpio6";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-disable;
+       };
+
+       dsi_suspend: dsi-suspend-state {
+               pins = "gpio6";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       dsi_te: dsi-te-state {
+               pins = "gpio10";
+               function = "mdp_vsync";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
+       i2c21_sda_state: i2c21-sda-state {
+               pins = "gpio127";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       i2c21_scl_state: i2c21-scl-state {
+               pins = "gpio128";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       motor_pwm_default_state: motor-pwm-active-state {
+               pins = "gpio57";
+               function = "gcc_gp1";
+               drive-strength = <2>;
+               bias-disable;
+               output-high;
+       };
+
+       motor_pwm_suspend_state: motor-pwm-suspend-state {
+               pins = "gpio57";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
 
        sdc2_clk_state: sdc2-clk-state {
                pins = "sdc2_clk";
                function = "gpio";
                bias-pull-up;
        };
+
+       touch_irq_state: touch-irq-state {
+               pins = "gpio120";
+               function = "gpio";
+               bias-disable;
+       };
+};
+
+&qup_i2c11_default {
+       drive-strength = <2>;
+       bias-disable;
 };
index ddb82ecb0a929d588950ddc4248b7134a460bde2..2cf7b5e1243caca6a6a0b0beebf52d5f354fe56f 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /*
  * Copyright (c) 2022, Alexander Martinz <amartinz@shiftphones.com>
- * Copyright (c) 2022, Caleb Connolly <caleb@connolly.tech>
+ * Copyright (c) 2022, Casey Connolly <casey.connolly@linaro.org>
  * Copyright (c) 2022, Dylan Van Assche <me@dylanvanassche.be>
  */
 
                           <GCC_LPASS_SWAY_CLK>;
 };
 
-&gmu {
-       status = "okay";
-};
-
 &gpu {
        status = "okay";
 
index b02a1dc5fecd6c0b4bab6888c835a60c4b29d833..a3a304e1ac8737ea2330bfe0ba92008e9fbba6af 100644 (file)
                        <GCC_LPASS_SWAY_CLK>;
 };
 
-&gmu {
-       status = "okay";
-};
-
 &gpi_dma0 {
        status = "okay";
 };
index 617b17b2d7d9dfb686445e02cfc8f97de5b6f7a6..7810b0ce7591ecc29e62116a859dcc6b93185b0c 100644 (file)
                           <GCC_LPASS_SWAY_CLK>;
 };
 
-&gmu {
+&gpi_dma1 {
        status = "okay";
 };
 
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
        status = "okay";
 };
 
+&qupv3_id_1 {
+       status = "okay";
+};
+
 &sdhc_2 {
        status = "okay";
 
                function = "gpio";
                bias-pull-up;
        };
+
+       ts_int_default: ts-int-default-state {
+               pins = "gpio31";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-pull-down;
+               output-disable;
+       };
+
+       ts_reset_default: ts-reset-default-state {
+               pins = "gpio32";
+               function = "gpio";
+               drive-strength = <16>;
+               output-high;
+       };
+
+       ts_int_sleep: ts-int-sleep-state {
+               pins = "gpio31";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-down;
+               output-disable;
+       };
+
+       ts_reset_sleep: ts-reset-sleep-state {
+               pins = "gpio32";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
 };
 
 &uart6 {
index 76931ebad065e0f82d122dd3fe846a64da686ace..2d6f0e382a6cbf18b325127cfaf4859d7d9fd4fc 100644 (file)
        compatible = "ebbg,ft8719";
        status = "okay";
 };
+
+&i2c14 {
+       status = "okay";
+
+       touchscreen@38 {
+               compatible = "focaltech,ft8719";
+               reg = <0x38>;
+
+               interrupts-extended = <&tlmm 31 IRQ_TYPE_EDGE_RISING>;
+               reset-gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+               panel = <&display_panel>;
+
+               iovcc-supply = <&vreg_l14a_1p8>;
+               vcc-supply = <&lab>;
+
+               pinctrl-0 = <&ts_int_default &ts_reset_default>;
+               pinctrl-1 = <&ts_int_sleep &ts_reset_sleep>;
+               pinctrl-names = "default", "sleep";
+
+               touchscreen-size-x = <1080>;
+               touchscreen-size-y = <2246>;
+       };
+};
index e9427851ebaae13389f394c06eaae339a63fcad9..b58964cde834221baf1a7e52c002c8394668dd99 100644 (file)
        compatible = "tianma,fhd-video", "novatek,nt36672a";
        status = "okay";
 };
+
+&i2c14 {
+       status = "okay";
+
+       touchscreen@1 {
+               compatible = "novatek,nt36672a-ts";
+               reg = <0x01>;
+
+               interrupts-extended = <&tlmm 31 IRQ_TYPE_EDGE_RISING>;
+               reset-gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+               panel = <&display_panel>;
+
+               iovcc-supply = <&vreg_l14a_1p8>;
+               vcc-supply = <&lab>;
+
+               pinctrl-0 = <&ts_int_default &ts_reset_default>;
+               pinctrl-1 = <&ts_int_sleep &ts_reset_sleep>;
+               pinctrl-names = "default", "sleep";
+
+               touchscreen-size-x = <1080>;
+               touchscreen-size-y = <2246>;
+       };
+};
index e386b504e978bff5cafd717245f51af2e121d764..63cf879a7a297e161c57ba5256d52c9d6cfe9767 100644 (file)
                                <GCC_LPASS_SWAY_CLK>;
 };
 
-&gmu {
-       status = "okay";
-};
-
 &gpi_dma0 {
        status = "okay";
 };
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
index d0314cdf0b92fd282915e7184f88b52bf309b2c2..3bc8471c658bda987d6fcff3359d63b367148e89 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <dt-bindings/clock/qcom,camcc-sdm845.h>
 #include <dt-bindings/clock/qcom,dispcc-sdm845.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
 #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
 #include <dt-bindings/clock/qcom,lpass-sdm845.h>
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sdm845-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_AXI_CLK>,
                                              "core",
                                              "iface",
                                              "bus";
-                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                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 = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SDM845_CX>;
 
                        operating-points-v2 = <&gmu_opp_table>;
 
-                       status = "disabled";
-
                        gmu_opp_table: opp-table {
                                compatible = "operating-points-v2";
 
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&gcc GCC_DISP_GPLL0_CLK_SRC>,
                                 <&gcc GCC_DISP_GPLL0_DIV_CLK_SRC>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
                        clock-names = "bi_tcxo",
                };
 
                apps_rsc: rsc@179c0000 {
+                       compatible = "qcom,sdm845-rpmh-apps-rsc", "qcom,rpmh-rsc";
                        label = "apps_rsc";
-                       compatible = "qcom,rpmh-rsc";
                        reg = <0 0x179c0000 0 0x10000>,
                              <0 0x179d0000 0 0x10000>,
                              <0 0x179e0000 0 0x10000>;
index f18050848cd8892666015c8182971ff0567747b7..3b28c543fd961c787d7e788995f8fe0e980e3f68 100644 (file)
                           <GCC_LPASS_SWAY_CLK>;
 };
 
-&gmu {
-       status = "okay";
-};
-
 &gpu {
        status = "okay";
        zap-shader {
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
                "RX_BIAS", "MCLK",
                "AMIC2", "MIC BIAS2",
                "SpkrLeft IN", "SPK1 OUT",
-               "SpkrRight IN", "SPK2 OUT",
-               "MM_DL1",  "MultiMedia1 Playback",
-               "MM_DL3",  "MultiMedia3 Playback",
-               "MultiMedia2 Capture", "MM_UL2";
+               "SpkrRight IN", "SPK2 OUT";
 
        mm1-dai-link {
                link-name = "MultiMedia1";
        vdd-3.3-ch1-supply = <&vreg_l23a_3p3>;
 
        qcom,snoc-host-cap-8bit-quirk;
-       qcom,ath10k-calibration-variant = "Lenovo_C630";
+       qcom,calibration-variant = "Lenovo_C630";
 };
 
 &crypto {
index 26217836c2707ba2f7b0030c9801d7de3a797315..a676d3ea01b997ec9663199fe04a230aefa555b5 100644 (file)
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 
        dai@1 {
-               reg = <1>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
        };
 
        dai@2 {
-               reg = <2>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
        };
 };
 
                "RX_BIAS", "MCLK",
                "AMIC2", "MIC BIAS2",
                "SpkrLeft IN", "SPK1 OUT",
-               "SpkrRight IN", "SPK2 OUT",
-               "MM_DL1",  "MultiMedia1 Playback",
-               "MM_DL3",  "MultiMedia3 Playback",
-               "MultiMedia2 Capture", "MM_UL2";
+               "SpkrRight IN", "SPK2 OUT";
 
        mm1-dai-link {
                link-name = "MultiMedia1";
index f1bbe7ab01ab0be466b971727f7737a866dc89d7..06cacec3461f13f1c1b9619cfdee275d21f84e06 100644 (file)
        vdd3-supply = <&vreg_l10b_3p08>;
 };
 
+&qpic_bam {
+       status = "okay";
+};
+
+&qpic_nand {
+       status = "okay";
+
+       nand@0 {
+               reg = <0>;
+
+               nand-ecc-strength = <8>;
+               nand-ecc-step-size = <512>;
+               nand-bus-width = <8>;
+               /* efs2 partition is secured */
+               secure-regions = /bits/ 64 <0x680000 0xb00000>;
+       };
+};
+
 &qupv3_id_0 {
        status = "okay";
 };
index b0a8a0fe5f39ffcd0da1f9fd9f4f5564412f76ec..75bfc19f412c8f8b6c10aa858004dd3ddef86672 100644 (file)
                        qcom,bcm-voters = <&apps_bcm_voter>;
                };
 
+               qpic_bam: dma-controller@1c9c000 {
+                       compatible = "qcom,bam-v1.7.0";
+                       reg = <0x0 0x01c9c000 0x0 0x1c000>;
+                       interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&rpmhcc RPMH_QPIC_CLK>;
+                       clock-names = "bam_clk";
+                       #dma-cells = <1>;
+                       qcom,ee = <0>;
+                       qcom,controlled-remotely;
+                       iommus = <&apps_smmu 0x100 0x3>;
+                       dma-coherent;
+                       status = "disabled";
+               };
+
+               qpic_nand: nand-controller@1cc8000 {
+                       compatible = "qcom,sdx75-nand", "qcom,sdx55-nand";
+                       reg = <0x0 0x01cc8000 0x0 0x10000>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&rpmhcc RPMH_QPIC_CLK>,
+                                <&sleep_clk>;
+                       clock-names = "core",
+                                     "aon";
+                       dmas = <&qpic_bam 0>,
+                              <&qpic_bam 1>,
+                              <&qpic_bam 2>;
+                       dma-names = "tx",
+                                   "rx",
+                                   "cmd";
+                       iommus = <&apps_smmu 0x100 0x3>;
+                       status = "disabled";
+               };
+
                tcsr_mutex: hwlock@1f40000 {
                        compatible = "qcom,tcsr-mutex";
                        reg = <0x0 0x01f40000 0x0 0x40000>;
                                          <&gcc GCC_USB30_MASTER_CLK>;
                        assigned-clock-rates = <19200000>, <200000000>;
 
-                       interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
-                                             <&pdc 17 IRQ_TYPE_LEVEL_HIGH>,
+                       interrupts-extended = <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
+                                             <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
                                              <&pdc 9 IRQ_TYPE_EDGE_RISING>,
-                                             <&pdc 10 IRQ_TYPE_EDGE_RISING>;
-                       interrupt-names = "hs_phy_irq",
-                                         "ss_phy_irq",
+                                             <&pdc 10 IRQ_TYPE_EDGE_RISING>,
+                                             <&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "pwr_event",
+                                         "hs_phy_irq",
                                          "dm_hs_phy_irq",
-                                         "dp_hs_phy_irq";
+                                         "dp_hs_phy_irq",
+                                         "ss_phy_irq";
 
                        power-domains = <&gcc GCC_USB30_GDSC>;
 
                        interrupt-controller;
                };
 
-               aoss_qmp: power-controller@c310000 {
+               aoss_qmp: power-management@c310000 {
                        compatible = "qcom,sdx75-aoss-qmp", "qcom,aoss-qmp";
                        reg = <0 0x0c310000 0 0x1000>;
                        interrupt-parent = <&ipcc>;
index 27453771aa68a1c4dbd2a986af6785fa05db147d..d217d922811e84420f0f31008e939337b07bc38b 100644 (file)
@@ -10,6 +10,8 @@
 #include <dt-bindings/clock/qcom,sm4450-gpucc.h>
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/power/qcom,rpmhpd.h>
+#include <dt-bindings/power/qcom-rpmpd.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 
 / {
                                clocks = <&xo_board>;
                                clock-names = "xo";
                        };
+
+                       rpmhpd: power-controller {
+                               compatible = "qcom,sm4450-rpmhpd";
+                               #power-domain-cells = <1>;
+                               operating-points-v2 = <&rpmhpd_opp_table>;
+
+                               rpmhpd_opp_table: opp-table {
+                                       compatible = "operating-points-v2";
+
+                                       rpmhpd_opp_ret: opp-16 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>;
+                                       };
+
+                                       rpmhpd_opp_min_svs: opp-48 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
+                                       };
+
+                                       rpmhpd_opp_low_svs_d1: opp-56 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
+                                       };
+
+                                       rpmhpd_opp_low_svs: opp-64 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
+                                       };
+
+                                       rpmhpd_opp_low_svs_l1: opp-80 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L1>;
+                                       };
+
+                                       rpmhpd_opp_low_svs_l2: opp-96 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS_L2>;
+                                       };
+
+                                       rpmhpd_opp_svs: opp-128 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
+                                       };
+
+                                       rpmhpd_opp_svs_l1: opp-192 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
+                                       };
+
+                                       rpmhpd_opp_svs_l2: opp-224 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
+                                       };
+
+                                       rpmhpd_opp_nom: opp-256 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
+                                       };
+
+                                       rpmhpd_opp_nom_l1: opp-320 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
+                                       };
+
+                                       rpmhpd_opp_nom_l2: opp-336 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>;
+                                       };
+
+                                       rpmhpd_opp_turbo: opp-384 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
+                                       };
+
+                                       rpmhpd_opp_turbo_l1: opp-416 {
+                                               opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
+                                       };
+                               };
+                       };
                };
 
                cpufreq_hw: cpufreq@17d91000 {
index f60d36c03b9b51d1ba5fb2db7d619916fe42f084..ad347ccd19755b20db8e0de6852148c76010e697 100644 (file)
        vdd-1.3-rfa-supply = <&pm6125_l17a>;
        vdd-3.3-ch0-supply = <&pm6125_l23a>;
 
-       qcom,ath10k-calibration-variant = "Fxtec_QX1050";
+       qcom,calibration-variant = "Fxtec_QX1050";
 
        status = "okay";
 };
index 94c081bf7a892654e684ad806621a14dfd4407ab..c8865779173eca65f9e94535b5339f590d4b1410 100644 (file)
@@ -3,6 +3,7 @@
  * Copyright (c) 2021, Iskren Chernev <iskren.chernev@gmail.com>
  */
 
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sm6115.h>
 #include <dt-bindings/clock/qcom,sm6115-dispcc.h>
 #include <dt-bindings/clock/qcom,sm6115-gpucc.h>
                        mdp: display-controller@5e01000 {
                                compatible = "qcom,sm6115-dpu";
                                reg = <0x0 0x05e01000 0x0 0x8f000>,
-                                     <0x0 0x05eb0000 0x0 0x2008>;
+                                     <0x0 0x05eb0000 0x0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmpd SM6115_VDDCX>;
                        reg = <0x0 0x05f00000 0 0x20000>;
                        clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
                                 <&sleep_clk>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
                                 <&gcc GCC_DISP_GPLL0_DIV_CLK_SRC>;
                        #clock-cells = <1>;
                        #reset-cells = <1>;
index 9d78bb3f71901705fd22d88b472f6fc1d0c0fffb..c17545111f49a8388d8d5802ea5c3ff3c8a6cb45 100644 (file)
        vdd-1.8-xo-supply = <&pm6125_l16>;
        vdd-1.3-rfa-supply = <&pm6125_l17>;
        vdd-3.3-ch0-supply = <&pm6125_l23>;
-       qcom,ath10k-calibration-variant = "Lenovo_P11";
+       qcom,calibration-variant = "Lenovo_P11";
        status = "okay";
 };
 
diff --git a/src/arm64/qcom/sm6125-xiaomi-ginkgo.dts b/src/arm64/qcom/sm6125-xiaomi-ginkgo.dts
new file mode 100644 (file)
index 0000000..68a2372
--- /dev/null
@@ -0,0 +1,295 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025, Gabriel Gonzales <semfault@disroot.org>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/arm/qcom,ids.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include "sm6125.dtsi"
+#include "pm6125.dtsi"
+
+/ {
+       model = "Xiaomi Redmi Note 8";
+       compatible = "xiaomi,ginkgo", "qcom,sm6125";
+       chassis-type = "handset";
+
+       /* required for bootloader to select correct board */
+       qcom,msm-id = <QCOM_ID_SM6125>;
+       qcom,board-id = <22 0>;
+
+       chosen {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               framebuffer0: framebuffer@5c000000 {
+                       compatible = "simple-framebuffer";
+                       reg = <0 0x5c000000 0 (2340 * 1080 * 4)>;
+                       width = <1080>;
+                       height = <2340>;
+                       stride = <(1080 * 4)>;
+                       format = "a8r8g8b8";
+               };
+       };
+
+       reserved-memory {
+               debug_mem: debug@ffb00000 {
+                       reg = <0x0 0xffb00000 0x0 0xc0000>;
+                       no-map;
+               };
+
+               last_log_mem: lastlog@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>;
+                       pmsg-size = <0x20000>;
+               };
+
+               cmdline_mem: memory@ffd00000 {
+                       reg = <0x0 0xffd40000 0x0 0x1000>;
+                       no-map;
+               };
+       };
+
+       extcon_usb: extcon-usb {
+               compatible = "linux,extcon-usb-gpio";
+               id-gpios = <&tlmm 102 GPIO_ACTIVE_HIGH>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&vol_up_n>;
+               pinctrl-names = "default";
+
+               key-volume-up {
+                       label = "Volume Up";
+                       gpios = <&pm6125_gpios 6 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       debounce-interval = <15>;
+                       linux,can-disable;
+                       wakeup-source;
+               };
+       };
+};
+
+&pm6125_gpios {
+       vol_up_n: vol-up-n-state {
+               pins = "gpio6";
+               function = "normal";
+               power-source = <1>;
+               bias-pull-up;
+               input-enable;
+       };
+};
+
+&hsusb_phy1 {
+       vdd-supply = <&vreg_l7a>;
+       vdda-pll-supply = <&vreg_l10a>;
+       vdda-phy-dpdm-supply = <&vreg_l15a>;
+       status = "okay";
+};
+
+&pon_pwrkey {
+       status = "okay";
+};
+
+&pon_resin {
+       linux,code = <KEY_VOLUMEDOWN>;
+       status = "okay";
+};
+
+&rpm_requests {
+       regulators-0 {
+               compatible = "qcom,rpm-pm6125-regulators";
+
+               vreg_s6a: s6 {
+                       regulator-min-microvolt = <936000>;
+                       regulator-max-microvolt = <1422000>;
+               };
+
+               vreg_l1a: l1 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1256000>;
+               };
+
+               vreg_l2a: l2 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1056000>;
+               };
+
+               vreg_l3a: l3 {
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1064000>;
+               };
+
+               vreg_l4a: l4 {
+                       regulator-min-microvolt = <872000>;
+                       regulator-max-microvolt = <976000>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l5a: l5 {
+                       regulator-min-microvolt = <1648000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l6a: l6 {
+                       regulator-min-microvolt = <576000>;
+                       regulator-max-microvolt = <656000>;
+               };
+
+               vreg_l7a: l7 {
+                       regulator-min-microvolt = <872000>;
+                       regulator-max-microvolt = <976000>;
+               };
+
+               vreg_l8a: l8 {
+                       regulator-min-microvolt = <400000>;
+                       regulator-max-microvolt = <728000>;
+               };
+
+               vreg_l9a: l9 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1896000>;
+               };
+
+               vreg_l10a: l10 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1896000>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l11a: l11 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1952000>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l12a: l12 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1996000>;
+               };
+
+               vreg_l13a: l13 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1832000>;
+               };
+
+               vreg_l14a: l14 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1904000>;
+               };
+
+               vreg_l15a: l15 {
+                       regulator-min-microvolt = <3104000>;
+                       regulator-max-microvolt = <3232000>;
+               };
+
+               vreg_l16a: l16 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1904000>;
+               };
+
+               vreg_l17a: l17 {
+                       regulator-min-microvolt = <1248000>;
+                       regulator-max-microvolt = <1304000>;
+               };
+
+               vreg_l18a: l18 {
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1264000>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l19a: l19 {
+                       regulator-min-microvolt = <1648000>;
+                       regulator-max-microvolt = <2952000>;
+               };
+
+               vreg_l20a: l20 {
+                       regulator-min-microvolt = <1648000>;
+                       regulator-max-microvolt = <2952000>;
+               };
+
+               vreg_l21a: l21 {
+                       regulator-min-microvolt = <2600000>;
+                       regulator-max-microvolt = <2856000>;
+               };
+
+               vreg_l22a: l22 {
+                       regulator-min-microvolt = <2944000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-allow-set-load;
+               };
+
+               vreg_l23a: l23 {
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3400000>;
+               };
+
+               vreg_l24a: l24 {
+                       regulator-min-microvolt = <2944000>;
+                       regulator-max-microvolt = <2950000>;
+                       regulator-allow-set-load;
+               };
+
+       };
+};
+
+&sdc2_off_state {
+       sd-cd-pins {
+               pins = "gpio98";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+};
+
+&sdc2_on_state {
+       sd-cd-pins {
+               pins = "gpio98";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+       };
+};
+
+&sdhc_1 {
+       vmmc-supply = <&vreg_l24a>;
+       vqmmc-supply = <&vreg_l11a>;
+       status = "okay";
+};
+
+&sdhc_2 {
+       cd-gpios = <&tlmm 98 GPIO_ACTIVE_HIGH>;
+       vmmc-supply = <&vreg_l22a>;
+       vqmmc-supply = <&vreg_l5a>;
+       no-sdio;
+       no-mmc;
+       status = "okay";
+};
+
+&tlmm {
+       gpio-reserved-ranges = <22 2>, <28 6>;
+};
+
+&usb3 {
+       status = "okay";
+};
+
+&usb3_dwc3 {
+       extcon = <&extcon_usb>;
+};
index 350d807a622fd9276e1f12ef7f5bebab50aea15e..8f2d65543373e70b48b4015478e21e8e74fd23c9 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include <dt-bindings/clock/qcom,dispcc-sm6125.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sm6125.h>
 #include <dt-bindings/clock/qcom,rpmcc.h>
 #include <dt-bindings/dma/qcom-gpi.h>
                        mdss_mdp: display-controller@5e01000 {
                                compatible = "qcom,sm6125-dpu";
                                reg = <0x05e01000 0x83208>,
-                                     <0x05eb0000 0x2008>;
+                                     <0x05eb0000 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                interrupt-parent = <&mdss>;
                                              "bus";
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmpd SM6125_VDDCX>;
                        reg = <0x05f00000 0x20000>;
 
                        clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
                                 <0>,
                                 <0>,
                                 <0>,
index bf23033a294e3f6e5f248d1d8114e52a70d17094..8848043f95f29966127f4ed3d47e8216f4fa3183 100644 (file)
 };
 
 &usb_1_hsphy {
+       vdd-supply = <&pm6350_l18>;
+       vdda-phy-dpdm-supply = <&pm6350_l3>;
+       vdda-pll-supply = <&pm6350_l2>;
+
        status = "okay";
 };
 
 &usb_1_qmpphy {
+       vdda-phy-supply = <&pm6350_l16>;
+       vdda-pll-supply = <&pm6350_l22>;
+
        status = "okay";
 };
index 00ad1d09a19558d9e2bc61f1a81a36d466adc88e..f80b21d28a929619fc91b4e9d659acce40a0957b 100644 (file)
@@ -5,6 +5,7 @@
  */
 
 #include <dt-bindings/clock/qcom,dispcc-sm6350.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sm6350.h>
 #include <dt-bindings/clock/qcom,gpucc-sm6350.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
                ranges;
 
                hyp_mem: memory@80000000 {
-                       reg = <0 0x80000000 0 0x600000>;
+                       reg = <0x0 0x80000000 0x0 0x600000>;
                        no-map;
                };
 
                xbl_aop_mem: memory@80700000 {
-                       reg = <0 0x80700000 0 0x160000>;
+                       reg = <0x0 0x80700000 0x0 0x160000>;
                        no-map;
                };
 
                cmd_db: memory@80860000 {
                        compatible = "qcom,cmd-db";
-                       reg = <0 0x80860000 0 0x20000>;
+                       reg = <0x0 0x80860000 0x0 0x20000>;
                        no-map;
                };
 
                sec_apps_mem: memory@808ff000 {
-                       reg = <0 0x808ff000 0 0x1000>;
+                       reg = <0x0 0x808ff000 0x0 0x1000>;
                        no-map;
                };
 
                smem_mem: memory@80900000 {
-                       reg = <0 0x80900000 0 0x200000>;
+                       reg = <0x0 0x80900000 0x0 0x200000>;
                        no-map;
                };
 
                cdsp_sec_mem: memory@80b00000 {
-                       reg = <0 0x80b00000 0 0x1e00000>;
+                       reg = <0x0 0x80b00000 0x0 0x1e00000>;
                        no-map;
                };
 
                pil_camera_mem: memory@86000000 {
-                       reg = <0 0x86000000 0 0x500000>;
+                       reg = <0x0 0x86000000 0x0 0x500000>;
                        no-map;
                };
 
                pil_npu_mem: memory@86500000 {
-                       reg = <0 0x86500000 0 0x500000>;
+                       reg = <0x0 0x86500000 0x0 0x500000>;
                        no-map;
                };
 
                pil_video_mem: memory@86a00000 {
-                       reg = <0 0x86a00000 0 0x500000>;
+                       reg = <0x0 0x86a00000 0x0 0x500000>;
                        no-map;
                };
 
                pil_cdsp_mem: memory@86f00000 {
-                       reg = <0 0x86f00000 0 0x1e00000>;
+                       reg = <0x0 0x86f00000 0x0 0x1e00000>;
                        no-map;
                };
 
                pil_adsp_mem: memory@88d00000 {
-                       reg = <0 0x88d00000 0 0x2800000>;
+                       reg = <0x0 0x88d00000 0x0 0x2800000>;
                        no-map;
                };
 
                wlan_fw_mem: memory@8b500000 {
-                       reg = <0 0x8b500000 0 0x200000>;
+                       reg = <0x0 0x8b500000 0x0 0x200000>;
                        no-map;
                };
 
                pil_ipa_fw_mem: memory@8b700000 {
-                       reg = <0 0x8b700000 0 0x10000>;
+                       reg = <0x0 0x8b700000 0x0 0x10000>;
                        no-map;
                };
 
                pil_ipa_gsi_mem: memory@8b710000 {
-                       reg = <0 0x8b710000 0 0x5400>;
+                       reg = <0x0 0x8b710000 0x0 0x5400>;
                        no-map;
                };
 
                pil_modem_mem: memory@8b800000 {
-                       reg = <0 0x8b800000 0 0xf800000>;
+                       reg = <0x0 0x8b800000 0x0 0xf800000>;
                        no-map;
                };
 
                cont_splash_memory: memory@a0000000 {
-                       reg = <0 0xa0000000 0 0x2300000>;
+                       reg = <0x0 0xa0000000 0x0 0x2300000>;
                        no-map;
                };
 
                dfps_data_memory: memory@a2300000 {
-                       reg = <0 0xa2300000 0 0x100000>;
+                       reg = <0x0 0xa2300000 0x0 0x100000>;
                        no-map;
                };
 
                removed_region: memory@c0000000 {
-                       reg = <0 0xc0000000 0 0x3900000>;
+                       reg = <0x0 0xc0000000 0x0 0x3900000>;
                        no-map;
                };
 
                pil_gpu_mem: memory@f0d00000 {
-                       reg = <0 0xf0d00000 0 0x1000>;
+                       reg = <0x0 0xf0d00000 0x0 0x1000>;
                        no-map;
                };
 
                debug_region: memory@ffb00000 {
-                       reg = <0 0xffb00000 0 0xc0000>;
+                       reg = <0x0 0xffb00000 0x0 0xc0000>;
                        no-map;
                };
 
                last_log_region: memory@ffbc0000 {
-                       reg = <0 0xffbc0000 0 0x40000>;
+                       reg = <0x0 0xffbc0000 0x0 0x40000>;
                        no-map;
                };
 
                ramoops: ramoops@ffc00000 {
                        compatible = "ramoops";
-                       reg = <0 0xffc00000 0 0x100000>;
+                       reg = <0x0 0xffc00000 0x0 0x100000>;
                        record-size = <0x1000>;
                        console-size = <0x40000>;
                        pmsg-size = <0x20000>;
                };
 
                cmdline_region: memory@ffd00000 {
-                       reg = <0 0xffd00000 0 0x1000>;
+                       reg = <0x0 0xffd00000 0x0 0x1000>;
                        no-map;
                };
        };
 
                gcc: clock-controller@100000 {
                        compatible = "qcom,gcc-sm6350";
-                       reg = <0 0x00100000 0 0x1f0000>;
+                       reg = <0x0 0x00100000 0x0 0x1f0000>;
                        #clock-cells = <1>;
                        #reset-cells = <1>;
                        #power-domain-cells = <1>;
 
                ipcc: mailbox@408000 {
                        compatible = "qcom,sm6350-ipcc", "qcom,ipcc";
-                       reg = <0 0x00408000 0 0x1000>;
+                       reg = <0x0 0x00408000 0x0 0x1000>;
                        interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-controller;
                        #interrupt-cells = <3>;
 
                qfprom: qfprom@784000 {
                        compatible = "qcom,sm6350-qfprom", "qcom,qfprom";
-                       reg = <0 0x00784000 0 0x3000>;
+                       reg = <0x0 0x00784000 0x0 0x3000>;
                        #address-cells = <1>;
                        #size-cells = <1>;
 
 
                rng: rng@793000 {
                        compatible = "qcom,prng-ee";
-                       reg = <0 0x00793000 0 0x1000>;
+                       reg = <0x0 0x00793000 0x0 0x1000>;
                        clocks = <&gcc GCC_PRNG_AHB_CLK>;
                        clock-names = "core";
                };
 
                sdhc_1: mmc@7c4000 {
                        compatible = "qcom,sm6350-sdhci", "qcom,sdhci-msm-v5";
-                       reg = <0 0x007c4000 0 0x1000>,
-                               <0 0x007c5000 0 0x1000>,
-                               <0 0x007c8000 0 0x8000>;
+                       reg = <0x0 0x007c4000 0x0 0x1000>,
+                             <0x0 0x007c5000 0x0 0x1000>,
+                             <0x0 0x007c8000 0x0 0x8000>;
                        reg-names = "hc", "cqhci", "ice";
 
                        interrupts = <GIC_SPI 641 IRQ_TYPE_LEVEL_HIGH>,
 
                gpi_dma0: dma-controller@800000 {
                        compatible = "qcom,sm6350-gpi-dma";
-                       reg = <0 0x00800000 0 0x60000>;
+                       reg = <0x0 0x00800000 0x0 0x60000>;
                        interrupts = <GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>,
 
                        i2c0: i2c@880000 {
                                compatible = "qcom,geni-i2c";
-                               reg = <0 0x00880000 0 0x4000>;
+                               reg = <0x0 0x00880000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
                                pinctrl-names = "default";
 
                        uart1: serial@884000 {
                                compatible = "qcom,geni-uart";
-                               reg = <0 0x00884000 0 0x4000>;
+                               reg = <0x0 0x00884000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S1_CLK>;
                                pinctrl-names = "default";
 
                        i2c2: i2c@888000 {
                                compatible = "qcom,geni-i2c";
-                               reg = <0 0x00888000 0 0x4000>;
+                               reg = <0x0 0x00888000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
                                pinctrl-names = "default";
 
                gpi_dma1: dma-controller@900000 {
                        compatible = "qcom,sm6350-gpi-dma";
-                       reg = <0 0x00900000 0 0x60000>;
+                       reg = <0x0 0x00900000 0x0 0x60000>;
                        interrupts = <GIC_SPI 645 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 646 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 647 IRQ_TYPE_LEVEL_HIGH>,
 
                        i2c6: i2c@980000 {
                                compatible = "qcom,geni-i2c";
-                               reg = <0 0x00980000 0 0x4000>;
+                               reg = <0x0 0x00980000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
                                pinctrl-names = "default";
 
                        i2c7: i2c@984000 {
                                compatible = "qcom,geni-i2c";
-                               reg = <0 0x00984000 0 0x4000>;
+                               reg = <0x0 0x00984000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
                                pinctrl-names = "default";
 
                        i2c8: i2c@988000 {
                                compatible = "qcom,geni-i2c";
-                               reg = <0 0x00988000 0 0x4000>;
+                               reg = <0x0 0x00988000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
                                pinctrl-names = "default";
 
                        uart9: serial@98c000 {
                                compatible = "qcom,geni-debug-uart";
-                               reg = <0 0x0098c000 0 0x4000>;
+                               reg = <0x0 0x0098c000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
                                pinctrl-names = "default";
 
                        i2c10: i2c@990000 {
                                compatible = "qcom,geni-i2c";
-                               reg = <0 0x00990000 0 0x4000>;
+                               reg = <0x0 0x00990000 0x0 0x4000>;
                                clock-names = "se";
                                clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
                                pinctrl-names = "default";
 
                config_noc: interconnect@1500000 {
                        compatible = "qcom,sm6350-config-noc";
-                       reg = <0 0x01500000 0 0x28000>;
+                       reg = <0x0 0x01500000 0x0 0x28000>;
                        #interconnect-cells = <2>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
                };
 
                system_noc: interconnect@1620000 {
                        compatible = "qcom,sm6350-system-noc";
-                       reg = <0 0x01620000 0 0x17080>;
+                       reg = <0x0 0x01620000 0x0 0x17080>;
                        #interconnect-cells = <2>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
 
 
                aggre1_noc: interconnect@16e0000 {
                        compatible = "qcom,sm6350-aggre1-noc";
-                       reg = <0 0x016e0000 0 0x15080>;
+                       reg = <0x0 0x016e0000 0x0 0x15080>;
                        #interconnect-cells = <2>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
                };
 
                aggre2_noc: interconnect@1700000 {
                        compatible = "qcom,sm6350-aggre2-noc";
-                       reg = <0 0x01700000 0 0x1f880>;
+                       reg = <0x0 0x01700000 0x0 0x1f880>;
                        #interconnect-cells = <2>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
 
 
                mmss_noc: interconnect@1740000 {
                        compatible = "qcom,sm6350-mmss-noc";
-                       reg = <0 0x01740000 0 0x1c100>;
+                       reg = <0x0 0x01740000 0x0 0x1c100>;
                        #interconnect-cells = <2>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
                };
                ufs_mem_hc: ufshc@1d84000 {
                        compatible = "qcom,sm6350-ufshc", "qcom,ufshc",
                                     "jedec,ufs-2.0";
-                       reg = <0 0x01d84000 0 0x3000>,
-                             <0 0x01d90000 0 0x8000>;
+                       reg = <0x0 0x01d84000 0x0 0x3000>,
+                             <0x0 0x01d90000 0x0 0x8000>;
                        reg-names = "std", "ice";
                        interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
                        phys = <&ufs_mem_phy>;
 
                ufs_mem_phy: phy@1d87000 {
                        compatible = "qcom,sm6350-qmp-ufs-phy";
-                       reg = <0 0x01d87000 0 0x1000>;
+                       reg = <0x0 0x01d87000 0x0 0x1000>;
 
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&gcc GCC_UFS_PHY_PHY_AUX_CLK>,
 
                cryptobam: dma-controller@1dc4000 {
                        compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0";
-                       reg = <0 0x01dc4000 0 0x24000>;
+                       reg = <0x0 0x01dc4000 0x0 0x24000>;
                        interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
                        #dma-cells = <1>;
                        qcom,ee = <0>;
 
                crypto: crypto@1dfa000 {
                        compatible = "qcom,sm6350-qce", "qcom,sm8150-qce", "qcom,qce";
-                       reg = <0 0x01dfa000 0 0x6000>;
+                       reg = <0x0 0x01dfa000 0x0 0x6000>;
                        dmas = <&cryptobam 4>, <&cryptobam 5>;
                        dma-names = "rx", "tx";
                        iommus = <&apps_smmu 0x426 0x11>,
 
                        iommus = <&apps_smmu 0x440 0x0>,
                                 <&apps_smmu 0x442 0x0>;
-                       reg = <0 0x01e40000 0 0x8000>,
-                             <0 0x01e50000 0 0x3000>,
-                             <0 0x01e04000 0 0x23000>;
+                       reg = <0x0 0x01e40000 0x0 0x8000>,
+                             <0x0 0x01e50000 0x0 0x3000>,
+                             <0x0 0x01e04000 0x0 0x23000>;
                        reg-names = "ipa-reg",
                                    "ipa-shared",
                                    "gsi";
 
                gpu: gpu@3d00000 {
                        compatible = "qcom,adreno-619.0", "qcom,adreno";
-                       reg = <0 0x03d00000 0 0x40000>,
-                             <0 0x03d9e000 0 0x1000>;
+                       reg = <0x0 0x03d00000 0x0 0x40000>,
+                             <0x0 0x03d9e000 0x0 0x1000>;
                        reg-names = "kgsl_3d0_reg_memory",
                                    "cx_mem";
                        interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
 
                adreno_smmu: iommu@3d40000 {
                        compatible = "qcom,sm6350-smmu-v2", "qcom,adreno-smmu", "qcom,smmu-v2";
-                       reg = <0 0x03d40000 0 0x10000>;
+                       reg = <0x0 0x03d40000 0x0 0x10000>;
                        #iommu-cells = <1>;
                        #global-interrupts = <2>;
                        interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
 
                gmu: gmu@3d6a000 {
                        compatible = "qcom,adreno-gmu-619.0", "qcom,adreno-gmu";
-                       reg = <0 0x03d6a000 0 0x31000>,
-                             <0 0x0b290000 0 0x10000>,
-                             <0 0x0b490000 0 0x10000>;
+                       reg = <0x0 0x03d6a000 0x0 0x31000>,
+                             <0x0 0x0b290000 0x0 0x10000>,
+                             <0x0 0x0b490000 0x0 0x10000>;
                        reg-names = "gmu",
                                    "gmu_pdc",
                                    "gmu_pdc_seq";
 
                gpucc: clock-controller@3d90000 {
                        compatible = "qcom,sm6350-gpucc";
-                       reg = <0 0x03d90000 0 0x9000>;
+                       reg = <0x0 0x03d90000 0x0 0x9000>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&gcc GCC_GPU_GPLL0_CLK>,
                                 <&gcc GCC_GPU_GPLL0_DIV_CLK>;
 
                cdsp: remoteproc@8300000 {
                        compatible = "qcom,sm6350-cdsp-pas";
-                       reg = <0 0x08300000 0 0x10000>;
+                       reg = <0x0 0x08300000 0x0 0x10000>;
 
                        interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
 
                sdhc_2: mmc@8804000 {
                        compatible = "qcom,sm6350-sdhci", "qcom,sdhci-msm-v5";
-                       reg = <0 0x08804000 0 0x1000>;
+                       reg = <0x0 0x08804000 0x0 0x1000>;
 
                        interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
 
                usb_1_hsphy: phy@88e3000 {
                        compatible = "qcom,sm6350-qusb2-phy", "qcom,qusb2-v2-phy";
-                       reg = <0 0x088e3000 0 0x400>;
+                       reg = <0x0 0x088e3000 0x0 0x400>;
                        status = "disabled";
                        #phy-cells = <0>;
 
 
                usb_1_qmpphy: phy@88e8000 {
                        compatible = "qcom,sm6350-qmp-usb3-dp-phy";
-                       reg = <0 0x088e8000 0 0x3000>;
+                       reg = <0x0 0x088e8000 0x0 0x3000>;
 
                        clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
                                 <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
 
                dc_noc: interconnect@9160000 {
                        compatible = "qcom,sm6350-dc-noc";
-                       reg = <0 0x09160000 0 0x3200>;
+                       reg = <0x0 0x09160000 0x0 0x3200>;
                        #interconnect-cells = <2>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
                };
 
                system-cache-controller@9200000 {
                        compatible = "qcom,sm6350-llcc";
-                       reg = <0 0x09200000 0 0x50000>, <0 0x09600000 0 0x50000>;
+                       reg = <0x0 0x09200000 0x0 0x50000>, <0x0 0x09600000 0x0 0x50000>;
                        reg-names = "llcc0_base", "llcc_broadcast_base";
                };
 
                gem_noc: interconnect@9680000 {
                        compatible = "qcom,sm6350-gem-noc";
-                       reg = <0 0x09680000 0 0x3e200>;
+                       reg = <0x0 0x09680000 0x0 0x3e200>;
                        #interconnect-cells = <2>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
                };
 
                npu_noc: interconnect@9990000 {
                        compatible = "qcom,sm6350-npu-noc";
-                       reg = <0 0x09990000 0 0x1600>;
+                       reg = <0x0 0x09990000 0x0 0x1600>;
                        #interconnect-cells = <2>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
                };
 
                usb_1: usb@a6f8800 {
                        compatible = "qcom,sm6350-dwc3", "qcom,dwc3";
-                       reg = <0 0x0a6f8800 0 0x400>;
+                       reg = <0x0 0x0a6f8800 0x0 0x400>;
                        status = "disabled";
                        #address-cells = <2>;
                        #size-cells = <2>;
 
                        usb_1_dwc3: usb@a600000 {
                                compatible = "snps,dwc3";
-                               reg = <0 0x0a600000 0 0xcd00>;
+                               reg = <0x0 0x0a600000 0x0 0xcd00>;
                                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
                                iommus = <&apps_smmu 0x540 0x0>;
                                snps,dis_u2_susphy_quirk;
 
                cci0: cci@ac4a000 {
                        compatible = "qcom,sm6350-cci", "qcom,msm8996-cci";
-                       reg = <0 0x0ac4a000 0 0x1000>;
+                       reg = <0x0 0x0ac4a000 0x0 0x1000>;
                        interrupts = <GIC_SPI 468 IRQ_TYPE_EDGE_RISING>;
                        power-domains = <&camcc TITAN_TOP_GDSC>;
 
 
                cci1: cci@ac4b000 {
                        compatible = "qcom,sm6350-cci", "qcom,msm8996-cci";
-                       reg = <0 0x0ac4b000 0 0x1000>;
+                       reg = <0x0 0x0ac4b000 0x0 0x1000>;
                        interrupts = <GIC_SPI 462 IRQ_TYPE_EDGE_RISING>;
                        power-domains = <&camcc TITAN_TOP_GDSC>;
 
 
                camcc: clock-controller@ad00000 {
                        compatible = "qcom,sm6350-camcc";
-                       reg = <0 0x0ad00000 0 0x16000>;
+                       reg = <0x0 0x0ad00000 0x0 0x16000>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>;
                        #clock-cells = <1>;
                        #reset-cells = <1>;
 
                mdss: display-subsystem@ae00000 {
                        compatible = "qcom,sm6350-mdss";
-                       reg = <0 0x0ae00000 0 0x1000>;
+                       reg = <0x0 0x0ae00000 0x0 0x1000>;
                        reg-names = "mdss";
 
                        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
 
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sm6350-dpu";
-                               reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                               reg = <0x0 0x0ae01000 0x0 0x8f000>,
+                                     <0x0 0x0aeb0000 0x0 0x2008>;
                                reg-names = "mdp", "vbif";
 
                                interrupt-parent = <&mdss>;
 
                        mdss_dp: displayport-controller@ae90000 {
                                compatible = "qcom,sm6350-dp", "qcom,sm8350-dp";
-                               reg = <0 0xae90000 0 0x200>,
-                                     <0 0xae90200 0 0x200>,
-                                     <0 0xae90400 0 0x600>,
-                                     <0 0xae91000 0 0x400>,
-                                     <0 0xae91400 0 0x400>;
+                               reg = <0x0 0xae90000 0x0 0x200>,
+                                     <0x0 0xae90200 0x0 0x200>,
+                                     <0x0 0xae90400 0x0 0x600>,
+                                     <0x0 0xae91000 0x0 0x400>,
+                                     <0x0 0xae91400 0x0 0x400>;
                                interrupt-parent = <&mdss>;
                                interrupts = <12>;
                                clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
 
                        mdss_dsi0: dsi@ae94000 {
                                compatible = "qcom,sm6350-dsi-ctrl", "qcom,mdss-dsi-ctrl";
-                               reg = <0 0x0ae94000 0 0x400>;
+                               reg = <0x0 0x0ae94000 0x0 0x400>;
                                reg-names = "dsi_ctrl";
 
                                interrupt-parent = <&mdss>;
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&mdss_dsi_opp_table>;
                                power-domains = <&rpmhpd SM6350_MX>;
 
                        mdss_dsi0_phy: phy@ae94400 {
                                compatible = "qcom,dsi-phy-10nm";
-                               reg = <0 0x0ae94400 0 0x200>,
-                                     <0 0x0ae94600 0 0x280>,
-                                     <0 0x0ae94a00 0 0x1e0>;
+                               reg = <0x0 0x0ae94400 0x0 0x200>,
+                                     <0x0 0x0ae94600 0x0 0x280>,
+                                     <0x0 0x0ae94a00 0x0 0x1e0>;
                                reg-names = "dsi_phy",
                                            "dsi_phy_lane",
                                            "dsi_pll";
 
                dispcc: clock-controller@af00000 {
                        compatible = "qcom,sm6350-dispcc";
-                       reg = <0 0x0af00000 0 0x20000>;
+                       reg = <0x0 0x0af00000 0x0 0x20000>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
                                 <&gcc GCC_DISP_GPLL0_CLK>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
                        clock-names = "bi_tcxo",
 
                pdc: interrupt-controller@b220000 {
                        compatible = "qcom,sm6350-pdc", "qcom,pdc";
-                       reg = <0 0x0b220000 0 0x30000>, <0 0x17c000f0 0 0x64>;
+                       reg = <0x0 0x0b220000 0x0 0x30000>, <0x0 0x17c000f0 0x0 0x64>;
                        qcom,pdc-ranges = <0 480 94>, <94 609 31>,
                                          <125 63 1>, <126 655 12>, <138 139 15>;
                        #interrupt-cells = <2>;
 
                tsens0: thermal-sensor@c263000 {
                        compatible = "qcom,sm6350-tsens", "qcom,tsens-v2";
-                       reg = <0 0x0c263000 0 0x1ff>, /* TM */
-                             <0 0x0c222000 0 0x8>; /* SROT */
+                       reg = <0x0 0x0c263000 0x0 0x1ff>, /* TM */
+                             <0x0 0x0c222000 0x0 0x8>; /* SROT */
                        #qcom,sensors = <16>;
                        interrupts-extended = <&pdc 26 IRQ_TYPE_LEVEL_HIGH>,
                                     <&pdc 28 IRQ_TYPE_LEVEL_HIGH>;
 
                tsens1: thermal-sensor@c265000 {
                        compatible = "qcom,sm6350-tsens", "qcom,tsens-v2";
-                       reg = <0 0x0c265000 0 0x1ff>, /* TM */
-                             <0 0x0c223000 0 0x8>; /* SROT */
+                       reg = <0x0 0x0c265000 0x0 0x1ff>, /* TM */
+                             <0x0 0x0c223000 0x0 0x8>; /* SROT */
                        #qcom,sensors = <16>;
                        interrupts-extended = <&pdc 27 IRQ_TYPE_LEVEL_HIGH>,
                                     <&pdc 29 IRQ_TYPE_LEVEL_HIGH>;
 
                aoss_qmp: power-management@c300000 {
                        compatible = "qcom,sm6350-aoss-qmp", "qcom,aoss-qmp";
-                       reg = <0 0x0c300000 0 0x1000>;
+                       reg = <0x0 0x0c300000 0x0 0x1000>;
                        interrupts-extended = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP
                                                     IRQ_TYPE_EDGE_RISING>;
                        mboxes = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP>;
 
                spmi_bus: spmi@c440000 {
                        compatible = "qcom,spmi-pmic-arb";
-                       reg = <0 0x0c440000 0 0x1100>,
-                             <0 0x0c600000 0 0x2000000>,
-                             <0 0x0e600000 0 0x100000>,
-                             <0 0x0e700000 0 0xa0000>,
-                             <0 0x0c40a000 0 0x26000>;
+                       reg = <0x0 0x0c440000 0x0 0x1100>,
+                             <0x0 0x0c600000 0x0 0x2000000>,
+                             <0x0 0x0e600000 0x0 0x100000>,
+                             <0x0 0x0e700000 0x0 0xa0000>,
+                             <0x0 0x0c40a000 0x0 0x26000>;
                        reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
                        interrupt-names = "periph_irq";
                        interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
 
                tlmm: pinctrl@f100000 {
                        compatible = "qcom,sm6350-tlmm";
-                       reg = <0 0x0f100000 0 0x300000>;
+                       reg = <0x0 0x0f100000 0x0 0x300000>;
                        interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>,
                                        <GIC_SPI 209 IRQ_TYPE_LEVEL_HIGH>,
                                        <GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>,
 
                apps_smmu: iommu@15000000 {
                        compatible = "qcom,sm6350-smmu-500", "arm,mmu-500";
-                       reg = <0 0x15000000 0 0x100000>;
+                       reg = <0x0 0x15000000 0x0 0x100000>;
                        #iommu-cells = <2>;
                        #global-interrupts = <1>;
                        interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
 
                watchdog@17c10000 {
                        compatible = "qcom,apss-wdt-sm6350", "qcom,kpss-wdt";
-                       reg = <0 0x17c10000 0 0x1000>;
+                       reg = <0x0 0x17c10000 0x0 0x1000>;
                        clocks = <&sleep_clk>;
                        interrupts = <GIC_SPI 0 IRQ_TYPE_EDGE_RISING>;
                };
 
                cpufreq_hw: cpufreq@18323000 {
                        compatible = "qcom,sm6350-cpufreq-hw", "qcom,cpufreq-hw";
-                       reg = <0 0x18323000 0 0x1000>, <0 0x18325800 0 0x1000>;
+                       reg = <0x0 0x18323000 0x0 0x1000>, <0x0 0x18325800 0x0 0x1000>;
                        reg-names = "freq-domain0", "freq-domain1";
                        clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>;
                        clock-names = "xo", "alternate";
 
                wifi: wifi@18800000 {
                        compatible = "qcom,wcn3990-wifi";
-                       reg = <0 0x18800000 0 0x800000>;
+                       reg = <0x0 0x18800000 0x0 0x800000>;
                        reg-names = "membase";
                        memory-region = <&wlan_fw_mem>;
                        interrupts = <GIC_SPI 414 IRQ_TYPE_LEVEL_HIGH>,
index a5cda478bd78bf9df28a4c5c14a8597c00368d32..befbb40228b51ad2771a4c0e6799d26045af5917 100644 (file)
                regulator-max-microvolt = <3700000>;
        };
 
+       vreg_cam_vio_1p8: regulator-cam-vio {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_cam_vio_1p8";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 49 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               /* Always-on prevents CCI bus timeouts */
+               regulator-always-on;
+
+               vin-supply = <&vreg_bob>;
+       };
+
+       vreg_camf_vana_2p8: regulator-camf-vana {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_camf_vana_2p8";
+
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+
+               gpio = <&tlmm 43 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_bob>;
+       };
+
+       vreg_camf_vdig_1p1: regulator-camf-vdig {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_camf_vdig_1p1";
+
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+
+               gpio = <&tlmm 35 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_s8b_1p256>;
+       };
+
+       vreg_camu_vaf_1p8: regulator-camu-vaf {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_camu_vaf_1p8";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 71 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_bob>;
+       };
+
+       vreg_camu_vana_2p8: regulator-camu-vana {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_camu_vana_2p8";
+
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               gpio = <&tlmm 68 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_bob>;
+       };
+
+       vreg_camu_vdig_1p1: regulator-camu-vdig {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_camu_vdig_1p1";
+
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+
+               gpio = <&tlmm 50 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_s8b_1p256>;
+       };
+
+       vreg_camw_vaf_1p8: regulator-camw-vaf {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_camw_vaf_1p8";
+
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 96 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_bob>;
+       };
+
+       vreg_camw_vana_2p8: regulator-camw-vana {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_camw_vana_2p8";
+
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+
+               gpio = <&tlmm 79 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_bob>;
+       };
+
+       vreg_camw_vdig_1p1: regulator-camw-vdig {
+               compatible = "regulator-fixed";
+               regulator-name = "vreg_camw_vdig_1p1";
+
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+
+               gpio = <&tlmm 108 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               vin-supply = <&vreg_s8b_1p256>;
+       };
+
        // S2B is really ebi.lvl but it's there for supply map completeness sake.
        vreg_s2b_0p7: smpa3-regulator {
                compatible = "regulator-fixed";
 };
 
 &cci0 {
+       /*
+        * cci0_i2c1 bus is unused and GPIO 71&72 are repurposed.
+        * So set only cci0_i2c0 pinctrl here.
+        */
+       pinctrl-0 = <&cci0_default>;
+       pinctrl-1 = <&cci0_sleep>;
+
        status = "okay";
 };
 
 &cci0_i2c0 {
-       /* sony,imx471 (Front) */
+       /* D-PHY sony,imx471 (Front) @ 0x1a */
+
+       camf_p24c64f: eeprom@52 {
+               compatible = "puya,p24c64f",
+                            "atmel,24c64";
+               reg = <0x52>;
+               vcc-supply = <&vreg_cam_vio_1p8>;
+               read-only;
+       };
 };
 
 &cci1 {
 };
 
 &cci1_i2c0 {
-       /* samsung,s5kjn1 (Rear-aux UW) */
+       /* actuator (For Ultra Wide sensor) @ 0xc */
+       /* D-PHY samsung,s5kjn1 (Ultra Wide) @ 0x2d */
+
+       camu_gt24p128e: eeprom@51 {
+               compatible = "giantec,gt24p128e",
+                            "atmel,24c128";
+               reg = <0x51>;
+               vcc-supply = <&vreg_cam_vio_1p8>;
+               read-only;
+       };
 };
 
 &cci1_i2c1 {
-       /* sony,imx766 (Rear Wide) */
+       /* actuator (For Wide sensor) @ 0xc */
+       /* C-PHY sony,imx766 (Wide) @ 0x10 */
+
+       camw_gt24p128e: eeprom@50 {
+               compatible = "giantec,gt24p128e",
+                            "atmel,24c128";
+               reg = <0x50>;
+               vcc-supply = <&vreg_cam_vio_1p8>;
+               read-only;
+       };
 };
 
 &gcc {
        status = "okay";
 };
 
+&gpu {
+       status = "okay";
+};
+
 &gpu_zap_shader {
        firmware-name = "qcom/sm7325/nothing/spacewar/a660_zap.mbn";
 };
        status = "okay";
 };
 
-/* MDSS remains disabled until the panel driver is present. */
+&mdss {
+       status = "okay";
+};
+
 &mdss_dsi {
        vdda-supply = <&vdd_a_dsi_0_1p2>;
+       status = "okay";
 
-       /* Visionox RM692E5 panel */
+       panel: panel@0 {
+               compatible = "nothing,rm692e5-spacewar",
+                            "visionox,rm692e5";
+               reg = <0>;
+
+               reset-gpios = <&tlmm 44 GPIO_ACTIVE_LOW>;
+
+               vdd-supply = <&vdd_oled>;
+               vddio-supply = <&vdd_io_oled>;
+
+               pinctrl-0 = <&lcd_reset_n>,
+                           <&mdp_vsync_p>;
+               pinctrl-names = "default";
+
+               port {
+                       panel_in: endpoint {
+                               remote-endpoint = <&mdss_dsi0_out>;
+                       };
+               };
+       };
+};
+
+&mdss_dsi0_out {
+       data-lanes = <0 1 2 3>;
+       remote-endpoint = <&panel_in>;
 };
 
 &mdss_dsi_phy {
        vdds-supply = <&vdd_a_dsi_0_0p9>;
+       status = "okay";
 };
 
 &pm7325_gpios {
 
 &q6asmdai {
        dai@0 {
-               reg = <0>;
+               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
        };
 };
 
                bias-pull-down;
        };
 
+       lcd_reset_n: lcd-reset-n-state {
+               pins = "gpio44";
+               function = "gpio";
+               drive-strength = <8>;
+               bias-disable;
+       };
+
+       mdp_vsync_p: mdp-vsync-p-state {
+               pins = "gpio80";
+               function = "mdp_vsync";
+               drive-strength = <2>;
+               bias-pull-down;
+       };
+
        hst_bt_en: hst-bt-en-state {
                pins = "gpio85";
                function = "gpio";
index 6ea883b1edfa6c511730550f4db0cb9c25fc633d..e1e294f0f462ac824bffe96615b36ddcd8996d80 100644 (file)
        qcom,dual-dsi-mode;
 
        /* DSI1 is slave, so use DSI0 clocks */
-       assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+       assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
        status = "okay";
 
        vdd-1.3-rfa-supply = <&vreg_l2c_1p3>;
        vdd-3.3-ch0-supply = <&vreg_l11c_3p3>;
 
-       qcom,ath10k-calibration-variant = "Qualcomm_sm8150hdk";
+       qcom,calibration-variant = "Qualcomm_sm8150hdk";
 };
index 9a3d0ac6c423dcec1b2ec2a4cd8300346cd9dba5..835ef929ff2df49e654374cf45670dfe85c5ea74 100644 (file)
 
 &remoteproc_adsp {
        status = "okay";
-       firmware-name = "qcom/sm8150/microsoft/adsp.mdt";
+       firmware-name = "qcom/sm8150/microsoft/adsp.mbn";
 };
 
 &remoteproc_cdsp {
        status = "okay";
-       firmware-name = "qcom/sm8150/microsoft/cdsp.mdt";
+       firmware-name = "qcom/sm8150/microsoft/cdsp.mbn";
 };
 
 &remoteproc_mpss {
        status = "okay";
-       firmware-name = "qcom/sm8150/microsoft/modem.mdt";
+       firmware-name = "qcom/sm8150/microsoft/modem.mbn";
 };
 
 &remoteproc_slpi {
        status = "okay";
-       firmware-name = "qcom/sm8150/microsoft/slpi.mdt";
+       firmware-name = "qcom/sm8150/microsoft/slpi.mbn";
 };
 
 &pon_resin {
index 2e1c7afe0aa7d4ad560dd8e5aab2ce835991cc9d..12e8e1ada6d8bd3baaf9762d16b211ed97355666 100644 (file)
 
 &remoteproc_adsp {
        status = "okay";
-       firmware-name = "qcom/sm8150/adsp.mdt";
+       firmware-name = "qcom/sm8150/adsp.mbn";
 };
 
 &remoteproc_cdsp {
        status = "okay";
-       firmware-name = "qcom/sm8150/cdsp.mdt";
+       firmware-name = "qcom/sm8150/cdsp.mbn";
 };
 
 &remoteproc_mpss {
        status = "okay";
-       firmware-name = "qcom/sm8150/modem.mdt";
+       firmware-name = "qcom/sm8150/modem.mbn";
 };
 
 &remoteproc_slpi {
        status = "okay";
-       firmware-name = "qcom/sm8150/slpi.mdt";
+       firmware-name = "qcom/sm8150/slpi.mbn";
 };
 
 &tlmm {
index 4dbda54b47a54d1fa9c3fbeb441f8bc852e52f75..cdb47359c4c88af5c73956ba0ba1710ca312a9af 100644 (file)
@@ -12,6 +12,7 @@
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/clock/qcom,dispcc-sm8150.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sm8150.h>
 #include <dt-bindings/clock/qcom,gpucc-sm8150.h>
 #include <dt-bindings/clock/qcom,videocc-sm8150.h>
                                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
                                iommus = <&apps_smmu 0x140 0>;
                                snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
                                snps,dis_enblslpm_quirk;
                                snps,dis-u1-entry-quirk;
                                snps,dis-u2-entry-quirk;
                                interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
                                iommus = <&apps_smmu 0x160 0>;
                                snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
                                snps,dis_enblslpm_quirk;
                                snps,dis-u1-entry-quirk;
                                snps,dis-u2-entry-quirk;
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sm8150-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SM8150_MMCX>;
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>,
-                                                        <&mdss_dsi1_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd SM8150_MMCX>;
                        compatible = "qcom,sm8150-dispcc";
                        reg = <0 0x0af00000 0 0x10000>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
                        clock-names = "bi_tcxo",
index 813b009b7bd6818b92b243f0982d2c7ef903d421..465fd6e954a347acf15ef3199afd8d1a198f95e8 100644 (file)
        qcom,dual-dsi-mode;
        qcom,sync-dual-dsi;
        /* DSI1 is slave, so use DSI0 clocks */
-       assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+       assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
        status = "okay";
 };
 
                vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
                vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
 
-               qcom,ath11k-calibration-variant = "Xiaomi_Pad_5Pro";
+               qcom,calibration-variant = "Xiaomi_Pad_5Pro";
        };
 };
 
index c2937b4d9f180296733b6d7a7a16a088f1f96b76..f0d18fd37aaf467516169bdb4c035617aed04e8c 100644 (file)
@@ -5,6 +5,7 @@
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,dispcc-sm8250.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sm8250.h>
 #include <dt-bindings/clock/qcom,gpucc-sm8250.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
                };
 
                cpu7_opp9: opp-1747200000 {
-                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-hz = /bits/ 64 <1747200000>;
                        opp-peak-kBps = <5412000 42393600>;
                };
 
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sm8250-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
                                              "iface",
                                              "bus";
 
-                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd RPMHPD_MMCX>;
                                              "iface",
                                              "bus";
 
-                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi_opp_table>;
                                power-domains = <&rpmhpd RPMHPD_MMCX>;
                        power-domains = <&rpmhpd RPMHPD_MMCX>;
                        required-opps = <&rpmhpd_opp_low_svs>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
                        clock-names = "bi_tcxo",
index 69da30f35baaab67e51afcbca3486fb89c14f281..971c828a7555885aa2f05647634eb7132333fb47 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/interconnect/qcom,sm8350.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clock/qcom,dispcc-sm8350.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sm8350.h>
 #include <dt-bindings/clock/qcom,gpucc-sm8350.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
@@ -21,6 +22,7 @@
 #include <dt-bindings/soc/qcom,apr.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 #include <dt-bindings/sound/qcom,q6afe.h>
+#include <dt-bindings/sound/qcom,q6asm.h>
 #include <dt-bindings/thermal/thermal.h>
 #include <dt-bindings/interconnect/qcom,sm8350.h>
 
                        no-map;
                };
 
-               pil_camera_mem: mmeory@85200000 {
+               pil_camera_mem: memory@85200000 {
                        reg = <0x0 0x85200000 0x0 0x500000>;
                        no-map;
                };
                        interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
                        #dma-cells = <1>;
                        qcom,ee = <0>;
+                       qcom,num-ees = <4>;
+                       num-channels = <16>;
                        qcom,controlled-remotely;
                        iommus = <&apps_smmu 0x594 0x0011>,
                                 <&apps_smmu 0x596 0x0011>;
-                       /* FIXME: Probing BAM DMA causes some abort and system hang */
-                       status = "fail";
                };
 
                crypto: crypto@1dfa000 {
                                 <&apps_smmu 0x596 0x0011>;
                        interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>;
                        interconnect-names = "memory";
-                       /* FIXME: dependency BAM DMA is disabled */
-                       status = "disabled";
                };
 
                ipa: ipa@1e40000 {
                                                        iommus = <&apps_smmu 0x1801 0x0>;
 
                                                        dai@0 {
-                                                               reg = <0>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA1>;
                                                        };
 
                                                        dai@1 {
-                                                               reg = <1>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA2>;
                                                        };
 
                                                        dai@2 {
-                                                               reg = <2>;
+                                                               reg = <MSM_FRONTEND_DAI_MULTIMEDIA3>;
                                                        };
                                                };
                                        };
                                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
                                iommus = <&apps_smmu 0x0 0x0>;
                                snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
                                snps,dis_enblslpm_quirk;
                                snps,dis-u1-entry-quirk;
                                snps,dis-u2-entry-quirk;
                                interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
                                iommus = <&apps_smmu 0x20 0x0>;
                                snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
                                snps,dis_enblslpm_quirk;
                                snps,dis-u1-entry-quirk;
                                snps,dis-u2-entry-quirk;
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sm8350-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi0_opp_table>;
                                power-domains = <&rpmhpd RPMHPD_MMCX>;
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>,
-                                                        <&mdss_dsi1_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&dsi1_opp_table>;
                                power-domains = <&rpmhpd RPMHPD_MMCX>;
                        compatible = "qcom,sm8350-dispcc";
                        reg = <0 0x0af00000 0 0x10000>;
                        clocks = <&rpmhcc RPMH_CXO_CLK>,
-                                <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
                        clock-names = "bi_tcxo",
index 9c809fc5fa45a98ff5441a0b6809931588897243..54c6d0fdb2afa51084c510eddc341d6087189611 100644 (file)
@@ -4,6 +4,7 @@
  */
 
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,gcc-sm8450.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/clock/qcom,sm8450-camcc.h>
                        };
                };
 
+               pcie1_ep: pcie-ep@1c08000 {
+                       compatible = "qcom,sm8450-pcie-ep";
+                       reg = <0x0 0x01c08000 0x0 0x3000>,
+                             <0x0 0x40000000 0x0 0xf1d>,
+                             <0x0 0x40000f20 0x0 0xa8>,
+                             <0x0 0x40001000 0x0 0x1000>,
+                             <0x0 0x40200000 0x0 0x1000000>,
+                             <0x0 0x01c0b000 0x0 0x1000>,
+                             <0x0 0x40002000 0x0 0x1000>;
+                       reg-names = "parf",
+                                   "dbi",
+                                   "elbi",
+                                   "atu",
+                                   "addr_space",
+                                   "mmio",
+                                   "dma";
+
+                       clocks = <&gcc GCC_PCIE_1_AUX_CLK>,
+                                <&gcc GCC_PCIE_1_CFG_AHB_CLK>,
+                                <&gcc GCC_PCIE_1_MSTR_AXI_CLK>,
+                                <&gcc GCC_PCIE_1_SLV_AXI_CLK>,
+                                <&gcc GCC_PCIE_1_SLV_Q2A_AXI_CLK>,
+                                <&rpmhcc RPMH_CXO_CLK>,
+                                <&gcc GCC_DDRSS_PCIE_SF_TBU_CLK>,
+                                <&gcc GCC_AGGRE_NOC_PCIE_1_AXI_CLK>;
+                       clock-names = "aux",
+                                     "cfg",
+                                     "bus_master",
+                                     "bus_slave",
+                                     "slave_q2a",
+                                     "ref",
+                                     "ddrss_sf_tbu",
+                                     "aggre_noc_axi";
+
+                       interrupts = <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 440 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "global",
+                                         "doorbell",
+                                         "dma";
+
+                       interconnects = <&pcie_noc MASTER_PCIE_1 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_PCIE_1 QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       interconnect-names = "pcie-mem",
+                                            "cpu-pcie";
+
+                       iommus = <&apps_smmu 0x1c80 0x7f>;
+                       resets = <&gcc GCC_PCIE_1_BCR>;
+                       reset-names = "core";
+                       power-domains = <&gcc PCIE_1_GDSC>;
+                       phys = <&pcie1_phy>;
+                       phy-names = "pciephy";
+                       num-lanes = <2>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pcie1_default_state>;
+
+                       status = "disabled";
+               };
+
                pcie1_phy: phy@1c0e000 {
                        compatible = "qcom,sm8450-qmp-gen4x2-pcie-phy";
                        reg = <0 0x01c0e000 0 0x2000>;
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sm8450-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
                                              "iface",
                                              "bus";
 
-                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&mdss_dsi_opp_table>;
                                power-domains = <&rpmhpd RPMHPD_MMCX>;
                                              "iface",
                                              "bus";
 
-                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>, <&mdss_dsi1_phy 1>;
+                               assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
+                                                 <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&mdss_dsi_opp_table>;
                                power-domains = <&rpmhpd RPMHPD_MMCX>;
                                 <&rpmhcc RPMH_CXO_CLK_A>,
                                 <&gcc GCC_DISP_AHB_CLK>,
                                 <&sleep_clk>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_1_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>,
                                 <0>, /* dp1 */
                        interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
                        #dma-cells = <1>;
                        qcom,ee = <0>;
+                       qcom,num-ees = <4>;
+                       num-channels = <16>;
                        qcom,controlled-remotely;
                        iommus = <&apps_smmu 0x584 0x11>,
                                 <&apps_smmu 0x588 0x0>,
                                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
                                iommus = <&apps_smmu 0x0 0x0>;
                                snps,dis_u2_susphy_quirk;
+                               snps,dis_u3_susphy_quirk;
                                snps,dis_enblslpm_quirk;
                                snps,dis-u1-entry-quirk;
                                snps,dis-u2-entry-quirk;
index 29bc1ddfc7b25f203c9f3b530610e45c44ae4fb2..9dfb248f9ab52b354453cf42c09d93bbee99214f 100644 (file)
        status = "okay";
 };
 
+&iris {
+       status = "okay";
+};
+
 &gpi_dma1 {
        status = "okay";
 };
index 5648ab60ba4c4bfaf5baa289969898277ee57cef..fdcecd41297d6ebc81c5088472e4731ca0782fcb 100644 (file)
        };
 };
 
+&iris {
+       status = "okay";
+};
+
 &lpass_tlmm {
        spkr_1_sd_n_active: spkr-1-sd-n-active-state {
                pins = "gpio17";
index 3a6cb279130489168f8d20a6e27808647debdb41..49438a7e77ceaab9506158855b6262206bca94ec 100644 (file)
        status = "okay";
 };
 
+&iris {
+       status = "okay";
+};
+
 &gpi_dma1 {
        status = "okay";
 };
index e8383faac576a2f401fff74231a764712c832291..7d29a57a2b540708fa88fb59e821406f400a3174 100644 (file)
 };
 
 &remoteproc_adsp {
-       firmware-name = "qcom/sm8550/adsp.mdt",
-                       "qcom/sm8550/adsp_dtb.mdt";
+       firmware-name = "qcom/sm8550/adsp.mbn",
+                       "qcom/sm8550/adsp_dtb.mbn";
        status = "okay";
 };
 
 &remoteproc_cdsp {
-       firmware-name = "qcom/sm8550/cdsp.mdt",
-                       "qcom/sm8550/cdsp_dtb.mdt";
+       firmware-name = "qcom/sm8550/cdsp.mbn",
+                       "qcom/sm8550/cdsp_dtb.mbn";
        status = "okay";
 };
 
 &remoteproc_mpss {
-       firmware-name = "qcom/sm8550/modem.mdt",
-                       "qcom/sm8550/modem_dtb.mdt";
+       firmware-name = "qcom/sm8550/modem.mbn",
+                       "qcom/sm8550/modem_dtb.mbn";
        status = "okay";
 };
 
index eac8de4005d82f246bc50f64f09515631d895c99..71a7e3b57ecedd86d798e71b781451fe11f9c1ce 100644 (file)
@@ -3,6 +3,7 @@
  * Copyright (c) 2022, Linaro Limited
  */
 
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/clock/qcom,sm8450-videocc.h>
 #include <dt-bindings/clock/qcom,sm8550-camcc.h>
                scm: scm {
                        compatible = "qcom,scm-sm8550", "qcom,scm";
                        qcom,dload-mode = <&tcsr 0x19000>;
-                       interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>;
+                       interconnects = <&aggre2_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                };
        };
 
                qcom,bcm-voters = <&apps_bcm_voter>;
        };
 
+       qup_opp_table_100mhz: opp-table-qup100mhz {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-100000000 {
+                       opp-hz = /bits/ 64 <100000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
+       qup_opp_table_120mhz: opp-table-qup120mhz {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-120000000 {
+                       opp-hz = /bits/ 64 <120000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
+       qup_opp_table_125mhz: opp-table-qup125mhz {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-125000000 {
+                       opp-hz = /bits/ 64 <125000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
        memory@a0000000 {
                device_type = "memory";
                /* We expect the bootloader to fill in the size */
                                interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 0 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 0 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi8_data_clk>, <&qup_spi8_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 0 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 0 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 1 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 1 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi9_data_clk>, <&qup_spi9_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 1 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 1 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 2 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 2 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi10_data_clk>, <&qup_spi10_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 2 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 2 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 3 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 3 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi11_data_clk>, <&qup_spi11_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 3 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 3 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 4 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 4 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi12_data_clk>, <&qup_spi12_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 4 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 4 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 5 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 5 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi13_data_clk>, <&qup_spi13_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 5 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 5 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_uart14_default>, <&qup_uart14_cts_rts>;
                                interrupts = <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_125mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 7 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 7 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi15_data_clk>, <&qup_spi15_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 0 &clk_virt SLAVE_QUP_CORE_2 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_2 0>,
-                                               <&aggre2_noc MASTER_QUP_2 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma2 0 7 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 7 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_0 0 &clk_virt SLAVE_QUP_CORE_0 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_I2C 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core", "qup-config";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               required-opps = <&rpmhpd_opp_low_svs>;
                                status = "disabled";
                        };
                };
                        clocks = <&gcc GCC_QUPV3_WRAP_1_M_AHB_CLK>,
                                 <&gcc GCC_QUPV3_WRAP_1_S_AHB_CLK>;
                        iommus = <&apps_smmu 0xa3 0>;
-                       interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>;
+                       interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                        &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>;
                        interconnect-names = "qup-core";
                        dma-coherent;
                        #address-cells = <2>;
                                interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 0 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 0 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi0_data_clk>, <&qup_spi0_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 0 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 0 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 1 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 1 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi1_data_clk>, <&qup_spi1_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 1 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 1 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 2 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 2 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi2_data_clk>, <&qup_spi2_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 2 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 2 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 3 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 3 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi3_data_clk>, <&qup_spi3_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 3 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 3 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
                                #address-cells = <1>;
                                #size-cells = <0>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 4 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 4 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                status = "disabled";
                        };
 
                                interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi4_data_clk>, <&qup_spi4_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 4 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 4 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c5_data_clk>;
                                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 5 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 5 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi5_data_clk>, <&qup_spi5_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 5 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 5 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_i2c6_data_clk>;
                                interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 6 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 6 QCOM_GPI_I2C>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&qup_spi6_data_clk>, <&qup_spi6_cs>;
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>,
-                                               <&aggre1_noc MASTER_QUP_1 0 &mc_virt  SLAVE_EBI1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                               <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
+                                                &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core", "qup-config", "qup-memory";
                                dmas = <&gpi_dma1 0 6 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 6 QCOM_GPI_SPI>;
                                dma-names = "tx", "rx";
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                                pinctrl-0 = <&qup_uart7_default>;
                                interrupts = <GIC_SPI 579 IRQ_TYPE_LEVEL_HIGH>;
                                interconnect-names = "qup-core", "qup-config";
-                               interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>,
-                                               <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_1 0>;
+                               interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
+                                                &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>;
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
                                status = "disabled";
                        };
                };
                                      "ddrss_sf_tbu",
                                      "noc_aggr";
 
-                       interconnects = <&pcie_noc MASTER_PCIE_0 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc_main SLAVE_PCIE_0 0>;
+                       interconnects = <&pcie_noc MASTER_PCIE_0 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc_main SLAVE_PCIE_0 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "pcie-mem", "cpu-pcie";
 
                        msi-map = <0x0 &gic_its 0x1400 0x1>,
                        phys = <&pcie0_phy>;
                        phy-names = "pciephy";
 
+                       operating-points-v2 = <&pcie0_opp_table>;
+
                        status = "disabled";
 
+                       pcie0_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               /* GEN 1 x1 */
+                               opp-2500000 {
+                                       opp-hz = /bits/ 64 <2500000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <250000 1>;
+                               };
+
+                               /* GEN 1 x2 and GEN 2 x1 */
+                               opp-5000000 {
+                                       opp-hz = /bits/ 64 <5000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <500000 1>;
+                               };
+
+                               /* GEN 2 x2 */
+                               opp-10000000 {
+                                       opp-hz = /bits/ 64 <10000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <1000000 1>;
+                               };
+
+                               /* GEN 3 x1 */
+                               opp-8000000 {
+                                       opp-hz = /bits/ 64 <8000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <984500 1>;
+                               };
+
+                               /* GEN 3 x2 */
+                               opp-16000000 {
+                                       opp-hz = /bits/ 64 <16000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <1969000 1>;
+                               };
+                       };
+
                        pcieport0: pcie@0 {
                                device_type = "pci";
                                reg = <0x0 0x0 0x0 0x0 0x0>;
                        assigned-clocks = <&gcc GCC_PCIE_1_AUX_CLK>;
                        assigned-clock-rates = <19200000>;
 
-                       interconnects = <&pcie_noc MASTER_PCIE_1 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &cnoc_main SLAVE_PCIE_1 0>;
+                       interconnects = <&pcie_noc MASTER_PCIE_1 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc_main SLAVE_PCIE_1 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "pcie-mem", "cpu-pcie";
 
                        msi-map = <0x0 &gic_its 0x1480 0x1>,
                        phys = <&pcie1_phy>;
                        phy-names = "pciephy";
 
+                       operating-points-v2 = <&pcie1_opp_table>;
+
                        status = "disabled";
 
+                       pcie1_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               /* GEN 1 x1 */
+                               opp-2500000 {
+                                       opp-hz = /bits/ 64 <2500000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <250000 1>;
+                               };
+
+                               /* GEN 1 x2 and GEN 2 x1 */
+                               opp-5000000 {
+                                       opp-hz = /bits/ 64 <5000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <500000 1>;
+                               };
+
+                               /* GEN 2 x2 */
+                               opp-10000000 {
+                                       opp-hz = /bits/ 64 <10000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <1000000 1>;
+                               };
+
+                               /* GEN 3 x1 */
+                               opp-8000000 {
+                                       opp-hz = /bits/ 64 <8000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <984500 1>;
+                               };
+
+                               /* GEN 3 x2 and GEN 4 x1 */
+                               opp-16000000 {
+                                       opp-hz = /bits/ 64 <16000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <1969000 1>;
+                               };
+
+                               /* GEN 4 x2 */
+                               opp-32000000 {
+                                       opp-hz = /bits/ 64 <32000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <3938000 1>;
+                               };
+                       };
+
                        pcie@0 {
                                device_type = "pci";
                                reg = <0x0 0x0 0x0 0x0 0x0>;
                        interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
                        #dma-cells = <1>;
                        qcom,ee = <0>;
+                       qcom,num-ees = <4>;
+                       num-channels = <20>;
                        qcom,controlled-remotely;
                        iommus = <&apps_smmu 0x480 0x0>,
                                 <&apps_smmu 0x481 0x0>;
                        dma-names = "rx", "tx";
                        iommus = <&apps_smmu 0x480 0x0>,
                                 <&apps_smmu 0x481 0x0>;
-                       interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>;
+                       interconnects = <&aggre2_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                        interconnect-names = "memory";
                };
 
                        dma-coherent;
 
                        operating-points-v2 = <&ufs_opp_table>;
-                       interconnects = <&aggre1_noc MASTER_UFS_MEM 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_UFS_MEM_CFG 0>;
+                       interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
 
                        interconnect-names = "ufs-ddr", "cpu-ufs";
                        clock-names = "core_clk",
                        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 &config_noc SLAVE_IPA_CFG 0>;
+                       interconnects = <&aggre2_noc MASTER_IPA QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_IPA_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "memory",
                                             "config";
 
                                        <&rpmhpd RPMHPD_MSS>;
                        power-domain-names = "cx", "mss";
 
-                       interconnects = <&mc_virt MASTER_LLCC 0 &mc_virt SLAVE_EBI1 0>;
+                       interconnects = <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
 
                        memory-region = <&mpss_mem>, <&q6_mpss_dtb_mem>, <&mpss_dsm_mem>;
 
                                        <&rpmhpd RPMHPD_LMX>;
                        power-domain-names = "lcx", "lmx";
 
-                       interconnects = <&lpass_lpicx_noc MASTER_LPASS_PROC 0 &mc_virt SLAVE_EBI1 0>;
+                       interconnects = <&lpass_lpicx_noc MASTER_LPASS_PROC QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
 
                        memory-region = <&adspslpi_mem>, <&q6_adsp_dtb_mem>;
 
                        power-domains = <&rpmhpd RPMHPD_CX>;
                        operating-points-v2 = <&sdhc2_opp_table>;
 
-                       interconnects = <&aggre2_noc MASTER_SDCC_2 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_SDCC_2 0>;
+                       interconnects = <&aggre2_noc MASTER_SDCC_2 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_SDCC_2 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "sdhc-ddr", "cpu-sdhc";
                        bus-width = <4>;
                        dma-coherent;
                        };
                };
 
+               iris: video-codec@aa00000 {
+                       compatible = "qcom,sm8550-iris";
+
+                       reg = <0 0x0aa00000 0 0xf0000>;
+                       interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
+
+                       power-domains = <&videocc VIDEO_CC_MVS0C_GDSC>,
+                                       <&videocc VIDEO_CC_MVS0_GDSC>,
+                                       <&rpmhpd RPMHPD_MXC>,
+                                       <&rpmhpd RPMHPD_MMCX>;
+                       power-domain-names = "venus",
+                                            "vcodec0",
+                                            "mxc",
+                                            "mmcx";
+                       operating-points-v2 = <&iris_opp_table>;
+
+                       clocks = <&gcc GCC_VIDEO_AXI0_CLK>,
+                                <&videocc VIDEO_CC_MVS0C_CLK>,
+                                <&videocc VIDEO_CC_MVS0_CLK>;
+                       clock-names = "iface",
+                                     "core",
+                                     "vcodec0_core";
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_VENUS_CFG QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mmss_noc MASTER_VIDEO QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "cpu-cfg",
+                                            "video-mem";
+
+                       memory-region = <&video_mem>;
+
+                       resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>;
+                       reset-names = "bus";
+
+                       iommus = <&apps_smmu 0x1940 0>,
+                                <&apps_smmu 0x1947 0>;
+                       dma-coherent;
+
+                       /*
+                        * IRIS firmware is signed by vendors, only
+                        * enable in boards where the proper signed firmware
+                        * is available.
+                        */
+                       status = "disabled";
+
+                       iris_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-240000000 {
+                                       opp-hz = /bits/ 64 <240000000>;
+                                       required-opps = <&rpmhpd_opp_svs>,
+                                                       <&rpmhpd_opp_low_svs>;
+                               };
+
+                               opp-338000000 {
+                                       opp-hz = /bits/ 64 <338000000>;
+                                       required-opps = <&rpmhpd_opp_svs>,
+                                                       <&rpmhpd_opp_svs>;
+                               };
+
+                               opp-366000000 {
+                                       opp-hz = /bits/ 64 <366000000>;
+                                       required-opps = <&rpmhpd_opp_svs_l1>,
+                                                       <&rpmhpd_opp_svs_l1>;
+                               };
+
+                               opp-444000000 {
+                                       opp-hz = /bits/ 64 <444000000>;
+                                       required-opps = <&rpmhpd_opp_nom>,
+                                                       <&rpmhpd_opp_nom>;
+                               };
+
+                               opp-533333334 {
+                                       opp-hz = /bits/ 64 <533333334>;
+                                       required-opps = <&rpmhpd_opp_turbo>,
+                                                       <&rpmhpd_opp_turbo>;
+                               };
+                       };
+               };
+
                videocc: clock-controller@aaf0000 {
                        compatible = "qcom,sm8550-videocc";
                        reg = <0 0x0aaf0000 0 0x10000>;
 
                        power-domains = <&dispcc MDSS_GDSC>;
 
-                       interconnects = <&mmss_noc MASTER_MDP 0 &mc_virt SLAVE_EBI1 0>;
-                       interconnect-names = "mdp0-mem";
+                       interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       interconnect-names = "mdp0-mem", "cpu-cfg";
 
                        iommus = <&apps_smmu 0x1c00 0x2>;
 
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sm8550-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp", "vbif";
 
                                interrupt-parent = <&mdss>;
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&mdss_dsi_opp_table>;
 
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>,
-                                                        <&mdss_dsi1_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&mdss_dsi_opp_table>;
 
                                 <&bi_tcxo_ao_div2>,
                                 <&gcc GCC_DISP_AHB_CLK>,
                                 <&sleep_clk>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_dp_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_dp_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>,
                                 <0>, /* dp1 */
 
                        resets = <&gcc GCC_USB30_PRIM_BCR>;
 
-                       interconnects = <&aggre1_noc MASTER_USB3_0 0 &mc_virt SLAVE_EBI1 0>,
-                                       <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_USB3_0 0>;
+                       interconnects = <&aggre1_noc MASTER_USB3_0 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_USB3_0 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "usb-ddr", "apps-usb";
 
                        status = "disabled";
                        compatible = "qcom,sm8550-llcc-bwmon", "qcom,sc7280-llcc-bwmon";
                        reg = <0 0x24091000 0 0x1000>;
                        interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
-                       interconnects = <&mc_virt MASTER_LLCC 3 &mc_virt SLAVE_EBI1 3>;
+                       interconnects = <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>;
 
                        operating-points-v2 = <&llcc_bwmon_opp_table>;
 
                        compatible = "qcom,sm8550-cpu-bwmon", "qcom,sdm845-bwmon";
                        reg = <0 0x240b6400 0 0x600>;
                        interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
-                       interconnects = <&gem_noc MASTER_APPSS_PROC 3 &gem_noc SLAVE_LLCC 3>;
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
 
                        operating-points-v2 = <&cpu_bwmon_opp_table>;
 
                                        <&rpmhpd RPMHPD_NSP>;
                        power-domain-names = "cx", "mxc", "nsp";
 
-                       interconnects = <&nsp_noc MASTER_CDSP_PROC 0 &mc_virt SLAVE_EBI1 0>;
+                       interconnects = <&nsp_noc MASTER_CDSP_PROC QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
 
                        memory-region = <&cdsp_mem>, <&q6_cdsp_dtb_mem>;
 
index 86684cb9a9325618ddb74458621cf4bbdc1cc0d1..495ea9bfd008500dd2c9f46ceca94cf5f972beca 100644 (file)
@@ -3,6 +3,7 @@
  * Copyright (c) 2023, Linaro Limited
  */
 
+#include <dt-bindings/clock/qcom,dsi-phy-28nm.h>
 #include <dt-bindings/clock/qcom,rpmh.h>
 #include <dt-bindings/clock/qcom,sm8650-camcc.h>
 #include <dt-bindings/clock/qcom,sm8650-dispcc.h>
@@ -15,6 +16,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/interconnect/qcom,icc.h>
 #include <dt-bindings/interconnect/qcom,sm8650-rpmh.h>
+#include <dt-bindings/interconnect/qcom,osm-l3.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/mailbox/qcom-ipcc.h>
 #include <dt-bindings/phy/phy-qcom-qmp.h>
 
                        qcom,freq-domain = <&cpufreq_hw 0>;
 
+                       operating-points-v2 = <&cpu0_opp_table>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3 MASTER_EPSS_L3_APPS
+                                        &epss_l3 SLAVE_EPSS_L3_SHARED>;
+
                        #cooling-cells = <2>;
 
                        l2_0: l2-cache {
 
                        qcom,freq-domain = <&cpufreq_hw 0>;
 
+                       operating-points-v2 = <&cpu0_opp_table>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3 MASTER_EPSS_L3_APPS
+                                        &epss_l3 SLAVE_EPSS_L3_SHARED>;
+
                        #cooling-cells = <2>;
                };
 
 
                        qcom,freq-domain = <&cpufreq_hw 3>;
 
+                       operating-points-v2 = <&cpu2_opp_table>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3 MASTER_EPSS_L3_APPS
+                                        &epss_l3 SLAVE_EPSS_L3_SHARED>;
+
                        #cooling-cells = <2>;
 
                        l2_200: l2-cache {
                        power-domain-names = "psci";
 
                        enable-method = "psci";
-                       next-level-cache = <&l2_200>;
+                       next-level-cache = <&l2_300>;
                        capacity-dmips-mhz = <1792>;
                        dynamic-power-coefficient = <238>;
 
                        qcom,freq-domain = <&cpufreq_hw 3>;
 
+                       operating-points-v2 = <&cpu2_opp_table>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3 MASTER_EPSS_L3_APPS
+                                        &epss_l3 SLAVE_EPSS_L3_SHARED>;
+
                        #cooling-cells = <2>;
+
+                       l2_300: l2-cache {
+                               compatible = "cache";
+                               cache-level = <2>;
+                               cache-unified;
+                               next-level-cache = <&l3_0>;
+                       };
                };
 
                cpu4: cpu@400 {
 
                        qcom,freq-domain = <&cpufreq_hw 3>;
 
+                       operating-points-v2 = <&cpu2_opp_table>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3 MASTER_EPSS_L3_APPS
+                                        &epss_l3 SLAVE_EPSS_L3_SHARED>;
+
                        #cooling-cells = <2>;
 
                        l2_400: l2-cache {
 
                        qcom,freq-domain = <&cpufreq_hw 1>;
 
+                       operating-points-v2 = <&cpu5_opp_table>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3 MASTER_EPSS_L3_APPS
+                                        &epss_l3 SLAVE_EPSS_L3_SHARED>;
+
                        #cooling-cells = <2>;
 
                        l2_500: l2-cache {
 
                        qcom,freq-domain = <&cpufreq_hw 1>;
 
+                       operating-points-v2 = <&cpu5_opp_table>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3 MASTER_EPSS_L3_APPS
+                                        &epss_l3 SLAVE_EPSS_L3_SHARED>;
+
                        #cooling-cells = <2>;
 
                        l2_600: l2-cache {
 
                        qcom,freq-domain = <&cpufreq_hw 2>;
 
+                       operating-points-v2 = <&cpu7_opp_table>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>,
+                                       <&epss_l3 MASTER_EPSS_L3_APPS
+                                        &epss_l3 SLAVE_EPSS_L3_SHARED>;
+
                        #cooling-cells = <2>;
 
                        l2_700: l2-cache {
                                        cpu = <&cpu2>;
                                };
 
-                               core3 {
-                                       cpu = <&cpu3>;
-                               };
+                               core3 {
+                                       cpu = <&cpu3>;
+                               };
+
+                               core4 {
+                                       cpu = <&cpu4>;
+                               };
+
+                               core5 {
+                                       cpu = <&cpu5>;
+                               };
+
+                               core6 {
+                                       cpu = <&cpu6>;
+                               };
+
+                               core7 {
+                                       cpu = <&cpu7>;
+                               };
+                       };
+               };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       silver_cpu_sleep_0: cpu-sleep-0-0 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "silver-rail-power-collapse";
+                               arm,psci-suspend-param = <0x40000004>;
+                               entry-latency-us = <550>;
+                               exit-latency-us = <750>;
+                               min-residency-us = <6700>;
+                               local-timer-stop;
+                       };
+
+                       gold_cpu_sleep_0: cpu-sleep-1-0 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "gold-rail-power-collapse";
+                               arm,psci-suspend-param = <0x40000004>;
+                               entry-latency-us = <600>;
+                               exit-latency-us = <1300>;
+                               min-residency-us = <8136>;
+                               local-timer-stop;
+                       };
+
+                       gold_plus_cpu_sleep_0: cpu-sleep-2-0 {
+                               compatible = "arm,idle-state";
+                               idle-state-name = "gold-plus-rail-power-collapse";
+                               arm,psci-suspend-param = <0x40000004>;
+                               entry-latency-us = <500>;
+                               exit-latency-us = <1350>;
+                               min-residency-us = <7480>;
+                               local-timer-stop;
+                       };
+               };
+
+               domain-idle-states {
+                       cluster_sleep_0: cluster-sleep-0 {
+                               compatible = "domain-idle-state";
+                               arm,psci-suspend-param = <0x41000044>;
+                               entry-latency-us = <750>;
+                               exit-latency-us = <2350>;
+                               min-residency-us = <9144>;
+                       };
+
+                       cluster_sleep_1: cluster-sleep-1 {
+                               compatible = "domain-idle-state";
+                               arm,psci-suspend-param = <0x4100c344>;
+                               entry-latency-us = <2800>;
+                               exit-latency-us = <4400>;
+                               min-residency-us = <10150>;
+                       };
+               };
+       };
+
+       ete-0 {
+               compatible = "arm,embedded-trace-extension";
+
+               cpu = <&cpu0>;
+
+               out-ports {
+                       port {
+                               ete0_out_funnel_ete: endpoint {
+                                       remote-endpoint = <&funnel_ete_in_ete0>;
+                               };
+                       };
+               };
+       };
+
+       ete-1 {
+               compatible = "arm,embedded-trace-extension";
+
+               cpu = <&cpu1>;
+
+               out-ports {
+                       port {
+                               ete1_out_funnel_ete: endpoint {
+                                       remote-endpoint = <&funnel_ete_in_ete1>;
+                               };
+                       };
+               };
+       };
+
+       ete-2 {
+               compatible = "arm,embedded-trace-extension";
+
+               cpu = <&cpu2>;
+
+               out-ports {
+                       port {
+                               ete2_out_funnel_ete: endpoint {
+                                       remote-endpoint = <&funnel_ete_in_ete2>;
+                               };
+                       };
+               };
+       };
+
+       ete-3 {
+               compatible = "arm,embedded-trace-extension";
+
+               cpu = <&cpu3>;
+
+               out-ports {
+                       port {
+                               ete3_out_funnel_ete: endpoint {
+                                       remote-endpoint = <&funnel_ete_in_ete3>;
+                               };
+                       };
+               };
+       };
+
+       ete-4 {
+               compatible = "arm,embedded-trace-extension";
+
+               cpu = <&cpu4>;
+
+               out-ports {
+                       port {
+                               ete4_out_funnel_ete: endpoint {
+                                       remote-endpoint = <&funnel_ete_in_ete4>;
+                               };
+                       };
+               };
+       };
+
+       ete-5 {
+               compatible = "arm,embedded-trace-extension";
+
+               cpu = <&cpu5>;
+
+               out-ports {
+                       port {
+                               ete5_out_funnel_ete: endpoint {
+                                       remote-endpoint = <&funnel_ete_in_ete5>;
+                               };
+                       };
+               };
+       };
+
+       ete-6 {
+               compatible = "arm,embedded-trace-extension";
+
+               cpu = <&cpu6>;
+
+               out-ports {
+                       port {
+                               ete6_out_funnel_ete: endpoint {
+                                       remote-endpoint = <&funnel_ete_in_ete6>;
+                               };
+                       };
+               };
+       };
+
+       ete-7 {
+               compatible = "arm,embedded-trace-extension";
+
+               cpu = <&cpu7>;
+
+               out-ports {
+                       port {
+                               ete7_out_funnel_ete: endpoint {
+                                       remote-endpoint = <&funnel_ete_in_ete7>;
+                               };
+                       };
+               };
+       };
+
+       funnel-ete {
+               compatible = "arm,coresight-static-funnel";
+
+               in-ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               funnel_ete_in_ete0: endpoint {
+                                       remote-endpoint = <&ete0_out_funnel_ete>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               funnel_ete_in_ete1: endpoint {
+                                       remote-endpoint = <&ete1_out_funnel_ete>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               funnel_ete_in_ete2: endpoint {
+                                       remote-endpoint = <&ete2_out_funnel_ete>;
+                               };
+                       };
+
+                       port@3 {
+                               reg = <3>;
+
+                               funnel_ete_in_ete3: endpoint {
+                                       remote-endpoint = <&ete3_out_funnel_ete>;
+                               };
+                       };
+
+                       port@4 {
+                               reg = <4>;
+
+                               funnel_ete_in_ete4: endpoint {
+                                       remote-endpoint = <&ete4_out_funnel_ete>;
+                               };
+                       };
+
+                       port@5 {
+                               reg = <5>;
+
+                               funnel_ete_in_ete5: endpoint {
+                                       remote-endpoint = <&ete5_out_funnel_ete>;
+                               };
+                       };
+
+                       port@6 {
+                               reg = <6>;
+
+                               funnel_ete_in_ete6: endpoint {
+                                       remote-endpoint = <&ete6_out_funnel_ete>;
+                               };
+                       };
+
+                       port@7 {
+                               reg = <7>;
+
+                               funnel_ete_in_ete7: endpoint {
+                                       remote-endpoint = <&ete7_out_funnel_ete>;
+                               };
+                       };
+               };
+
+               out-ports {
+                       port {
+                               funnel_ete_out_funnel_apss: endpoint {
+                                       remote-endpoint = <&funnel_apss_in_funnel_ete>;
+                               };
+                       };
+               };
+       };
+
+       firmware {
+               scm: scm {
+                       compatible = "qcom,scm-sm8650", "qcom,scm";
+                       qcom,dload-mode = <&tcsr 0x19000>;
+                       interconnects = <&aggre2_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+               };
+       };
+
+       clk_virt: interconnect-0 {
+               compatible = "qcom,sm8650-clk-virt";
+               #interconnect-cells = <2>;
+               qcom,bcm-voters = <&apps_bcm_voter>;
+       };
+
+       mc_virt: interconnect-1 {
+               compatible = "qcom,sm8650-mc-virt";
+               #interconnect-cells = <2>;
+               qcom,bcm-voters = <&apps_bcm_voter>;
+       };
+
+       qup_opp_table_100mhz: opp-table-qup100mhz {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-100000000 {
+                       opp-hz = /bits/ 64 <100000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
+       qup_opp_table_120mhz: opp-table-qup120mhz {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-120000000 {
+                       opp-hz = /bits/ 64 <120000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
+       qup_opp_table_128mhz: opp-table-qup128mhz {
+               compatible = "operating-points-v2";
+
+               opp-75000000 {
+                       opp-hz = /bits/ 64 <75000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-128000000 {
+                       opp-hz = /bits/ 64 <128000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
+       qup_opp_table_240mhz: opp-table-qup240mhz {
+               compatible = "operating-points-v2";
+
+               opp-150000000 {
+                       opp-hz = /bits/ 64 <150000000>;
+                       required-opps = <&rpmhpd_opp_low_svs>;
+               };
+
+               opp-240000000 {
+                       opp-hz = /bits/ 64 <240000000>;
+                       required-opps = <&rpmhpd_opp_svs>;
+               };
+       };
+
+       memory@a0000000 {
+               device_type = "memory";
+               /* We expect the bootloader to fill in the size */
+               reg = <0 0xa0000000 0 0>;
+       };
+
+       cpu0_opp_table: opp-table-cpu0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-307200000 {
+                       opp-hz = /bits/ 64 <307200000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-364800000 {
+                       opp-hz = /bits/ 64 <364800000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-460800000 {
+                       opp-hz = /bits/ 64 <460800000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (384000 * 32)>;
+               };
+
+               opp-556800000 {
+                       opp-hz = /bits/ 64 <556800000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (499200 * 32)>;
+               };
+
+               opp-672000000 {
+                       opp-hz = /bits/ 64 <672000000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (499200 * 32)>;
+               };
+
+               opp-787200000 {
+                       opp-hz = /bits/ 64 <787200000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (729600 * 32)>;
+               };
+
+               opp-902400000 {
+                       opp-hz = /bits/ 64 <902400000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (844800 * 32)>;
+               };
+
+               opp-1017600000 {
+                       opp-hz = /bits/ 64 <1017600000>;
+                       opp-peak-kBps = <(466000 * 16) (547000 * 4) (940800 * 32)>;
+               };
+
+               opp-1132800000 {
+                       opp-hz = /bits/ 64 <1132800000>;
+                       opp-peak-kBps = <(466000 * 16) (547000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1248000000 {
+                       opp-hz = /bits/ 64 <1248000000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (1132800 * 32)>;
+               };
+
+               opp-1344000000 {
+                       opp-hz = /bits/ 64 <1344000000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1440000000 {
+                       opp-hz = /bits/ 64 <1440000000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1459200000 {
+                       opp-hz = /bits/ 64 <1459200000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1536000000 {
+                       opp-hz = /bits/ 64 <1536000000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (1440000 * 32)>;
+               };
+
+               opp-1574400000 {
+                       opp-hz = /bits/ 64 <1574400000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (1440000 * 32)>;
+               };
+
+               opp-1651200000 {
+                       opp-hz = /bits/ 64 <1651200000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1440000 * 32)>;
+               };
+
+               opp-1689600000 {
+                       opp-hz = /bits/ 64 <1689600000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1440000 * 32)>;
+               };
+
+               opp-1747200000 {
+                       opp-hz = /bits/ 64 <1747200000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1440000 * 32)>;
+               };
+
+               opp-1804800000 {
+                       opp-hz = /bits/ 64 <1804800000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1555200 * 32)>;
+               };
+
+               opp-1843200000 {
+                       opp-hz = /bits/ 64 <1843200000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1555200 * 32)>;
+               };
+
+               opp-1920000000 {
+                       opp-hz = /bits/ 64 <1920000000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1651200 * 32)>;
+               };
+
+               opp-1939200000 {
+                       opp-hz = /bits/ 64 <1939200000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1651200 * 32)>;
+               };
+
+               opp-2035200000 {
+                       opp-hz = /bits/ 64 <2035200000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1843200 * 32)>;
+               };
+
+               opp-2150400000 {
+                       opp-hz = /bits/ 64 <2150400000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (1843200 * 32)>;
+               };
+
+               opp-2265600000 {
+                       opp-hz = /bits/ 64 <2265600000>;
+                       opp-peak-kBps = <(600000 * 16) (1555000 * 4) (2035200 * 32)>;
+               };
+       };
+
+       cpu2_opp_table: opp-table-cpu2 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-460800000 {
+                       opp-hz = /bits/ 64 <460800000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-499200000 {
+                       opp-hz = /bits/ 64 <499200000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-576000000 {
+                       opp-hz = /bits/ 64 <576000000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-614400000 {
+                       opp-hz = /bits/ 64 <614400000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (499200 * 32)>;
+               };
+
+               opp-691200000 {
+                       opp-hz = /bits/ 64 <691200000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-729600000 {
+                       opp-hz = /bits/ 64 <729600000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-806400000 {
+                       opp-hz = /bits/ 64 <806400000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-844800000 {
+                       opp-hz = /bits/ 64 <844800000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-902400000 {
+                       opp-hz = /bits/ 64 <902400000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-960000000 {
+                       opp-hz = /bits/ 64 <960000000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (844800 * 32)>;
+               };
+
+               opp-1036800000 {
+                       opp-hz = /bits/ 64 <1036800000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1075200000 {
+                       opp-hz = /bits/ 64 <1075200000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1152000000 {
+                       opp-hz = /bits/ 64 <1152000000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1190400000 {
+                       opp-hz = /bits/ 64 <1190400000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1267200000 {
+                       opp-hz = /bits/ 64 <1267200000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1286400000 {
+                       opp-hz = /bits/ 64 <1286400000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1382400000 {
+                       opp-hz = /bits/ 64 <1382400000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1401600000 {
+                       opp-hz = /bits/ 64 <1401600000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1497600000 {
+                       opp-hz = /bits/ 64 <1497600000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1612800000 {
+                       opp-hz = /bits/ 64 <1612800000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1708800000 {
+                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1728000000 {
+                       opp-hz = /bits/ 64 <1728000000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1824000000 {
+                       opp-hz = /bits/ 64 <1824000000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1843200000 {
+                       opp-hz = /bits/ 64 <1843200000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1920000000 {
+                       opp-hz = /bits/ 64 <1920000000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1440000 * 32)>;
+               };
+
+               opp-1958400000 {
+                       opp-hz = /bits/ 64 <1958400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2035200000 {
+                       opp-hz = /bits/ 64 <2035200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2073600000 {
+                       opp-hz = /bits/ 64 <2073600000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2131200000 {
+                       opp-hz = /bits/ 64 <2131200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2188800000 {
+                       opp-hz = /bits/ 64 <2188800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2246400000 {
+                       opp-hz = /bits/ 64 <2246400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2304000000 {
+                       opp-hz = /bits/ 64 <2304000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2323200000 {
+                       opp-hz = /bits/ 64 <2323200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2380800000 {
+                       opp-hz = /bits/ 64 <2380800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2400000000 {
+                       opp-hz = /bits/ 64 <2400000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2438400000 {
+                       opp-hz = /bits/ 64 <2438400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2515200000 {
+                       opp-hz = /bits/ 64 <2515200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2572800000 {
+                       opp-hz = /bits/ 64 <2572800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1651200 * 32)>;
+               };
+
+               opp-2630400000 {
+                       opp-hz = /bits/ 64 <2630400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1651200 * 32)>;
+               };
+
+               opp-2707200000 {
+                       opp-hz = /bits/ 64 <2707200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1651200 * 32)>;
+               };
+
+               opp-2764800000 {
+                       opp-hz = /bits/ 64 <2764800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1843200 * 32)>;
+               };
+
+               opp-2841600000 {
+                       opp-hz = /bits/ 64 <2841600000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-2899200000 {
+                       opp-hz = /bits/ 64 <2899200000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-2956800000 {
+                       opp-hz = /bits/ 64 <2956800000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-3014400000 {
+                       opp-hz = /bits/ 64 <3014400000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-3072000000 {
+                       opp-hz = /bits/ 64 <3072000000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-3148800000 {
+                       opp-hz = /bits/ 64 <3148800000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (2035200 * 32)>;
+               };
+       };
+
+       cpu5_opp_table: opp-table-cpu5 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-460800000 {
+                       opp-hz = /bits/ 64 <460800000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-499200000 {
+                       opp-hz = /bits/ 64 <499200000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-576000000 {
+                       opp-hz = /bits/ 64 <576000000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-614400000 {
+                       opp-hz = /bits/ 64 <614400000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (499200 * 32)>;
+               };
+
+               opp-691200000 {
+                       opp-hz = /bits/ 64 <691200000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-729600000 {
+                       opp-hz = /bits/ 64 <729600000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-806400000 {
+                       opp-hz = /bits/ 64 <806400000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-844800000 {
+                       opp-hz = /bits/ 64 <844800000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-902400000 {
+                       opp-hz = /bits/ 64 <902400000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-960000000 {
+                       opp-hz = /bits/ 64 <960000000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (844800 * 32)>;
+               };
+
+               opp-1036800000 {
+                       opp-hz = /bits/ 64 <1036800000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1075200000 {
+                       opp-hz = /bits/ 64 <1075200000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1152000000 {
+                       opp-hz = /bits/ 64 <1152000000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1190400000 {
+                       opp-hz = /bits/ 64 <1190400000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1267200000 {
+                       opp-hz = /bits/ 64 <1267200000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1286400000 {
+                       opp-hz = /bits/ 64 <1286400000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1382400000 {
+                       opp-hz = /bits/ 64 <1382400000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1401600000 {
+                       opp-hz = /bits/ 64 <1401600000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1497600000 {
+                       opp-hz = /bits/ 64 <1497600000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1612800000 {
+                       opp-hz = /bits/ 64 <1612800000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1708800000 {
+                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1728000000 {
+                       opp-hz = /bits/ 64 <1728000000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1824000000 {
+                       opp-hz = /bits/ 64 <1824000000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1843200000 {
+                       opp-hz = /bits/ 64 <1843200000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1920000000 {
+                       opp-hz = /bits/ 64 <1920000000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1440000 * 32)>;
+               };
+
+               opp-1958400000 {
+                       opp-hz = /bits/ 64 <1958400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2035200000 {
+                       opp-hz = /bits/ 64 <2035200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2073600000 {
+                       opp-hz = /bits/ 64 <2073600000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2131200000 {
+                       opp-hz = /bits/ 64 <2131200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2188800000 {
+                       opp-hz = /bits/ 64 <2188800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2246400000 {
+                       opp-hz = /bits/ 64 <2246400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2304000000 {
+                       opp-hz = /bits/ 64 <2304000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2323200000 {
+                       opp-hz = /bits/ 64 <2323200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2380800000 {
+                       opp-hz = /bits/ 64 <2380800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2400000000 {
+                       opp-hz = /bits/ 64 <2400000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2438400000 {
+                       opp-hz = /bits/ 64 <2438400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2515200000 {
+                       opp-hz = /bits/ 64 <2515200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2572800000 {
+                       opp-hz = /bits/ 64 <2572800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1651200 * 32)>;
+               };
+
+               opp-2630400000 {
+                       opp-hz = /bits/ 64 <2630400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1651200 * 32)>;
+               };
+
+               opp-2707200000 {
+                       opp-hz = /bits/ 64 <2707200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1651200 * 32)>;
+               };
+
+               opp-2764800000 {
+                       opp-hz = /bits/ 64 <2764800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1843200 * 32)>;
+               };
+
+               opp-2841600000 {
+                       opp-hz = /bits/ 64 <2841600000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-2899200000 {
+                       opp-hz = /bits/ 64 <2899200000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-2956800000 {
+                       opp-hz = /bits/ 64 <2956800000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-3014400000 {
+                       opp-hz = /bits/ 64 <3014400000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-3072000000 {
+                       opp-hz = /bits/ 64 <3072000000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
+
+               opp-3148800000 {
+                       opp-hz = /bits/ 64 <3148800000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (2035200 * 32)>;
+               };
+       };
+
+       cpu7_opp_table: opp-table-cpu7 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-480000000 {
+                       opp-hz = /bits/ 64 <480000000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-499200000 {
+                       opp-hz = /bits/ 64 <499200000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-576000000 {
+                       opp-hz = /bits/ 64 <576000000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (307200 * 32)>;
+               };
+
+               opp-614400000 {
+                       opp-hz = /bits/ 64 <614400000>;
+                       opp-peak-kBps = <(300000 * 16) (547000 * 4) (499200 * 32)>;
+               };
+
+               opp-672000000 {
+                       opp-hz = /bits/ 64 <672000000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-729600000 {
+                       opp-hz = /bits/ 64 <729600000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-787200000 {
+                       opp-hz = /bits/ 64 <787200000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-844800000 {
+                       opp-hz = /bits/ 64 <844800000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-902400000 {
+                       opp-hz = /bits/ 64 <902400000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-940800000 {
+                       opp-hz = /bits/ 64 <940800000>;
+                       opp-peak-kBps = <(466000 * 16) (768000 * 4) (499200 * 32)>;
+               };
+
+               opp-1017600000 {
+                       opp-hz = /bits/ 64 <1017600000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1075200000 {
+                       opp-hz = /bits/ 64 <1075200000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1132800000 {
+                       opp-hz = /bits/ 64 <1132800000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (844800 * 32)>;
+               };
+
+               opp-1190400000 {
+                       opp-hz = /bits/ 64 <1190400000>;
+                       opp-peak-kBps = <(466000 * 16) (1555000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1248000000 {
+                       opp-hz = /bits/ 64 <1248000000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1305600000 {
+                       opp-hz = /bits/ 64 <1305600000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1363200000 {
+                       opp-hz = /bits/ 64 <1363200000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1036800 * 32)>;
+               };
+
+               opp-1420800000 {
+                       opp-hz = /bits/ 64 <1420800000>;
+                       opp-peak-kBps = <(600000 * 16) (2092000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1478400000 {
+                       opp-hz = /bits/ 64 <1478400000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1555200000 {
+                       opp-hz = /bits/ 64 <1555200000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1593600000 {
+                       opp-hz = /bits/ 64 <1593600000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1670400000 {
+                       opp-hz = /bits/ 64 <1670400000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1708800000 {
+                       opp-hz = /bits/ 64 <1708800000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1804800000 {
+                       opp-hz = /bits/ 64 <1804800000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1824000000 {
+                       opp-hz = /bits/ 64 <1824000000>;
+                       opp-peak-kBps = <(806000 * 16) (2736000 * 4) (1248000 * 32)>;
+               };
+
+               opp-1939200000 {
+                       opp-hz = /bits/ 64 <1939200000>;
+                       opp-peak-kBps = <(806000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2035200000 {
+                       opp-hz = /bits/ 64 <2035200000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2073600000 {
+                       opp-hz = /bits/ 64 <2073600000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
+
+               opp-2112000000 {
+                       opp-hz = /bits/ 64 <2112000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
 
-                               core4 {
-                                       cpu = <&cpu4>;
-                               };
+               opp-2169600000 {
+                       opp-hz = /bits/ 64 <2169600000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
 
-                               core5 {
-                                       cpu = <&cpu5>;
-                               };
+               opp-2208000000 {
+                       opp-hz = /bits/ 64 <2208000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
 
-                               core6 {
-                                       cpu = <&cpu6>;
-                               };
+               opp-2246400000 {
+                       opp-hz = /bits/ 64 <2246400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
 
-                               core7 {
-                                       cpu = <&cpu7>;
-                               };
-                       };
+               opp-2304000000 {
+                       opp-hz = /bits/ 64 <2304000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
                };
 
-               idle-states {
-                       entry-method = "psci";
+               opp-2342400000 {
+                       opp-hz = /bits/ 64 <2342400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
 
-                       silver_cpu_sleep_0: cpu-sleep-0-0 {
-                               compatible = "arm,idle-state";
-                               idle-state-name = "silver-rail-power-collapse";
-                               arm,psci-suspend-param = <0x40000004>;
-                               entry-latency-us = <550>;
-                               exit-latency-us = <750>;
-                               min-residency-us = <6700>;
-                               local-timer-stop;
-                       };
+               opp-2380800000 {
+                       opp-hz = /bits/ 64 <2380800000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
 
-                       gold_cpu_sleep_0: cpu-sleep-1-0 {
-                               compatible = "arm,idle-state";
-                               idle-state-name = "gold-rail-power-collapse";
-                               arm,psci-suspend-param = <0x40000004>;
-                               entry-latency-us = <600>;
-                               exit-latency-us = <1300>;
-                               min-residency-us = <8136>;
-                               local-timer-stop;
-                       };
+               opp-2438400000 {
+                       opp-hz = /bits/ 64 <2438400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
 
-                       gold_plus_cpu_sleep_0: cpu-sleep-2-0 {
-                               compatible = "arm,idle-state";
-                               idle-state-name = "gold-plus-rail-power-collapse";
-                               arm,psci-suspend-param = <0x40000004>;
-                               entry-latency-us = <500>;
-                               exit-latency-us = <1350>;
-                               min-residency-us = <7480>;
-                               local-timer-stop;
-                       };
+               opp-2457600000 {
+                       opp-hz = /bits/ 64 <2457600000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
                };
 
-               domain-idle-states {
-                       cluster_sleep_0: cluster-sleep-0 {
-                               compatible = "domain-idle-state";
-                               arm,psci-suspend-param = <0x41000044>;
-                               entry-latency-us = <750>;
-                               exit-latency-us = <2350>;
-                               min-residency-us = <9144>;
-                       };
+               opp-2496000000 {
+                       opp-hz = /bits/ 64 <2496000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
+               };
 
-                       cluster_sleep_1: cluster-sleep-1 {
-                               compatible = "domain-idle-state";
-                               arm,psci-suspend-param = <0x4100c344>;
-                               entry-latency-us = <2800>;
-                               exit-latency-us = <4400>;
-                               min-residency-us = <10150>;
-                       };
+               opp-2553600000 {
+                       opp-hz = /bits/ 64 <2553600000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1440000 * 32)>;
                };
-       };
 
-       ete0 {
-               compatible = "arm,embedded-trace-extension";
+               opp-2630400000 {
+                       opp-hz = /bits/ 64 <2630400000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1651200 * 32)>;
+               };
 
-               cpu = <&cpu0>;
+               opp-2688000000 {
+                       opp-hz = /bits/ 64 <2688000000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1651200 * 32)>;
+               };
 
-               out-ports {
-                       port {
-                               ete0_out_funnel_ete: endpoint {
-                                       remote-endpoint = <&funnel_ete_in_ete0>;
-                               };
-                       };
+               opp-2745600000 {
+                       opp-hz = /bits/ 64 <2745600000>;
+                       opp-peak-kBps = <(933000 * 16) (3686000 * 4) (1843200 * 32)>;
                };
-       };
 
-       funnel-ete {
-               compatible = "arm,coresight-static-funnel";
+               opp-2803200000 {
+                       opp-hz = /bits/ 64 <2803200000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
 
-               in-ports {
-                       port {
-                               funnel_ete_in_ete0: endpoint {
-                                       remote-endpoint = <&ete0_out_funnel_ete>;
-                               };
-                       };
+               opp-2880000000 {
+                       opp-hz = /bits/ 64 <2880000000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
                };
 
-               out-ports {
-                       port {
-                               funnel_ete_out_funnel_apss: endpoint {
-                                       remote-endpoint = <&funnel_apss_in_funnel_ete>;
-                               };
-                       };
+               opp-2937600000 {
+                       opp-hz = /bits/ 64 <2937600000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
                };
-       };
 
-       firmware {
-               scm: scm {
-                       compatible = "qcom,scm-sm8650", "qcom,scm";
-                       qcom,dload-mode = <&tcsr 0x19000>;
-                       interconnects = <&aggre2_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+               opp-2995200000 {
+                       opp-hz = /bits/ 64 <2995200000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
                };
-       };
 
-       clk_virt: interconnect-0 {
-               compatible = "qcom,sm8650-clk-virt";
-               #interconnect-cells = <2>;
-               qcom,bcm-voters = <&apps_bcm_voter>;
-       };
+               opp-3052800000 {
+                       opp-hz = /bits/ 64 <3052800000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (1843200 * 32)>;
+               };
 
-       mc_virt: interconnect-1 {
-               compatible = "qcom,sm8650-mc-virt";
-               #interconnect-cells = <2>;
-               qcom,bcm-voters = <&apps_bcm_voter>;
-       };
+               opp-3187200000 {
+                       opp-hz = /bits/ 64 <3187200000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (2035200 * 32)>;
+               };
 
-       memory@a0000000 {
-               device_type = "memory";
-               /* We expect the bootloader to fill in the size */
-               reg = <0 0xa0000000 0 0>;
+               opp-3302400000 {
+                       opp-hz = /bits/ 64 <3302400000>;
+                       opp-peak-kBps = <(1066000 * 16) (4224000 * 4) (2035200 * 32)>;
+               };
        };
 
        pmu-a520 {
                compatible = "arm,cortex-a520-pmu";
-               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_cluster0>;
        };
 
        pmu-a720 {
                compatible = "arm,cortex-a720-pmu";
-               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_cluster1>;
        };
 
        pmu-x4 {
                compatible = "arm,cortex-x4-pmu";
-               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
+               interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_cluster2>;
        };
 
        psci {
                cpu_pd2: power-domain-cpu2 {
                        #power-domain-cells = <0>;
                        power-domains = <&cluster_pd>;
-                       domain-idle-states = <&silver_cpu_sleep_0>;
+                       domain-idle-states = <&gold_cpu_sleep_0>;
                };
 
                cpu_pd3: power-domain-cpu3 {
                        compatible = "qcom,sm8650-ipcc", "qcom,ipcc";
                        reg = <0 0x00406000 0 0x1000>;
 
-                       interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-controller;
                        #interrupt-cells = <3>;
 
                        compatible = "qcom,sm8650-gpi-dma", "qcom,sm6350-gpi-dma";
                        reg = <0 0x00800000 0 0x60000>;
 
-                       interrupts = <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 598 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 599 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 588 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 589 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 590 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 591 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 592 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 593 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 594 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 595 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 596 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 598 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 599 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        dma-channels = <12>;
                        dma-channel-mask = <0x3f>;
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00880000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 0 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 0 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00880000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S0_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 0 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 0 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00884000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 1 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 1 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00884000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 583 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S1_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 1 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 1 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00888000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 2 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 2 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00888000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 584 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S2_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 2 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 2 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x0088c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 3 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 3 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x0088c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 585 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S3_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma2 0 3 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 3 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00890000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 4 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 4 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00890000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 586 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S4_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 4 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 4 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00894000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 5 QCOM_GPI_I2C>,
                                       <&gpi_dma2 1 5 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00894000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 587 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma2 0 5 QCOM_GPI_SPI>,
                                       <&gpi_dma2 1 5 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-uart";
                                reg = <0 0x00898000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_128mhz>;
+
                                pinctrl-0 = <&qup_uart14_default>, <&qup_uart14_cts_rts>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-debug-uart";
                                reg = <0 0x0089c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 462 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP2_S7_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                pinctrl-0 = <&qup_uart15_default>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x00980000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S0_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c0_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x00984000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S1_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c1_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x00988000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S2_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c2_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x0098c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S3_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c3_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x00990000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S4_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c4_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x00994000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S5_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c5_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x00998000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 470 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S6_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c6_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x0099c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 471 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S7_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c7_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x009a0000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 472 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S8_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c8_data_clk>;
                                pinctrl-names = "default";
 
                                compatible = "qcom,geni-i2c-master-hub";
                                reg = <0 0x009a4000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_I2C_S9_CLK>,
                                         <&gcc GCC_QUPV3_I2C_CORE_CLK>;
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_I2C QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               required-opps = <&rpmhpd_opp_low_svs>;
+
                                pinctrl-0 = <&hub_i2c9_data_clk>;
                                pinctrl-names = "default";
 
                        compatible = "qcom,sm8650-gpi-dma", "qcom,sm6350-gpi-dma";
                        reg = <0 0x00a00000 0 0x60000>;
 
-                       interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 294 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 295 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 296 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 297 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        dma-channels = <12>;
                        dma-channel-mask = <0xc>;
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a80000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 0 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 0 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00a80000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S0_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 0 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 0 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a84000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 1 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 1 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00a84000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S1_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 1 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 1 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a88000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_240mhz>;
+
                                dmas = <&gpi_dma1 0 2 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 2 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00a88000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S2_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_240mhz>;
+
                                dmas = <&gpi_dma1 0 2 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 2 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a8c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 3 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 3 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00a8c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 356 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S3_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 3 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 3 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a90000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 4 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 4 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00a90000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S4_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 4 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 4 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a94000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 5 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 5 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00a94000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S5_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 5 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 5 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a98000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 6 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 6 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00a98000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_120mhz>;
+
                                dmas = <&gpi_dma1 0 6 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 6 QCOM_GPI_SPI>;
                                dma-names = "tx",
                                compatible = "qcom,geni-i2c";
                                reg = <0 0x00a9c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 579 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 579 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S7_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 7 QCOM_GPI_I2C>,
                                       <&gpi_dma1 1 7 QCOM_GPI_I2C>;
                                dma-names = "tx",
                                compatible = "qcom,geni-spi";
                                reg = <0 0x00a9c000 0 0x4000>;
 
-                               interrupts = <GIC_SPI 579 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 579 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                clocks = <&gcc GCC_QUPV3_WRAP1_S7_CLK>;
                                clock-names = "se";
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt  SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                                                     "qup-config",
                                                     "qup-memory";
 
+                               power-domains = <&rpmhpd RPMHPD_CX>;
+
+                               operating-points-v2 = <&qup_opp_table_100mhz>;
+
                                dmas = <&gpi_dma1 0 7 QCOM_GPI_SPI>,
                                       <&gpi_dma1 1 7 QCOM_GPI_SPI>;
                                dma-names = "tx",
                              <0 0x60100000 0 0x100000>;
                        reg-names = "parf", "dbi", "elbi", "atu", "config";
 
-                       interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
 
                        interconnects = <&pcie_noc MASTER_PCIE_0 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &cnoc_main SLAVE_PCIE_0 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc_main SLAVE_PCIE_0 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "pcie-mem",
                                             "cpu-pcie";
 
                        power-domains = <&gcc PCIE_0_GDSC>;
 
+                       operating-points-v2 = <&pcie0_opp_table>;
+
                        iommu-map = <0     &apps_smmu 0x1400 0x1>,
                                    <0x100 &apps_smmu 0x1401 0x1>;
 
-                       interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 2 &intc 0 0 0 150 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 3 &intc 0 0 0 151 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 4 &intc 0 0 0 152 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH 0>,
+                                       <0 0 0 2 &intc 0 0 0 150 IRQ_TYPE_LEVEL_HIGH 0>,
+                                       <0 0 0 3 &intc 0 0 0 151 IRQ_TYPE_LEVEL_HIGH 0>,
+                                       <0 0 0 4 &intc 0 0 0 152 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        #interrupt-cells = <1>;
 
 
                        status = "disabled";
 
+                       pcie0_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               /* GEN 1 x1 */
+                               opp-2500000 {
+                                       opp-hz = /bits/ 64 <2500000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <250000 1>;
+                               };
+
+                               /* GEN 1 x2 and GEN 2 x1 */
+                               opp-5000000 {
+                                       opp-hz = /bits/ 64 <5000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <500000 1>;
+                               };
+
+                               /* GEN 2 x2 */
+                               opp-10000000 {
+                                       opp-hz = /bits/ 64 <10000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <1000000 1>;
+                               };
+
+                               /* GEN 3 x1 */
+                               opp-8000000 {
+                                       opp-hz = /bits/ 64 <8000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <984500 1>;
+                               };
+
+                               /* GEN 3 x2 */
+                               opp-16000000 {
+                                       opp-hz = /bits/ 64 <16000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <1969000 1>;
+                               };
+                       };
+
                        pcieport0: pcie@0 {
                                device_type = "pci";
                                reg = <0x0 0x0 0x0 0x0 0x0>;
                                    "atu",
                                    "config";
 
-                       interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 312 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 313 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 314 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 374 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 375 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "msi0",
                                          "msi1",
                                          "msi2",
 
                        interconnects = <&pcie_noc MASTER_PCIE_1 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &cnoc_main SLAVE_PCIE_1 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc_main SLAVE_PCIE_1 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "pcie-mem",
                                             "cpu-pcie";
 
                        power-domains = <&gcc PCIE_1_GDSC>;
 
+                       operating-points-v2 = <&pcie1_opp_table>;
+
                        iommu-map = <0     &apps_smmu 0x1480 0x1>,
                                    <0x100 &apps_smmu 0x1481 0x1>;
 
-                       interrupt-map = <0 0 0 1 &intc 0 0 0 434 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 2 &intc 0 0 0 435 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 3 &intc 0 0 0 438 IRQ_TYPE_LEVEL_HIGH>,
-                                       <0 0 0 4 &intc 0 0 0 439 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-map = <0 0 0 1 &intc 0 0 0 434 IRQ_TYPE_LEVEL_HIGH 0>,
+                                       <0 0 0 2 &intc 0 0 0 435 IRQ_TYPE_LEVEL_HIGH 0>,
+                                       <0 0 0 3 &intc 0 0 0 438 IRQ_TYPE_LEVEL_HIGH 0>,
+                                       <0 0 0 4 &intc 0 0 0 439 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-map-mask = <0 0 0 0x7>;
                        #interrupt-cells = <1>;
 
 
                        status = "disabled";
 
+                       pcie1_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               /* GEN 1 x1 */
+                               opp-2500000 {
+                                       opp-hz = /bits/ 64 <2500000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <250000 1>;
+                               };
+
+                               /* GEN 1 x2 and GEN 2 x1 */
+                               opp-5000000 {
+                                       opp-hz = /bits/ 64 <5000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <500000 1>;
+                               };
+
+                               /* GEN 2 x2 */
+                               opp-10000000 {
+                                       opp-hz = /bits/ 64 <10000000>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                                       opp-peak-kBps = <1000000 1>;
+                               };
+
+                               /* GEN 3 x1 */
+                               opp-8000000 {
+                                       opp-hz = /bits/ 64 <8000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <984500 1>;
+                               };
+
+                               /* GEN 3 x2 and GEN 4 x1 */
+                               opp-16000000 {
+                                       opp-hz = /bits/ 64 <16000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <1969000 1>;
+                               };
+
+                               /* GEN 4 x2 */
+                               opp-32000000 {
+                                       opp-hz = /bits/ 64 <32000000>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                                       opp-peak-kBps = <3938000 1>;
+                               };
+                       };
+
                        pcie@0 {
                                device_type = "pci";
                                reg = <0x0 0x0 0x0 0x0 0x0>;
                        compatible = "qcom,bam-v1.7.0";
                        reg = <0 0x01dc4000 0 0x28000>;
 
-                       interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        #dma-cells = <1>;
 
                                 <&apps_smmu 0x481 0>;
 
                        qcom,ee = <0>;
+                       qcom,num-ees = <4>;
+                       num-channels = <20>;
                        qcom,controlled-remotely;
                };
 
                        compatible = "qcom,sm8650-ufshc", "qcom,ufshc", "jedec,ufs-2.0";
                        reg = <0 0x01d84000 0 0x3000>;
 
-                       interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        clocks = <&gcc GCC_UFS_PHY_AXI_CLK>,
                                 <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
                                      "tx_lane0_sync_clk",
                                      "rx_lane0_sync_clk",
                                      "rx_lane1_sync_clk";
-                       freq-table-hz = <100000000 403000000>,
-                                       <0 0>,
-                                       <0 0>,
-                                       <100000000 403000000>,
-                                       <100000000 403000000>,
-                                       <0 0>,
-                                       <0 0>,
-                                       <0 0>;
 
                        resets = <&gcc GCC_UFS_PHY_BCR>;
                        reset-names = "rst";
 
                        interconnects = <&aggre1_noc MASTER_UFS_MEM QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_UFS_MEM_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "ufs-ddr",
                                             "cpu-ufs";
 
                        power-domains = <&gcc UFS_PHY_GDSC>;
                        required-opps = <&rpmhpd_opp_nom>;
 
+                       operating-points-v2 = <&ufs_opp_table>;
+
                        iommus = <&apps_smmu 0x60 0>;
 
                        lanes-per-direction = <2>;
                        #reset-cells = <1>;
 
                        status = "disabled";
+
+                       ufs_opp_table: opp-table {
+                               compatible = "operating-points-v2";
+
+                               opp-100000000 {
+                                       opp-hz = /bits/ 64 <100000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <100000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>;
+                                       required-opps = <&rpmhpd_opp_low_svs>;
+                               };
+
+                               opp-201500000 {
+                                       opp-hz = /bits/ 64 <201500000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <201500000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>;
+                                       required-opps = <&rpmhpd_opp_svs>;
+                               };
+
+                               opp-403000000 {
+                                       opp-hz = /bits/ 64 <403000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <403000000>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>,
+                                                /bits/ 64 <0>;
+                                       required-opps = <&rpmhpd_opp_nom>;
+                               };
+                       };
                };
 
                ice: crypto@1d88000 {
                                    "cx_mem",
                                    "cx_dbgc";
 
-                       interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        iommus = <&adreno_smmu 0 0x0>,
                                 <&adreno_smmu 1 0x0>;
                              <0x0 0x0b280000 0x0 0x10000>;
                        reg-names = "gmu", "rscc", "gmu_pdc";
 
-                       interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "hfi", "gmu";
 
                        clocks = <&gpucc GPU_CC_AHB_CLK>,
                        reg = <0x0 0x03da0000 0x0 0x40000>;
                        #iommu-cells = <2>;
                        #global-interrupts = <1>;
-                       interrupts = <GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 677 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 681 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 682 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 683 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 684 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 685 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 686 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 687 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 476 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 574 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 575 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 576 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 577 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 659 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 661 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 664 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 665 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 666 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 668 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 669 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 699 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 673 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 677 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 678 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 679 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 680 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 681 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 682 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 683 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 684 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 685 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 686 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 687 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 476 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 574 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 575 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 576 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 577 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 659 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 661 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 664 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 665 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 666 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 668 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 669 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 699 IRQ_TYPE_LEVEL_HIGH 0>;
                        clocks = <&gpucc GPU_CC_HLOS1_VOTE_GPU_SMMU_CLK>,
                                 <&gcc GCC_GPU_MEMNOC_GFX_CLK>,
                                 <&gcc GCC_GPU_SNOC_DVM_GFX_CLK>,
                                    "ipa-shared",
                                    "gsi";
 
-                       interrupts-extended = <&intc GIC_SPI 654 IRQ_TYPE_EDGE_RISING>,
-                                             <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>,
+                       interrupts-extended = <&intc GIC_SPI 654 IRQ_TYPE_EDGE_RISING 0>,
+                                             <&intc GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH 0>,
                                              <&ipa_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
                                              <&ipa_smp2p_in 1 IRQ_TYPE_EDGE_RISING>;
                        interrupt-names = "ipa",
                        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 &config_noc SLAVE_IPA_CFG 0>;
+                       interconnects = <&aggre2_noc MASTER_IPA QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_IPA_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "memory",
                                             "config";
 
                        compatible = "qcom,sm8650-mpss-pas";
                        reg = <0x0 0x04080000 0x0 0x10000>;
 
-                       interrupts-extended = <&intc GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
+                       interrupts-extended = <&intc GIC_SPI 264 IRQ_TYPE_EDGE_RISING 0>,
                                              <&smp2p_modem_in 0 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_modem_in 1 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_modem_in 2 IRQ_TYPE_EDGE_RISING>,
                swr3: soundwire@6ab0000 {
                        compatible = "qcom,soundwire-v2.0.0";
                        reg = <0 0x06ab0000 0 0x10000>;
-                       interrupts = <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 171 IRQ_TYPE_LEVEL_HIGH 0>;
                        clocks = <&lpass_wsa2macro>;
                        clock-names = "iface";
                        label = "WSA2";
                swr1: soundwire@6ad0000 {
                        compatible = "qcom,soundwire-v2.0.0";
                        reg = <0 0x06ad0000 0 0x10000>;
-                       interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH 0>;
                        clocks = <&lpass_rxmacro>;
                        clock-names = "iface";
                        label = "RX";
                swr0: soundwire@6b10000 {
                        compatible = "qcom,soundwire-v2.0.0";
                        reg = <0 0x06b10000 0 0x10000>;
-                       interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH 0>;
                        clocks = <&lpass_wsamacro>;
                        clock-names = "iface";
                        label = "WSA";
                swr2: soundwire@6d30000 {
                        compatible = "qcom,soundwire-v2.0.0";
                        reg = <0 0x06d30000 0 0x10000>;
-                       interrupts = <GIC_SPI 496 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 520 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 496 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 520 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "core", "wakeup";
                        clocks = <&lpass_txmacro>;
                        clock-names = "iface";
                        compatible = "qcom,sm8650-sdhci", "qcom,sdhci-msm-v5";
                        reg = <0 0x08804000 0 0x1000>;
 
-                       interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 207 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "hc_irq",
                                          "pwr_irq";
 
 
                        interconnects = <&aggre2_noc MASTER_SDCC_2 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_SDCC_2 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_SDCC_2 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "sdhc-ddr",
                                             "cpu-sdhc";
 
                cci0: cci@ac15000 {
                        compatible = "qcom,sm8650-cci", "qcom,msm8996-cci";
                        reg = <0 0x0ac15000 0 0x1000>;
-                       interrupts = <GIC_SPI 426 IRQ_TYPE_EDGE_RISING>;
+                       interrupts = <GIC_SPI 426 IRQ_TYPE_EDGE_RISING 0>;
                        power-domains = <&camcc CAM_CC_TITAN_TOP_GDSC>;
                        clocks = <&camcc CAM_CC_CAMNOC_AXI_NRT_CLK>,
                                 <&camcc CAM_CC_CPAS_AHB_CLK>,
                cci1: cci@ac16000 {
                        compatible = "qcom,sm8650-cci", "qcom,msm8996-cci";
                        reg = <0 0x0ac16000 0 0x1000>;
-                       interrupts = <GIC_SPI 427 IRQ_TYPE_EDGE_RISING>;
+                       interrupts = <GIC_SPI 427 IRQ_TYPE_EDGE_RISING 0>;
                        power-domains = <&camcc CAM_CC_TITAN_TOP_GDSC>;
                        clocks = <&camcc CAM_CC_CAMNOC_AXI_NRT_CLK>,
                                 <&camcc CAM_CC_CPAS_AHB_CLK>,
                cci2: cci@ac17000 {
                        compatible = "qcom,sm8650-cci", "qcom,msm8996-cci";
                        reg = <0 0x0ac17000 0 0x1000>;
-                       interrupts = <GIC_SPI 428 IRQ_TYPE_EDGE_RISING>;
+                       interrupts = <GIC_SPI 428 IRQ_TYPE_EDGE_RISING 0>;
                        power-domains = <&camcc CAM_CC_TITAN_TOP_GDSC>;
                        clocks = <&camcc CAM_CC_CAMNOC_AXI_NRT_CLK>,
                                 <&camcc CAM_CC_CPAS_AHB_CLK>,
                        reg = <0 0x0ae00000 0 0x1000>;
                        reg-names = "mdss";
 
-                       interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
                                 <&gcc GCC_DISP_HF_AXI_CLK>,
                        resets = <&dispcc DISP_CC_MDSS_CORE_BCR>;
 
                        interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ALWAYS
-                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
-                       interconnect-names = "mdp0-mem";
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       interconnect-names = "mdp0-mem",
+                                            "cpu-cfg";
 
                        power-domains = <&dispcc MDSS_GDSC>;
 
                        mdss_mdp: display-controller@ae01000 {
                                compatible = "qcom,sm8650-dpu";
                                reg = <0 0x0ae01000 0 0x8f000>,
-                                     <0 0x0aeb0000 0 0x2008>;
+                                     <0 0x0aeb0000 0 0x3000>;
                                reg-names = "mdp",
                                            "vbif";
 
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi0_phy 0>,
-                                                        <&mdss_dsi0_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&mdss_dsi_opp_table>;
 
 
                                assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
                                                  <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
-                               assigned-clock-parents = <&mdss_dsi1_phy 0>,
-                                                        <&mdss_dsi1_phy 1>;
+                               assigned-clock-parents = <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                                        <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>;
 
                                operating-points-v2 = <&mdss_dsi_opp_table>;
 
                                 <&bi_tcxo_ao_div2>,
                                 <&gcc GCC_DISP_AHB_CLK>,
                                 <&sleep_clk>,
-                                <&mdss_dsi0_phy 0>,
-                                <&mdss_dsi0_phy 1>,
-                                <&mdss_dsi1_phy 0>,
-                                <&mdss_dsi1_phy 1>,
+                                <&mdss_dsi0_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi0_phy DSI_PIXEL_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_BYTE_PLL_CLK>,
+                                <&mdss_dsi1_phy DSI_PIXEL_PLL_CLK>,
                                 <&usb_dp_qmpphy QMP_USB43DP_DP_LINK_CLK>,
                                 <&usb_dp_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>,
                                 <0>, /* dp1 */
                        compatible = "qcom,sm8650-dwc3", "qcom,dwc3";
                        reg = <0 0x0a6f8800 0 0x400>;
 
-                       interrupts-extended = <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
-                                             <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
+                       interrupts-extended = <&intc GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH 0>,
+                                             <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH 0>,
                                              <&pdc 14 IRQ_TYPE_EDGE_RISING>,
                                              <&pdc 15 IRQ_TYPE_EDGE_RISING>,
                                              <&pdc 17 IRQ_TYPE_LEVEL_HIGH>;
 
                        resets = <&gcc GCC_USB30_PRIM_BCR>;
 
+                       interconnects = <&aggre1_noc MASTER_USB3_0 QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_USB3_0 QCOM_ICC_TAG_ACTIVE_ONLY>;
+                       interconnect-names = "usb-ddr",
+                                            "apps-usb";
+
                        power-domains = <&gcc USB30_PRIM_GDSC>;
                        required-opps = <&rpmhpd_opp_nom>;
 
                                compatible = "snps,dwc3";
                                reg = <0 0x0a600000 0 0xcd00>;
 
-                               interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                iommus = <&apps_smmu 0x40 0>;
 
                        reg = <0 0x0c228000 0 0x1000>, /* TM */
                              <0 0x0c222000 0 0x1000>; /* SROT */
 
-                       interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 640 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 506 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 640 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "uplow",
                                          "critical";
 
                        reg = <0 0x0c229000 0 0x1000>, /* TM */
                              <0 0x0c223000 0 0x1000>; /* SROT */
 
-                       interrupts = <GIC_SPI 507 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 641 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 507 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 641 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "uplow",
                                          "critical";
 
                        reg = <0 0x0c22a000 0 0x1000>, /* TM */
                              <0 0x0c224000 0 0x1000>; /* SROT */
 
-                       interrupts = <GIC_SPI 508 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 642 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 508 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 642 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "uplow",
                                          "critical";
 
                        compatible = "qcom,sm8650-tlmm";
                        reg = <0 0x0f100000 0 0x300000>;
 
-                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        gpio-controller;
                        #gpio-cells = <2>;
                        compatible = "qcom,sm8650-smmu-500", "qcom,smmu-500", "arm,mmu-500";
                        reg = <0 0x15000000 0 0x100000>;
 
-                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 412 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 706 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 689 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 690 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 691 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 692 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 693 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 694 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 695 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 696 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 316 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 341 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 342 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 399 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 401 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 402 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 403 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 404 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 405 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 407 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 408 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 409 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 418 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 412 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 706 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 689 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 690 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 691 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 692 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 693 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 694 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 695 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 696 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        #iommu-cells = <2>;
                        #global-interrupts = <1>;
                        reg = <0 0x17100000 0 0x10000>,         /* GICD */
                              <0 0x17180000 0 0x200000>;        /* GICR * 8 */
 
-                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW 0>;
 
-                       #interrupt-cells = <3>;
+                       #interrupt-cells = <4>;
                        interrupt-controller;
 
                        #redistributor-regions = <1>;
                        #size-cells = <2>;
                        ranges;
 
+                       ppi-partitions {
+                               ppi_cluster0: interrupt-partition-0 {
+                                       affinity = <&cpu0 &cpu1>;
+                               };
+
+                               ppi_cluster1: interrupt-partition-1 {
+                                       affinity = <&cpu2 &cpu3 &cpu4 &cpu5 &cpu6>;
+                               };
+
+                               ppi_cluster2: interrupt-partition-2 {
+                                       affinity = <&cpu7>;
+                               };
+                       };
+
                        gic_its: msi-controller@17140000 {
                                compatible = "arm,gic-v3-its";
                                reg = <0 0x17140000 0 0x20000>;
                                reg = <0x17421000 0x1000>,
                                      <0x17422000 0x1000>;
 
-                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
-                                            <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH 0>,
+                                            <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                frame-number = <0>;
                        };
                        frame@17423000 {
                                reg = <0x17423000 0x1000>;
 
-                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                frame-number = <1>;
 
                        frame@17425000 {
                                reg = <0x17425000 0x1000>;
 
-                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                frame-number = <2>;
 
                        frame@17427000 {
                                reg = <0x17427000 0x1000>;
 
-                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                frame-number = <3>;
 
                        frame@17429000 {
                                reg = <0x17429000 0x1000>;
 
-                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                frame-number = <4>;
 
                        frame@1742b000 {
                                reg = <0x1742b000 0x1000>;
 
-                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                frame-number = <5>;
 
                        frame@1742d000 {
                                reg = <0x1742d000 0x1000>;
 
-                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH 0>;
 
                                frame-number = <6>;
 
                                    "drv-1",
                                    "drv-2";
 
-                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        power-domains = <&cluster_pd>;
 
                        };
                };
 
+               epss_l3: interconnect@17d90000 {
+                       compatible = "qcom,sm8650-epss-l3", "qcom,epss-l3";
+                       reg = <0 0x17d90000 0 0x1000>;
+
+                       clocks = <&bi_tcxo_div2>, <&gcc GCC_GPLL0>;
+                       clock-names = "xo", "alternate";
+
+                       #interconnect-cells = <1>;
+               };
+
                cpufreq_hw: cpufreq@17d91000 {
                        compatible = "qcom,sm8650-cpufreq-epss", "qcom,cpufreq-epss";
                        reg = <0 0x17d91000 0 0x1000>,
                                    "freq-domain2",
                                    "freq-domain3";
 
-                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 738 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH 0>,
+                                    <GIC_SPI 738 IRQ_TYPE_LEVEL_HIGH 0>;
                        interrupt-names = "dcvsh-irq-0",
                                          "dcvsh-irq-1",
                                          "dcvsh-irq-2",
                        compatible = "qcom,sm8650-llcc-bwmon", "qcom,sc7280-llcc-bwmon";
                        reg = <0 0x24091000 0 0x1000>;
 
-                       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        interconnects = <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ACTIVE_ONLY
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        compatible = "qcom,sm8650-cpu-bwmon", "qcom,sdm845-bwmon";
                        reg = <0 0x240b7400 0 0x600>;
 
-                       interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH 0>;
 
                        interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
                                         &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
                                    "llcc_broadcast_base",
                                    "llcc_broadcast_and_base";
 
-                       interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH 0>;
                };
 
                nsp_noc: interconnect@320c0000 {
                        compatible = "qcom,sm8650-cdsp-pas";
                        reg = <0x0 0x32300000 0x0 0x10000>;
 
-                       interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
+                       interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING 0>,
                                              <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp_in 1 IRQ_TYPE_EDGE_RISING>,
                                              <&smp2p_cdsp_in 2 IRQ_TYPE_EDGE_RISING>,
                        thermal-sensors = <&tsens0 0>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               aoss0-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                aoss0-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens0 1>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               cpuss0-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                cpuss0-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens0 2>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               cpuss1-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                cpuss1-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens0 3>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               cpuss2-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                cpuss2-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens0 4>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               cpuss3-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                cpuss3-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens0 5>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu2-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 6>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu2-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 7>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu3-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 8>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu3-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 9>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu4-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 10>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu4-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 11>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu5-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 12>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu5-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 13>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu6-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens0 14>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu6-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens1 0>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               aoss1-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                aoss1-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens1 1>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu7-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens1 2>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu7-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens1 3>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu7-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens1 4>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu0-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                        thermal-sensors = <&tsens1 5>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu1-critical {
                                        temperature = <110000>;
                                        hysteresis = <1000>;
                };
 
                nsphvx0-thermal {
-                       polling-delay-passive = <10>;
-
                        thermal-sensors = <&tsens2 6>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               nsphvx0-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
-                               nsphvx1-critical {
-                                       temperature = <110000>;
+                               nsphvx0-critical {
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                };
 
                nsphvx1-thermal {
-                       polling-delay-passive = <10>;
-
                        thermal-sensors = <&tsens2 7>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               nsphvx1-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                nsphvx1-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                };
 
                nsphmx0-thermal {
-                       polling-delay-passive = <10>;
-
                        thermal-sensors = <&tsens2 8>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               nsphmx0-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                nsphmx0-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                };
 
                nsphmx1-thermal {
-                       polling-delay-passive = <10>;
-
                        thermal-sensors = <&tsens2 9>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               nsphmx1-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                nsphmx1-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                };
 
                nsphmx2-thermal {
-                       polling-delay-passive = <10>;
-
                        thermal-sensors = <&tsens2 10>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               nsphmx2-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                nsphmx2-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                };
 
                nsphmx3-thermal {
-                       polling-delay-passive = <10>;
-
                        thermal-sensors = <&tsens2 11>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               nsphmx3-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                nsphmx3-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                };
 
                video-thermal {
-                       polling-delay-passive = <10>;
-
                        thermal-sensors = <&tsens1 12>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               video-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                video-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                };
 
                ddr-thermal {
-                       polling-delay-passive = <10>;
-
                        thermal-sensors = <&tsens1 13>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               ddr-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                ddr-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens1 14>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               camera0-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                camera0-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens1 15>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               camera1-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                camera1-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens2 0>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               aoss2-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                aoss2-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
 
                        trips {
                                gpu0_alert0: trip-point0 {
-                                       temperature = <85000>;
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
                                        type = "passive";
                                };
 
                                trip-point1 {
-                                       temperature = <90000>;
+                                       temperature = <110000>;
                                        hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                trip-point2 {
-                                       temperature = <110000>;
-                                       hysteresis = <1000>;
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
                                        type = "critical";
                                };
                        };
 
                        trips {
                                gpu1_alert0: trip-point0 {
-                                       temperature = <85000>;
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
                                        type = "passive";
                                };
 
                                trip-point1 {
-                                       temperature = <90000>;
+                                       temperature = <110000>;
                                        hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                trip-point2 {
-                                       temperature = <110000>;
-                                       hysteresis = <1000>;
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
                                        type = "critical";
                                };
                        };
 
                        trips {
                                gpu2_alert0: trip-point0 {
-                                       temperature = <85000>;
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
                                        type = "passive";
                                };
 
                                trip-point1 {
-                                       temperature = <90000>;
+                                       temperature = <110000>;
                                        hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                trip-point2 {
-                                       temperature = <110000>;
-                                       hysteresis = <1000>;
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
                                        type = "critical";
                                };
                        };
 
                        trips {
                                gpu3_alert0: trip-point0 {
-                                       temperature = <85000>;
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
                                        type = "passive";
                                };
 
                                trip-point1 {
-                                       temperature = <90000>;
+                                       temperature = <110000>;
                                        hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                trip-point2 {
-                                       temperature = <110000>;
-                                       hysteresis = <1000>;
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
                                        type = "critical";
                                };
                        };
 
                        trips {
                                gpu4_alert0: trip-point0 {
-                                       temperature = <85000>;
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
                                        type = "passive";
                                };
 
                                trip-point1 {
-                                       temperature = <90000>;
+                                       temperature = <110000>;
                                        hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                trip-point2 {
-                                       temperature = <110000>;
-                                       hysteresis = <1000>;
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
                                        type = "critical";
                                };
                        };
 
                        trips {
                                gpu5_alert0: trip-point0 {
-                                       temperature = <85000>;
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
                                        type = "passive";
                                };
 
                                trip-point1 {
-                                       temperature = <90000>;
+                                       temperature = <110000>;
                                        hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                trip-point2 {
-                                       temperature = <110000>;
-                                       hysteresis = <1000>;
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
                                        type = "critical";
                                };
                        };
 
                        trips {
                                gpu6_alert0: trip-point0 {
-                                       temperature = <85000>;
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
                                        type = "passive";
                                };
 
                                trip-point1 {
-                                       temperature = <90000>;
+                                       temperature = <110000>;
                                        hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                trip-point2 {
-                                       temperature = <110000>;
-                                       hysteresis = <1000>;
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
                                        type = "critical";
                                };
                        };
 
                        trips {
                                gpu7_alert0: trip-point0 {
-                                       temperature = <85000>;
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
                                        type = "passive";
                                };
 
                                trip-point1 {
-                                       temperature = <90000>;
+                                       temperature = <110000>;
                                        hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                trip-point2 {
-                                       temperature = <110000>;
-                                       hysteresis = <1000>;
+                                       temperature = <115000>;
+                                       hysteresis = <0>;
                                        type = "critical";
                                };
                        };
                        thermal-sensors = <&tsens2 9>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               modem0-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                modem0-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens2 10>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               modem1-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                modem1-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens2 11>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               modem2-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                modem2-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens2 12>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
+                               modem3-hot {
+                                       temperature = <110000>;
+                                       hysteresis = <1000>;
                                        type = "hot";
                                };
 
                                modem3-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
        timer {
                compatible = "arm,armv8-timer";
 
-               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
-                            <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
+               interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
+                            <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
        };
 };
index 9e3aacad7bdab6848e86f8e45e04907e1c752a07..72f081a890dfe49bfbee5e91b9e51da53b9d8baf 100644 (file)
        status = "okay";
 };
 
+&remoteproc_adsp {
+       firmware-name = "qcom/sm8750/adsp.mbn",
+                       "qcom/sm8750/adsp_dtb.mbn";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/sm8750/cdsp.mbn",
+                       "qcom/sm8750/cdsp_dtb.mbn";
+
+       status = "okay";
+};
+
+&remoteproc_mpss {
+       firmware-name = "qcom/sm8750/modem.mbn",
+                       "qcom/sm8750/modem_dtb.mbn";
+
+       /* Modem crashes after some time with "DOG detects stalled initialization" */
+       status = "fail";
+};
+
 &tlmm {
        /* reserved for secure world */
        gpio-reserved-ranges = <36 4>, <74 1>;
index f77efab0aef9bab751a947173bcdcc27df7295a8..840a6d8f8a24670a01376f8fce511da222159016 100644 (file)
        status = "okay";
 };
 
+&remoteproc_adsp {
+       firmware-name = "qcom/sm8750/adsp.mbn",
+                       "qcom/sm8750/adsp_dtb.mbn";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/sm8750/cdsp.mbn",
+                       "qcom/sm8750/cdsp_dtb.mbn";
+
+       status = "okay";
+};
+
+&remoteproc_mpss {
+       firmware-name = "qcom/sm8750/modem.mbn",
+                       "qcom/sm8750/modem_dtb.mbn";
+
+       status = "okay";
+};
+
 &tlmm {
        /* reserved for secure world */
        gpio-reserved-ranges = <36 4>, <74 1>;
index 3bbd7d18598ee0a3a0d5130c03a3166e1fc14d82..980ba1ca23c487b9225b73872889f02c2611e68e 100644 (file)
 #include <dt-bindings/interconnect/qcom,icc.h>
 #include <dt-bindings/interconnect/qcom,sm8750-rpmh.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/mailbox/qcom-ipcc.h>
 #include <dt-bindings/power/qcom,rpmhpd.h>
 #include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/soc/qcom,gpr.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
+#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
 
 / {
        interrupt-parent = <&intc>;
                        compatible = "qcom,oryon";
                        reg = <0x0 0x10000>;
                        enable-method = "psci";
-                       next-level-cache = <&L2_1>;
+                       next-level-cache = <&l2_1>;
                        power-domains = <&cpu_pd6>;
                        power-domain-names = "psci";
 
-                       L2_1: l2-cache {
+                       l2_1: l2-cache {
                                compatible = "cache";
                                cache-level = <2>;
                                cache-unified;
                        compatible = "qcom,oryon";
                        reg = <0x0 0x10100>;
                        enable-method = "psci";
-                       next-level-cache = <&L2_1>;
+                       next-level-cache = <&l2_1>;
                        power-domains = <&cpu_pd7>;
                        power-domain-names = "psci";
                };
 
                cpu_pd0: power-domain-cpu0 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_pd>;
+                       power-domains = <&cluster0_pd>;
                        domain-idle-states = <&cluster0_c4>;
                };
 
                cpu_pd1: power-domain-cpu1 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_pd>;
+                       power-domains = <&cluster0_pd>;
                        domain-idle-states = <&cluster0_c4>;
                };
 
                cpu_pd2: power-domain-cpu2 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_pd>;
+                       power-domains = <&cluster0_pd>;
                        domain-idle-states = <&cluster0_c4>;
                };
 
                cpu_pd3: power-domain-cpu3 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_pd>;
+                       power-domains = <&cluster0_pd>;
                        domain-idle-states = <&cluster0_c4>;
                };
 
                cpu_pd4: power-domain-cpu4 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_pd>;
+                       power-domains = <&cluster0_pd>;
                        domain-idle-states = <&cluster0_c4>;
                };
 
                cpu_pd5: power-domain-cpu5 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_pd>;
+                       power-domains = <&cluster0_pd>;
                        domain-idle-states = <&cluster0_c4>;
                };
 
                cpu_pd6: power-domain-cpu6 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_pd>;
+                       power-domains = <&cluster1_pd>;
                        domain-idle-states = <&cluster1_c4>;
                };
 
                cpu_pd7: power-domain-cpu7 {
                        #power-domain-cells = <0>;
-                       power-domains = <&cluster_pd>;
+                       power-domains = <&cluster1_pd>;
                        domain-idle-states = <&cluster1_c4>;
                };
 
-               cluster_pd: power-domain-cluster {
+               cluster0_pd: power-domain-cluster0 {
+                       #power-domain-cells = <0>;
+                       domain-idle-states = <&cluster_cl5>;
+                       power-domains = <&system_pd>;
+               };
+
+               cluster1_pd: power-domain-cluster1 {
                        #power-domain-cells = <0>;
                        domain-idle-states = <&cluster_cl5>;
                        power-domains = <&system_pd>;
                };
        };
 
+       smp2p-adsp {
+               compatible = "qcom,smp2p";
+
+               interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
+                                            IPCC_MPROC_SIGNAL_SMP2P
+                                            IRQ_TYPE_EDGE_RISING>;
+
+               mboxes = <&ipcc IPCC_CLIENT_LPASS
+                               IPCC_MPROC_SIGNAL_SMP2P>;
+
+               qcom,smem = <443>, <429>;
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <2>;
+
+               smp2p_adsp_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               smp2p_adsp_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       smp2p-cdsp {
+               compatible = "qcom,smp2p";
+
+               interrupts-extended = <&ipcc IPCC_CLIENT_CDSP
+                                            IPCC_MPROC_SIGNAL_SMP2P
+                                            IRQ_TYPE_EDGE_RISING>;
+
+               mboxes = <&ipcc IPCC_CLIENT_CDSP
+                               IPCC_MPROC_SIGNAL_SMP2P>;
+
+               qcom,smem = <94>, <432>;
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <5>;
+
+               smp2p_cdsp_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               smp2p_cdsp_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       smp2p-modem {
+               compatible = "qcom,smp2p";
+
+               interrupts-extended = <&ipcc IPCC_CLIENT_MPSS
+                                            IPCC_MPROC_SIGNAL_SMP2P
+                                            IRQ_TYPE_EDGE_RISING>;
+
+               mboxes = <&ipcc IPCC_CLIENT_MPSS
+                               IPCC_MPROC_SIGNAL_SMP2P>;
+
+               qcom,smem = <435>, <428>;
+               qcom,local-pid = <0>;
+               qcom,remote-pid = <1>;
+
+               smp2p_modem_out: master-kernel {
+                       qcom,entry-name = "master-kernel";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               smp2p_modem_in: slave-kernel {
+                       qcom,entry-name = "slave-kernel";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               ipa_smp2p_out: ipa-ap-to-modem {
+                       qcom,entry-name = "ipa";
+                       #qcom,smem-state-cells = <1>;
+               };
+
+               ipa_smp2p_in: ipa-modem-to-ap {
+                       qcom,entry-name = "ipa";
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               /* TODO: smem mailbox in and out */
+       };
+
        soc: soc@0 {
                compatible = "simple-bus";
 
                        #power-domain-cells = <1>;
                };
 
+               ipcc: mailbox@406000 {
+                       compatible = "qcom,sm8750-ipcc", "qcom,ipcc";
+                       reg = <0x0 0x00406000 0x0 0x1000>;
+
+                       interrupts = <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+
+                       #mbox-cells = <2>;
+               };
+
                gpi_dma2: dma-controller@800000 {
                        compatible = "qcom,sm8750-gpi-dma", "qcom,sm6350-gpi-dma";
                        reg = <0x0 0x00800000 0x0 0x60000>;
 
                                interrupts = <GIC_SPI 461 IRQ_TYPE_LEVEL_HIGH>;
 
-                               clocks = <&gcc GCC_QUPV3_WRAP2_S5_CLK>;
+                               clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
                                clock-names = "se";
 
-                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
+                               interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
                                                <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
                                                 &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
                        };
                };
 
+               rng: rng@10c3000 {
+                       compatible = "qcom,sm8750-trng", "qcom,trng";
+                       reg = <0x0 0x010c3000 0x0 0x1000>;
+               };
+
                cnoc_main: interconnect@1500000 {
                        compatible = "qcom,sm8750-cnoc-main";
                        reg = <0x0 0x01500000 0x0 0x16080>;
                        #interconnect-cells = <2>;
                };
 
+               ice: crypto@1d88000 {
+                       compatible = "qcom,sm8750-inline-crypto-engine",
+                                    "qcom,inline-crypto-engine";
+                       reg = <0x0 0x01d88000 0x0 0x18000>;
+
+                       clocks = <&gcc GCC_UFS_PHY_ICE_CORE_CLK>;
+               };
+
+               cryptobam: dma-controller@1dc4000 {
+                       compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0";
+                       reg = <0x0 0x01dc4000 0x0 0x28000>;
+
+                       interrupts = <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
+
+                       #dma-cells = <1>;
+
+                       iommus = <&apps_smmu 0x480 0>,
+                                <&apps_smmu 0x481 0>;
+
+                       qcom,ee = <0>;
+                       qcom,controlled-remotely;
+               };
+
+               crypto: crypto@1dfa000 {
+                       compatible = "qcom,sm8750-qce", "qcom,sm8150-qce", "qcom,qce";
+                       reg = <0x0 0x01dfa000 0x0 0x6000>;
+
+                       interconnects = <&aggre2_noc MASTER_CRYPTO QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+                       interconnect-names = "memory";
+
+                       dmas = <&cryptobam 4>, <&cryptobam 5>;
+                       dma-names = "rx", "tx";
+
+                       iommus = <&apps_smmu 0x480 0>,
+                                <&apps_smmu 0x481 0>;
+               };
+
                tcsr_mutex: hwlock@1f40000 {
                        compatible = "qcom,tcsr-mutex";
                        reg = <0x0 0x01f40000 0x0 0x20000>;
                        #hwlock-cells = <1>;
                };
 
+               remoteproc_mpss: remoteproc@4080000 {
+                       compatible = "qcom,sm8750-mpss-pas";
+                       reg = <0x0 0x04080000 0x0 0x10000>;
+
+                       interrupts-extended = <&intc GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_modem_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_modem_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_modem_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_modem_in 3 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_modem_in 7 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog",
+                                         "fatal",
+                                         "ready",
+                                         "handover",
+                                         "stop-ack",
+                                         "shutdown-ack";
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "xo";
+
+                       interconnects = <&mc_virt MASTER_LLCC QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+
+                       power-domains = <&rpmhpd RPMHPD_CX>,
+                                       <&rpmhpd RPMHPD_MSS>;
+                       power-domain-names = "cx",
+                                            "mss";
+
+                       memory-region = <&mpss_mem>, <&q6_mpss_dtb_mem>,
+                                       <&dsm_partition_1_mem>,
+                                       <&dsm_partition_2_mem>;
+
+                       qcom,qmp = <&aoss_qmp>;
+
+                       qcom,smem-states = <&smp2p_modem_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       status = "disabled";
+
+                       glink-edge {
+                               interrupts-extended = <&ipcc IPCC_CLIENT_MPSS
+                                                            IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                            IRQ_TYPE_EDGE_RISING>;
+
+                               mboxes = <&ipcc IPCC_CLIENT_MPSS
+                                               IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+                               qcom,remote-pid = <1>;
+
+                               label = "mpss";
+                       };
+               };
+
+               remoteproc_adsp: remoteproc@6800000 {
+                       compatible = "qcom,sm8750-adsp-pas", "qcom,sm8550-adsp-pas";
+                       reg = <0x0 0x06800000 0x0 0x10000>;
+
+                       interrupts-extended = <&pdc 6 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 3 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_adsp_in 7 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog",
+                                         "fatal",
+                                         "ready",
+                                         "handover",
+                                         "stop-ack",
+                                         "shutdown-ack";
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "xo";
+
+                       interconnects = <&lpass_lpicx_noc MASTER_LPASS_PROC QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+
+                       power-domains = <&rpmhpd RPMHPD_LCX>,
+                                       <&rpmhpd RPMHPD_LMX>;
+                       power-domain-names = "lcx",
+                                            "lmx";
+
+                       memory-region = <&adspslpi_mem>, <&q6_adsp_dtb_mem>;
+
+                       qcom,qmp = <&aoss_qmp>;
+
+                       qcom,smem-states = <&smp2p_adsp_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       status = "disabled";
+
+                       remoteproc_adsp_glink: glink-edge {
+                               interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
+                                                            IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                            IRQ_TYPE_EDGE_RISING>;
+                               mboxes = <&ipcc IPCC_CLIENT_LPASS
+                                               IPCC_MPROC_SIGNAL_GLINK_QMP>;
+                               qcom,remote-pid = <2>;
+                               label = "lpass";
+
+                               gpr {
+                                       compatible = "qcom,gpr";
+                                       qcom,glink-channels = "adsp_apps";
+                                       qcom,domain = <GPR_DOMAIN_ID_ADSP>;
+                                       qcom,intents = <512 20>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       q6apm: service@1 {
+                                               compatible = "qcom,q6apm";
+                                               reg = <GPR_APM_MODULE_IID>;
+                                               #sound-dai-cells = <0>;
+                                               qcom,protection-domain = "avs/audio",
+                                                                        "msm/adsp/audio_pd";
+
+                                               q6apmbedai: bedais {
+                                                       compatible = "qcom,q6apm-lpass-dais";
+                                                       #sound-dai-cells = <1>;
+                                               };
+
+                                               q6apmdai: dais {
+                                                       compatible = "qcom,q6apm-dais";
+                                                       iommus = <&apps_smmu 0x1001 0x80>,
+                                                                <&apps_smmu 0x1041 0x20>;
+                                               };
+                                       };
+
+                                       q6prm: service@2 {
+                                               compatible = "qcom,q6prm";
+                                               reg = <GPR_PRM_MODULE_IID>;
+                                               qcom,protection-domain = "avs/audio",
+                                                                        "msm/adsp/audio_pd";
+
+                                               q6prmcc: clock-controller {
+                                                       compatible = "qcom,q6prm-lpass-clocks";
+                                                       #clock-cells = <2>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+
+               lpass_wsa2macro: codec@6aa0000 {
+                       compatible = "qcom,sm8750-lpass-wsa-macro", "qcom,sm8550-lpass-wsa-macro";
+                       reg = <0x0 0x06aa0000 0x0 0x1000>;
+                       clocks = <&q6prmcc LPASS_CLK_ID_WSA2_CORE_TX_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&lpass_vamacro>;
+                       clock-names = "mclk",
+                                     "macro",
+                                     "dcodec",
+                                     "fsgen";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "wsa2-mclk";
+                       #sound-dai-cells = <1>;
+               };
+
+               lpass_rxmacro: codec@6ac0000 {
+                       compatible = "qcom,sm8750-lpass-rx-macro", "qcom,sm8550-lpass-rx-macro";
+                       reg = <0x0 0x06ac0000 0x0 0x1000>;
+                       clocks = <&q6prmcc LPASS_CLK_ID_RX_CORE_TX_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&lpass_vamacro>;
+                       clock-names = "mclk",
+                                     "macro",
+                                     "dcodec",
+                                     "fsgen";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "mclk";
+                       #sound-dai-cells = <1>;
+               };
+
+               lpass_txmacro: codec@6ae0000 {
+                       compatible = "qcom,sm8750-lpass-tx-macro", "qcom,sm8550-lpass-tx-macro";
+                       reg = <0x0 0x06ae0000 0x0 0x1000>;
+                       clocks = <&q6prmcc LPASS_CLK_ID_TX_CORE_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&lpass_vamacro>;
+                       clock-names = "mclk",
+                                     "macro",
+                                     "dcodec",
+                                     "fsgen";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "mclk";
+                       #sound-dai-cells = <1>;
+               };
+
+               lpass_wsamacro: codec@6b00000 {
+                       compatible = "qcom,sm8750-lpass-wsa-macro", "qcom,sm8550-lpass-wsa-macro";
+                       reg = <0x0 0x06b00000 0x0 0x1000>;
+                       clocks = <&q6prmcc LPASS_CLK_ID_WSA_CORE_TX_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&lpass_vamacro>;
+                       clock-names = "mclk",
+                                     "macro",
+                                     "dcodec",
+                                     "fsgen";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "mclk";
+                       #sound-dai-cells = <1>;
+               };
+
                lpass_ag_noc: interconnect@7e40000 {
                        compatible = "qcom,sm8750-lpass-ag-noc";
                        reg = <0x0 0x07e40000 0x0 0xe080>;
                        #interconnect-cells = <2>;
                };
 
+               lpass_vamacro: codec@7660000 {
+                       compatible = "qcom,sm8750-lpass-va-macro", "qcom,sm8550-lpass-va-macro";
+                       reg = <0x0 0x07660000 0x0 0x2000>;
+                       clocks = <&q6prmcc LPASS_CLK_ID_TX_CORE_MCLK LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+                       clock-names = "mclk",
+                                     "macro",
+                                     "dcodec";
+
+                       #clock-cells = <0>;
+                       clock-output-names = "fsgen";
+                       #sound-dai-cells = <1>;
+               };
+
+               lpass_tlmm: pinctrl@7760000 {
+                       compatible = "qcom,sm8750-lpass-lpi-pinctrl",
+                                    "qcom,sm8650-lpass-lpi-pinctrl";
+                       reg = <0x0 0x07760000 0x0 0x20000>;
+
+                       clocks = <&q6prmcc LPASS_HW_MACRO_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>,
+                                <&q6prmcc LPASS_HW_DCODEC_VOTE LPASS_CLK_ATTRIBUTE_COUPLE_NO>;
+                       clock-names = "core", "audio";
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&lpass_tlmm 0 0 23>;
+
+                       tx_swr_active: tx-swr-active-state {
+                               clk-pins {
+                                       pins = "gpio0";
+                                       function = "swr_tx_clk";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-disable;
+                               };
+
+                               data-pins {
+                                       pins = "gpio1", "gpio2", "gpio14";
+                                       function = "swr_tx_data";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-bus-hold;
+                               };
+                       };
+
+                       rx_swr_active: rx-swr-active-state {
+                               clk-pins {
+                                       pins = "gpio3";
+                                       function = "swr_rx_clk";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-disable;
+                               };
+
+                               data-pins {
+                                       pins = "gpio4", "gpio5";
+                                       function = "swr_rx_data";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-bus-hold;
+                               };
+                       };
+
+                       dmic01_default: dmic01-default-state {
+                               clk-pins {
+                                       pins = "gpio6";
+                                       function = "dmic1_clk";
+                                       drive-strength = <8>;
+                                       output-high;
+                               };
+
+                               data-pins {
+                                       pins = "gpio7";
+                                       function = "dmic1_data";
+                                       drive-strength = <8>;
+                                       input-enable;
+                               };
+                       };
+
+                       dmic23_default: dmic23-default-state {
+                               clk-pins {
+                                       pins = "gpio8";
+                                       function = "dmic2_clk";
+                                       drive-strength = <8>;
+                                       output-high;
+                               };
+
+                               data-pins {
+                                       pins = "gpio9";
+                                       function = "dmic2_data";
+                                       drive-strength = <8>;
+                                       input-enable;
+                               };
+                       };
+
+                       wsa_swr_active: wsa-swr-active-state {
+                               clk-pins {
+                                       pins = "gpio10";
+                                       function = "wsa_swr_clk";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-disable;
+                               };
+
+                               data-pins {
+                                       pins = "gpio11";
+                                       function = "wsa_swr_data";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-bus-hold;
+                               };
+                       };
+
+                       wsa2_swr_active: wsa2-swr-active-state {
+                               clk-pins {
+                                       pins = "gpio15";
+                                       function = "wsa2_swr_clk";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-disable;
+                               };
+
+                               data-pins {
+                                       pins = "gpio16";
+                                       function = "wsa2_swr_data";
+                                       drive-strength = <2>;
+                                       slew-rate = <1>;
+                                       bias-bus-hold;
+                               };
+                       };
+               };
+
                pdc: interrupt-controller@b220000 {
                        compatible = "qcom,sm8750-pdc", "qcom,pdc";
                        reg = <0x0 0x0b220000 0x0 0x10000>, <0x0 0x164400f0 0x0 0x64>;
                        interrupt-controller;
                };
 
+               aoss_qmp: power-management@c300000 {
+                       compatible = "qcom,sm8750-aoss-qmp", "qcom,aoss-qmp";
+                       reg = <0x0 0x0c300000 0x0 0x400>;
+
+                       interrupt-parent = <&ipcc>;
+                       interrupts-extended = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                    IRQ_TYPE_EDGE_RISING>;
+
+                       mboxes = <&ipcc IPCC_CLIENT_AOP IPCC_MPROC_SIGNAL_GLINK_QMP>;
+
+                       #clock-cells = <0>;
+               };
+
+               sram@c3f0000 {
+                       compatible = "qcom,rpmh-stats";
+                       reg = <0x0 0x0c3f0000 0x0 0x400>;
+               };
+
                spmi_bus: spmi@c400000 {
                        compatible = "qcom,spmi-pmic-arb";
                        reg = <0x0 0x0c400000 0x0 0x3000>,
                        #interconnect-cells = <2>;
                };
 
+               system-cache-controller@24800000 {
+                       compatible = "qcom,sm8750-llcc";
+                       reg = <0x0 0x24800000 0x0 0x200000>,
+                             <0x0 0x25800000 0x0 0x200000>,
+                             <0x0 0x24c00000 0x0 0x200000>,
+                             <0x0 0x25c00000 0x0 0x200000>,
+                             <0x0 0x26800000 0x0 0x200000>,
+                             <0x0 0x26c00000 0x0 0x200000>;
+                       reg-names = "llcc0_base",
+                                   "llcc1_base",
+                                   "llcc2_base",
+                                   "llcc3_base",
+                                   "llcc_broadcast_base",
+                                   "llcc_broadcast_and_base";
+
+                       interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                nsp_noc: interconnect@320c0000 {
                        compatible = "qcom,sm8750-nsp-noc";
                        reg = <0x0 0x320c0000 0x0 0x13080>;
                        qcom,bcm-voters = <&apps_bcm_voter>;
                        #interconnect-cells = <2>;
                };
+
+               remoteproc_cdsp: remoteproc@32300000 {
+                       compatible = "qcom,sm8750-cdsp-pas", "qcom,sm8650-cdsp-pas";
+                       reg = <0x0 0x32300000 0x0 0x10000>;
+
+                       interrupts-extended = <&intc GIC_SPI 578 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_cdsp_in 0 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_cdsp_in 1 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_cdsp_in 2 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_cdsp_in 3 IRQ_TYPE_EDGE_RISING>,
+                                             <&smp2p_cdsp_in 7 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "wdog",
+                                         "fatal",
+                                         "ready",
+                                         "handover",
+                                         "stop-ack",
+                                         "shutdown-ack";
+
+                       clocks = <&rpmhcc RPMH_CXO_CLK>;
+                       clock-names = "xo";
+
+                       interconnects = <&nsp_noc MASTER_CDSP_PROC QCOM_ICC_TAG_ALWAYS
+                                        &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
+
+                       power-domains = <&rpmhpd RPMHPD_CX>,
+                                       <&rpmhpd RPMHPD_MXC>,
+                                       <&rpmhpd RPMHPD_NSP>;
+                       power-domain-names = "cx",
+                                            "mxc",
+                                            "nsp";
+
+                       memory-region = <&cdsp_mem>, <&q6_cdsp_dtb_mem>, <&global_sync_mem>;
+                       qcom,qmp = <&aoss_qmp>;
+                       qcom,smem-states = <&smp2p_cdsp_out 0>;
+                       qcom,smem-state-names = "stop";
+
+                       status = "disabled";
+
+                       glink-edge {
+                               interrupts-extended = <&ipcc IPCC_CLIENT_CDSP
+                                                            IPCC_MPROC_SIGNAL_GLINK_QMP
+                                                            IRQ_TYPE_EDGE_RISING>;
+                               mboxes = <&ipcc IPCC_CLIENT_CDSP
+                                               IPCC_MPROC_SIGNAL_GLINK_QMP>;
+                               qcom,remote-pid = <5>;
+                               label = "cdsp";
+
+                               fastrpc {
+                                       compatible = "qcom,fastrpc";
+                                       qcom,glink-channels = "fastrpcglink-apps-dsp";
+                                       label = "cdsp";
+                                       qcom,non-secure-domain;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       compute-cb@1 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <1>;
+                                               iommus = <&apps_smmu 0x19c1 0x0>,
+                                                        <&apps_smmu 0x0c21 0x0>,
+                                                        <&apps_smmu 0x0c01 0x40>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@2 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <2>;
+                                               iommus = <&apps_smmu 0x1962 0x0>,
+                                                        <&apps_smmu 0x0c02 0x20>,
+                                                        <&apps_smmu 0x0c42 0x0>,
+                                                        <&apps_smmu 0x19c2 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@3 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <3>;
+                                               iommus = <&apps_smmu 0x1963 0x0>,
+                                                        <&apps_smmu 0x0c23 0x0>,
+                                                        <&apps_smmu 0x0c03 0x40>,
+                                                        <&apps_smmu 0x19c3 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@4 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <4>;
+                                               iommus = <&apps_smmu 0x1964 0x0>,
+                                                        <&apps_smmu 0x0c24 0x0>,
+                                                        <&apps_smmu 0x0c04 0x40>,
+                                                        <&apps_smmu 0x19c4 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@5 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <5>;
+                                               iommus = <&apps_smmu 0x1965 0x0>,
+                                                        <&apps_smmu 0x0c25 0x0>,
+                                                        <&apps_smmu 0x0c05 0x40>,
+                                                        <&apps_smmu 0x19c5 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@6 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <6>;
+                                               iommus = <&apps_smmu 0x1966 0x0>,
+                                                        <&apps_smmu 0x0c06 0x20>,
+                                                        <&apps_smmu 0x0c46 0x0>,
+                                                        <&apps_smmu 0x19c6 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@7 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <7>;
+                                               iommus = <&apps_smmu 0x1967 0x0>,
+                                                        <&apps_smmu 0x0c27 0x0>,
+                                                        <&apps_smmu 0x0c07 0x40>,
+                                                        <&apps_smmu 0x19c7 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@8 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <8>;
+                                               iommus = <&apps_smmu 0x1968 0x0>,
+                                                        <&apps_smmu 0x0c08 0x20>,
+                                                        <&apps_smmu 0x0c48 0x0>,
+                                                        <&apps_smmu 0x19c8 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       /* note: secure cb9 in downstream */
+
+                                       compute-cb@12 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <12>;
+                                               iommus = <&apps_smmu 0x196c 0x0>,
+                                                        <&apps_smmu 0x0c2c 0x20>,
+                                                        <&apps_smmu 0x0c0c 0x40>,
+                                                        <&apps_smmu 0x19cc 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@13 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <13>;
+                                               iommus = <&apps_smmu 0x196d 0x0>,
+                                                        <&apps_smmu 0x0c0d 0x20>,
+                                                        <&apps_smmu 0x0c2e 0x0>,
+                                                        <&apps_smmu 0x0c4d 0x0>,
+                                                        <&apps_smmu 0x19cd 0x0>;
+                                               dma-coherent;
+                                       };
+
+                                       compute-cb@14 {
+                                               compatible = "qcom,fastrpc-compute-cb";
+                                               reg = <14>;
+                                               iommus = <&apps_smmu 0x196e 0x0>,
+                                                        <&apps_smmu 0x0c0e 0x20>,
+                                                        <&apps_smmu 0x19ce 0x0>;
+                                               dma-coherent;
+                                       };
+                               };
+                       };
+               };
        };
 
        timer {
diff --git a/src/arm64/qcom/x1-crd.dtsi b/src/arm64/qcom/x1-crd.dtsi
new file mode 100644 (file)
index 0000000..c9f0d50
--- /dev/null
@@ -0,0 +1,1749 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+#include "x1e80100-pmics.dtsi"
+
+/ {
+       model = "Qualcomm Technologies, Inc. X1E80100 CRD";
+       compatible = "qcom,x1e80100-crd", "qcom,x1e80100";
+
+       aliases {
+               serial0 = &uart21;
+       };
+
+       wcd938x: audio-codec {
+               compatible = "qcom,wcd9385-codec";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&wcd_default>;
+
+               qcom,micbias1-microvolt = <1800000>;
+               qcom,micbias2-microvolt = <1800000>;
+               qcom,micbias3-microvolt = <1800000>;
+               qcom,micbias4-microvolt = <1800000>;
+               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+               qcom,rx-device = <&wcd_rx>;
+               qcom,tx-device = <&wcd_tx>;
+
+               reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
+
+               vdd-buck-supply = <&vreg_l15b_1p8>;
+               vdd-rxtx-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l15b_1p8>;
+               vdd-mic-bias-supply = <&vreg_bob1>;
+
+               #sound-dai-cells = <1>;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&hall_int_n_default>, <&kypd_vol_up_n>;
+               pinctrl-names = "default";
+
+               key-vol-up {
+                       label = "volume_up";
+                       gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_VOLUMEUP>;
+                       wakeup-source;
+               };
+
+               switch-lid {
+                       label = "lid";
+                       gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       wakeup-source;
+                       wakeup-event-action = <EV_ACT_DEASSERTED>;
+               };
+       };
+
+       pmic-glink {
+               compatible = "qcom,x1e80100-pmic-glink",
+                            "qcom,sm8550-pmic-glink",
+                            "qcom,pmic-glink";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
+                                   <&tlmm 123 GPIO_ACTIVE_HIGH>,
+                                   <&tlmm 125 GPIO_ACTIVE_HIGH>;
+
+               /* Left-side rear port */
+               connector@0 {
+                       compatible = "usb-c-connector";
+                       reg = <0>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss0_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss0_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss0_ss_in: endpoint {
+                                               remote-endpoint = <&retimer_ss0_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss0_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss0_con_sbu_out>;
+                                       };
+                               };
+                       };
+               };
+
+               /* Left-side front port */
+               connector@1 {
+                       compatible = "usb-c-connector";
+                       reg = <1>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss1_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss1_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss1_ss_in: endpoint {
+                                               remote-endpoint = <&retimer_ss1_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss1_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss1_con_sbu_out>;
+                                       };
+                               };
+                       };
+               };
+
+               /* Right-side port */
+               connector@2 {
+                       compatible = "usb-c-connector";
+                       reg = <2>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss2_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss2_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss2_ss_in: endpoint {
+                                               remote-endpoint = <&retimer_ss2_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss2_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss2_con_sbu_out>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       reserved-memory {
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       size = <0x0 0x8000000>;
+                       reusable;
+                       linux,cma-default;
+               };
+       };
+
+       sound {
+               compatible = "qcom,x1e80100-sndcard";
+               model = "X1E80100-CRD";
+               audio-routing = "WooferLeft IN", "WSA WSA_SPK1 OUT",
+                               "TweeterLeft IN", "WSA WSA_SPK2 OUT",
+                               "WooferRight IN", "WSA2 WSA_SPK2 OUT",
+                               "TweeterRight IN", "WSA2 WSA_SPK2 OUT",
+                               "IN1_HPHL", "HPHL_OUT",
+                               "IN2_HPHR", "HPHR_OUT",
+                               "AMIC2", "MIC BIAS2",
+                               "VA DMIC0", "MIC BIAS3",
+                               "VA DMIC1", "MIC BIAS3",
+                               "VA DMIC2", "MIC BIAS1",
+                               "VA DMIC3", "MIC BIAS1",
+                               "TX SWR_INPUT1", "ADC2_OUTPUT";
+
+               wcd-playback-dai-link {
+                       link-name = "WCD Playback";
+
+                       cpu {
+                               sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+                       };
+
+                       codec {
+                               sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wcd-capture-dai-link {
+                       link-name = "WCD Capture";
+
+                       cpu {
+                               sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+                       };
+
+                       codec {
+                               sound-dai = <&wcd938x 1>, <&swr2 1>, <&lpass_txmacro 0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wsa-dai-link {
+                       link-name = "WSA Playback";
+
+                       cpu {
+                               sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+                       };
+
+                       codec {
+                               sound-dai = <&left_woofer>, <&left_tweeter>,
+                                           <&swr0 0>, <&lpass_wsamacro 0>,
+                                           <&right_woofer>, <&right_tweeter>,
+                                           <&swr3 0>, <&lpass_wsa2macro 0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               va-dai-link {
+                       link-name = "VA Capture";
+
+                       cpu {
+                               sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+                       };
+
+                       codec {
+                               sound-dai = <&lpass_vamacro 0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+       };
+
+       vreg_edp_3p3: regulator-edp-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_EDP_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&edp_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_misc_3p3: regulator-misc-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_MISC_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pm8550ve_8_gpios 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&misc_3p3_reg_en>;
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vreg_nvme: regulator-nvme {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_NVME_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&nvme_reg_en>;
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr2_1p15: regulator-rtmr2-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR2_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&tlmm 189 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb2_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr2_1p8: regulator-rtmr2-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR2_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 126 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb2_pwr_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr2_3p3: regulator-rtmr2-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR2_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 187 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb2_pwr_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vph_pwr: regulator-vph-pwr {
+               compatible = "regulator-fixed";
+
+               regulator-name = "vph_pwr";
+               regulator-min-microvolt = <3700000>;
+               regulator-max-microvolt = <3700000>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vreg_wwan: regulator-wwan {
+               compatible = "regulator-fixed";
+
+               regulator-name = "SDX_VPH_PWR";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 221 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&wwan_sw_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+};
+
+&apps_rsc {
+       regulators-0 {
+               compatible = "qcom,pm8550-rpmh-regulators";
+               qcom,pmic-id = "b";
+
+               vdd-bob1-supply = <&vph_pwr>;
+               vdd-bob2-supply = <&vph_pwr>;
+               vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
+               vdd-l2-l13-l14-supply = <&vreg_bob1>;
+               vdd-l5-l16-supply = <&vreg_bob1>;
+               vdd-l6-l7-supply = <&vreg_bob2>;
+               vdd-l8-l9-supply = <&vreg_bob1>;
+               vdd-l12-supply = <&vreg_s5j_1p2>;
+               vdd-l15-supply = <&vreg_s4c_1p8>;
+               vdd-l17-supply = <&vreg_bob2>;
+
+               vreg_bob1: bob1 {
+                       regulator-name = "vreg_bob1";
+                       regulator-min-microvolt = <3008000>;
+                       regulator-max-microvolt = <3960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_bob2: bob2 {
+                       regulator-name = "vreg_bob2";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <3008000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1b_1p8: ldo1 {
+                       regulator-name = "vreg_l1b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2b_3p0: ldo2 {
+                       regulator-name = "vreg_l2b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l4b_1p8: ldo4 {
+                       regulator-name = "vreg_l4b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l5b_3p0: ldo5 {
+                       regulator-name = "vreg_l5b_3p0";
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l6b_1p8: ldo6 {
+                       regulator-name = "vreg_l6b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l7b_2p8: ldo7 {
+                       regulator-name = "vreg_l7b_2p8";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l8b_3p0: ldo8 {
+                       regulator-name = "vreg_l8b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l9b_2p9: ldo9 {
+                       regulator-name = "vreg_l9b_2p9";
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l10b_1p8: ldo10 {
+                       regulator-name = "vreg_l10b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l12b_1p2: ldo12 {
+                       regulator-name = "vreg_l12b_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l13b_3p0: ldo13 {
+                       regulator-name = "vreg_l13b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l14b_3p0: ldo14 {
+                       regulator-name = "vreg_l14b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l15b_1p8: ldo15 {
+                       regulator-name = "vreg_l15b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l16b_2p9: ldo16 {
+                       regulator-name = "vreg_l16b_2p9";
+                       regulator-min-microvolt = <2912000>;
+                       regulator-max-microvolt = <2912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l17b_2p5: ldo17 {
+                       regulator-name = "vreg_l17b_2p5";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <2504000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-1 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "c";
+
+               vdd-l1-supply = <&vreg_s5j_1p2>;
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s4-supply = <&vph_pwr>;
+
+               vreg_s4c_1p8: smps4 {
+                       regulator-name = "vreg_s4c_1p8";
+                       regulator-min-microvolt = <1856000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1c_1p2: ldo1 {
+                       regulator-name = "vreg_l1c_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2c_0p8: ldo2 {
+                       regulator-name = "vreg_l2c_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3c_0p8: ldo3 {
+                       regulator-name = "vreg_l3c_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-2 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "d";
+
+               vdd-l1-supply = <&vreg_s1f_0p7>;
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s4c_1p8>;
+               vdd-s1-supply = <&vph_pwr>;
+
+               vreg_l1d_0p8: ldo1 {
+                       regulator-name = "vreg_l1d_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2d_0p9: ldo2 {
+                       regulator-name = "vreg_l2d_0p9";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3d_1p8: ldo3 {
+                       regulator-name = "vreg_l3d_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-3 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "e";
+
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s5j_1p2>;
+
+               vreg_l2e_0p8: ldo2 {
+                       regulator-name = "vreg_l2e_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3e_1p2: ldo3 {
+                       regulator-name = "vreg_l3e_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-4 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "f";
+
+               vdd-l1-supply = <&vreg_s5j_1p2>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s5j_1p2>;
+               vdd-s1-supply = <&vph_pwr>;
+
+               vreg_s1f_0p7: smps1 {
+                       regulator-name = "vreg_s1f_0p7";
+                       regulator-min-microvolt = <700000>;
+                       regulator-max-microvolt = <1100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1f_1p0: ldo1 {
+                       regulator-name = "vreg_l1f_1p0";
+                       regulator-min-microvolt = <1024000>;
+                       regulator-max-microvolt = <1024000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2f_1p0: ldo2 {
+                       regulator-name = "vreg_l2f_1p0";
+                       regulator-min-microvolt = <1024000>;
+                       regulator-max-microvolt = <1024000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3f_1p0: ldo3 {
+                       regulator-name = "vreg_l3f_1p0";
+                       regulator-min-microvolt = <1024000>;
+                       regulator-max-microvolt = <1024000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-6 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "i";
+
+               vdd-l1-supply = <&vreg_s4c_1p8>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s1-supply = <&vph_pwr>;
+               vdd-s2-supply = <&vph_pwr>;
+
+               vreg_s1i_0p9: smps1 {
+                       regulator-name = "vreg_s1i_0p9";
+                       regulator-min-microvolt = <900000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_s2i_1p0: smps2 {
+                       regulator-name = "vreg_s2i_1p0";
+                       regulator-min-microvolt = <1000000>;
+                       regulator-max-microvolt = <1100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1i_1p8: ldo1 {
+                       regulator-name = "vreg_l1i_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2i_1p2: ldo2 {
+                       regulator-name = "vreg_l2i_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3i_0p8: ldo3 {
+                       regulator-name = "vreg_l3i_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-7 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "j";
+
+               vdd-l1-supply = <&vreg_s1f_0p7>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s5-supply = <&vph_pwr>;
+
+               vreg_s5j_1p2: smps5 {
+                       regulator-name = "vreg_s5j_1p2";
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1304000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1j_0p8: ldo1 {
+                       regulator-name = "vreg_l1j_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2j_1p2: ldo2 {
+                       regulator-name = "vreg_l2j_1p2";
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3j_0p8: ldo3 {
+                       regulator-name = "vreg_l3j_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <920000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+};
+
+&gpu {
+       status = "okay";
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       touchpad@15 {
+               compatible = "hid-over-i2c";
+               reg = <0x15>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+               vddl-supply = <&vreg_l12b_1p2>;
+
+               pinctrl-0 = <&tpad_default>;
+               pinctrl-names = "default";
+
+               wakeup-source;
+       };
+
+       keyboard@3a {
+               compatible = "hid-over-i2c";
+               reg = <0x3a>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+               vddl-supply = <&vreg_l12b_1p2>;
+
+               pinctrl-0 = <&kybd_default>;
+               pinctrl-names = "default";
+
+               wakeup-source;
+       };
+};
+
+&i2c1 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       typec-mux@8 {
+               compatible = "parade,ps8830";
+               reg = <0x08>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK5>;
+
+               vdd-supply = <&vreg_rtmr2_1p15>;
+               vdd33-supply = <&vreg_rtmr2_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr2_3p3>;
+               vddar-supply = <&vreg_rtmr2_1p15>;
+               vddat-supply = <&vreg_rtmr2_1p15>;
+               vddio-supply = <&vreg_rtmr2_1p8>;
+
+               reset-gpios = <&tlmm 185 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr2_default>;
+               pinctrl-names = "default";
+
+               orientation-switch;
+               retimer-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss2_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss2_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss2_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss2_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss2_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       typec-mux@8 {
+               compatible = "parade,ps8830";
+               reg = <0x08>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK3>;
+
+               vdd-supply = <&vreg_rtmr0_1p15>;
+               vdd33-supply = <&vreg_rtmr0_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr0_3p3>;
+               vddar-supply = <&vreg_rtmr0_1p15>;
+               vddat-supply = <&vreg_rtmr0_1p15>;
+               vddio-supply = <&vreg_rtmr0_1p8>;
+
+               reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr0_default>;
+               pinctrl-names = "default";
+
+               retimer-switch;
+               orientation-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss0_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss0_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss0_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss0_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c7 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       typec-mux@8 {
+               compatible = "parade,ps8830";
+               reg = <0x8>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK4>;
+
+               vdd-supply = <&vreg_rtmr1_1p15>;
+               vdd33-supply = <&vreg_rtmr1_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr1_3p3>;
+               vddar-supply = <&vreg_rtmr1_1p15>;
+               vddat-supply = <&vreg_rtmr1_1p15>;
+               vddio-supply = <&vreg_rtmr1_1p8>;
+
+               reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr1_default>;
+               pinctrl-names = "default";
+
+               retimer-switch;
+               orientation-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss1_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss1_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss1_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss1_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c8 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       touchscreen@10 {
+               compatible = "hid-over-i2c";
+               reg = <0x10>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 51 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+               vddl-supply = <&vreg_l15b_1p8>;
+
+               pinctrl-0 = <&ts0_default>;
+               pinctrl-names = "default";
+       };
+};
+
+&lpass_tlmm {
+       spkr_01_sd_n_active: spkr-01-sd-n-active-state {
+               pins = "gpio12";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+
+       spkr_23_sd_n_active: spkr-23-sd-n-active-state {
+               pins = "gpio13";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+};
+
+&lpass_vamacro {
+       pinctrl-0 = <&dmic01_default>, <&dmic23_default>;
+       pinctrl-names = "default";
+
+       vdd-micb-supply = <&vreg_l1b_1p8>;
+       qcom,dmic-sample-rate = <4800000>;
+};
+
+&mdss {
+       status = "okay";
+};
+
+&mdss_dp0 {
+       status = "okay";
+};
+
+&mdss_dp0_out {
+       data-lanes = <0 1>;
+};
+
+&mdss_dp1 {
+       status = "okay";
+};
+
+&mdss_dp1_out {
+       data-lanes = <0 1>;
+};
+
+&mdss_dp2 {
+       status = "okay";
+};
+
+&mdss_dp2_out {
+       data-lanes = <0 1>;
+};
+
+&mdss_dp3 {
+       /delete-property/ #sound-dai-cells;
+
+       status = "okay";
+
+       aux-bus {
+               panel {
+                       compatible = "samsung,atna45af01", "samsung,atna33xc20";
+                       enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
+                       power-supply = <&vreg_edp_3p3>;
+
+                       pinctrl-0 = <&edp_bl_en>;
+                       pinctrl-names = "default";
+
+                       port {
+                               edp_panel_in: endpoint {
+                                       remote-endpoint = <&mdss_dp3_out>;
+                               };
+                       };
+               };
+       };
+
+       ports {
+               port@1 {
+                       reg = <1>;
+                       mdss_dp3_out: endpoint {
+                               data-lanes = <0 1 2 3>;
+                               link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+
+                               remote-endpoint = <&edp_panel_in>;
+                       };
+               };
+       };
+};
+
+&mdss_dp3_phy {
+       vdda-phy-supply = <&vreg_l3j_0p8>;
+       vdda-pll-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&pcie4 {
+       perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
+
+       pinctrl-0 = <&pcie4_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie4_phy {
+       vdda-phy-supply = <&vreg_l3i_0p8>;
+       vdda-pll-supply = <&vreg_l3e_1p2>;
+
+       status = "okay";
+};
+
+&pcie5 {
+       perst-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&vreg_wwan>;
+
+       pinctrl-0 = <&pcie5_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie5_phy {
+       vdda-phy-supply = <&vreg_l3i_0p8>;
+       vdda-pll-supply = <&vreg_l3e_1p2>;
+
+       status = "okay";
+};
+
+&pcie6a {
+       perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&vreg_nvme>;
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie6a_default>;
+
+       status = "okay";
+};
+
+&pcie6a_phy {
+       vdda-phy-supply = <&vreg_l1d_0p8>;
+       vdda-pll-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&pm8550_gpios {
+       kypd_vol_up_n: kypd-vol-up-n-state {
+               pins = "gpio6";
+               function = "normal";
+               power-source = <1>; /* 1.8 V */
+               bias-pull-up;
+               input-enable;
+       };
+
+       rtmr0_default: rtmr0-reset-n-active-state {
+               pins = "gpio10";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+
+       usb0_3p3_reg_en: usb0-3p3-reg-en-state {
+               pins = "gpio11";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pm8550ve_8_gpios {
+       misc_3p3_reg_en: misc-3p3-reg-en-state {
+               pins = "gpio6";
+               function = "normal";
+               bias-disable;
+               input-disable;
+               output-enable;
+               drive-push-pull;
+               power-source = <1>; /* 1.8 V */
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+       };
+};
+
+&pm8550ve_9_gpios {
+       usb0_1p8_reg_en: usb0-1p8-reg-en-state {
+               pins = "gpio8";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pmc8380_3_gpios {
+       edp_bl_en: edp-bl-en-state {
+               pins = "gpio4";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               input-disable;
+               output-enable;
+       };
+};
+
+&pmc8380_5_gpios {
+       usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
+               pins = "gpio8";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&qupv3_0 {
+       status = "okay";
+};
+
+&qupv3_1 {
+       status = "okay";
+};
+
+&qupv3_2 {
+       status = "okay";
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/x1e80100/adsp.mbn",
+                       "qcom/x1e80100/adsp_dtb.mbn";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/x1e80100/cdsp.mbn",
+                       "qcom/x1e80100/cdsp_dtb.mbn";
+
+       status = "okay";
+};
+
+&smb2360_0 {
+       status = "okay";
+};
+
+&smb2360_0_eusb2_repeater {
+       vdd18-supply = <&vreg_l3d_1p8>;
+       vdd3-supply = <&vreg_l2b_3p0>;
+};
+
+&smb2360_1 {
+       status = "okay";
+};
+
+&smb2360_1_eusb2_repeater {
+       vdd18-supply = <&vreg_l3d_1p8>;
+       vdd3-supply = <&vreg_l14b_3p0>;
+};
+
+&smb2360_2 {
+       status = "okay";
+};
+
+&smb2360_2_eusb2_repeater {
+       vdd18-supply = <&vreg_l3d_1p8>;
+       vdd3-supply = <&vreg_l8b_3p0>;
+};
+
+&swr0 {
+       status = "okay";
+
+       pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
+       pinctrl-names = "default";
+
+       /* WSA8845, Left Woofer */
+       left_woofer: speaker@0,0 {
+               compatible = "sdw20217020400";
+               reg = <0 0>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "WooferLeft";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <1 2 3 7 10 13>;
+       };
+
+       /* WSA8845, Left Tweeter */
+       left_tweeter: speaker@0,1 {
+               compatible = "sdw20217020400";
+               reg = <0 1>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TweeterLeft";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <4 5 6 7 11 13>;
+       };
+};
+
+&swr1 {
+       status = "okay";
+
+       /* WCD9385 RX */
+       wcd_rx: codec@0,4 {
+               compatible = "sdw20217010d00";
+               reg = <0 4>;
+               qcom,rx-port-mapping = <1 2 3 4 5>;
+       };
+};
+
+&swr2 {
+       status = "okay";
+
+       /* WCD9385 TX */
+       wcd_tx: codec@0,3 {
+               compatible = "sdw20217010d00";
+               reg = <0 3>;
+               qcom,tx-port-mapping = <2 2 3 4>;
+       };
+};
+
+&swr3 {
+       status = "okay";
+
+       pinctrl-0 = <&wsa2_swr_active>, <&spkr_23_sd_n_active>;
+       pinctrl-names = "default";
+
+       /* WSA8845, Right Woofer */
+       right_woofer: speaker@0,0 {
+               compatible = "sdw20217020400";
+               reg = <0 0>;
+               reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "WooferRight";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <1 2 3 7 10 13>;
+       };
+
+       /* WSA8845, Right Tweeter */
+       right_tweeter: speaker@0,1 {
+               compatible = "sdw20217020400";
+               reg = <0 1>;
+               reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "TweeterRight";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <4 5 6 7 11 13>;
+       };
+};
+
+&tlmm {
+       gpio-reserved-ranges = <34 2>, /* Unused */
+                              <44 4>, /* SPI (TPM) */
+                              <238 1>; /* UFS Reset */
+
+       edp_reg_en: edp-reg-en-state {
+               pins = "gpio70";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       hall_int_n_default: hall-int-n-state {
+               pins = "gpio92";
+               function = "gpio";
+               bias-disable;
+       };
+
+       kybd_default: kybd-default-state {
+               pins = "gpio67";
+               function = "gpio";
+               bias-disable;
+       };
+
+       nvme_reg_en: nvme-reg-en-state {
+               pins = "gpio18";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       pcie4_default: pcie4-default-state {
+               clkreq-n-pins {
+                       pins = "gpio147";
+                       function = "pcie4_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio146";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio148";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       pcie5_default: pcie5-default-state {
+               clkreq-n-pins {
+                       pins = "gpio150";
+                       function = "pcie5_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio149";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio151";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       pcie6a_default: pcie6a-default-state {
+               clkreq-n-pins {
+                       pins = "gpio153";
+                       function = "pcie6a_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio152";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio154";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       rtmr1_default: rtmr1-reset-n-active-state {
+               pins = "gpio176";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       rtmr2_default: rtmr2-reset-n-active-state {
+               pins = "gpio185";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       tpad_default: tpad-default-state {
+               pins = "gpio3";
+               function = "gpio";
+               bias-disable;
+       };
+
+       ts0_default: ts0-default-state {
+               int-n-pins {
+                       pins = "gpio51";
+                       function = "gpio";
+                       bias-disable;
+               };
+
+               reset-n-pins {
+                       pins = "gpio48";
+                       function = "gpio";
+                       output-high;
+                       drive-strength = <16>;
+               };
+       };
+
+       usb1_pwr_1p15_reg_en: usb1-pwr-1p15-reg-en-state {
+               pins = "gpio188";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb1_pwr_1p8_reg_en: usb1-pwr-1p8-reg-en-state {
+               pins = "gpio175";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb1_pwr_3p3_reg_en: usb1-pwr-3p3-reg-en-state {
+               pins = "gpio186";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb2_pwr_1p15_reg_en: usb2-pwr-1p15-reg-en-state {
+               pins = "gpio189";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb2_pwr_1p8_reg_en: usb2-pwr-1p8-reg-en-state {
+               pins = "gpio126";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb2_pwr_3p3_reg_en: usb2-pwr-3p3-reg-en-state {
+               pins = "gpio187";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       wcd_default: wcd-reset-n-active-state {
+               pins = "gpio191";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+
+       wwan_sw_en: wwan-sw-en-state {
+               pins = "gpio221";
+               function = "gpio";
+               drive-strength = <4>;
+               bias-disable;
+       };
+};
+
+&uart21 {
+       compatible = "qcom,geni-debug-uart";
+       status = "okay";
+};
+
+&usb_1_ss0_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       phys = <&smb2360_0_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_1_ss0_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l1j_0p8>;
+
+       status = "okay";
+};
+
+&usb_1_ss0 {
+       status = "okay";
+};
+
+&usb_1_ss0_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_ss0_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss0_hs_in>;
+};
+
+&usb_1_ss0_qmpphy_out {
+       remote-endpoint = <&retimer_ss0_ss_in>;
+};
+
+&usb_1_ss1_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       phys = <&smb2360_1_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_1_ss1_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l2d_0p9>;
+
+       status = "okay";
+};
+
+&usb_1_ss1 {
+       status = "okay";
+};
+
+&usb_1_ss1_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_ss1_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss1_hs_in>;
+};
+
+&usb_1_ss1_qmpphy_out {
+       remote-endpoint = <&retimer_ss1_ss_in>;
+};
+
+&usb_1_ss2_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       phys = <&smb2360_2_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_1_ss2_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l2d_0p9>;
+
+       status = "okay";
+};
+
+&usb_1_ss2 {
+       status = "okay";
+};
+
+&usb_1_ss2_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_ss2_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss2_hs_in>;
+};
+
+&usb_1_ss2_qmpphy_out {
+       remote-endpoint = <&retimer_ss2_ss_in>;
+};
diff --git a/src/arm64/qcom/x1-el2.dtso b/src/arm64/qcom/x1-el2.dtso
new file mode 100644 (file)
index 0000000..380441d
--- /dev/null
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+/*
+ * x1 specific modifications required to boot in EL2.
+ */
+
+/dts-v1/;
+/plugin/;
+
+/* We can't and don't need to use zap shader in EL2 as linux can zap the gpu on it's own. */
+&gpu_zap_shader {
+       status = "disabled";
+};
+
+/*
+ * When running under Gunyah, this IOMMU is controlled by the firmware,
+ * however when we take ownership of it in EL2, we need to configure
+ * it properly to use PCIe.
+ *
+ * Additionally, it seems like ITS emulation in Gunyah is broken so we
+ * can't use MSI on some PCIe controllers in EL1. But we can add them
+ * here for EL2.
+ */
+&pcie3 {
+       iommu-map = <0 &pcie_smmu 0x30000 0x10000>;
+       msi-map = <0 &gic_its 0xb0000 0x10000>;
+};
+
+&pcie4 {
+       iommu-map = <0 &pcie_smmu 0x40000 0x10000>;
+};
+
+&pcie5 {
+       iommu-map = <0 &pcie_smmu 0x50000 0x10000>;
+       msi-map = <0 &gic_its 0xd0000 0x10000>;
+};
+
+&pcie6a {
+       iommu-map = <0 &pcie_smmu 0x60000 0x10000>;
+};
+
+&pcie_smmu {
+       status = "okay";
+};
+
+/*
+ * The "SBSA watchdog" is implemented in software in Gunyah
+ * and can't be used when running in EL2.
+ */
+&sbsa_watchdog {
+       status = "disabled";
+};
index 5e3970b26e2f95456a8acfd78728d6a65f64ff83..2d9627e6c7983daedba87619ba01074ee22b43c9 100644 (file)
                        regulator-min-microvolt = <1200000>;
                        regulator-max-microvolt = <1200000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l13b_3p0: ldo13 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l16b_2p9: ldo16 {
 
                vreg_l2j_1p2: ldo2 {
                        regulator-name = "vreg_l2j_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
                reg = <0x08>;
 
                clocks = <&rpmhcc RPMH_RF_CLK5>;
-               clock-names = "xo";
 
                vdd-supply = <&vreg_rtmr2_1p15>;
                vdd33-supply = <&vreg_rtmr2_3p3>;
                vddat-supply = <&vreg_rtmr2_1p15>;
                vddio-supply = <&vreg_rtmr2_1p8>;
 
-               reset-gpios = <&tlmm 185 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&tlmm 185 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr2_default>;
+               pinctrl-names = "default";
 
                orientation-switch;
                retimer-switch;
                reg = <0x08>;
 
                clocks = <&rpmhcc RPMH_RF_CLK3>;
-               clock-names = "xo";
 
                vdd-supply = <&vreg_rtmr0_1p15>;
                vdd33-supply = <&vreg_rtmr0_3p3>;
                vddat-supply = <&vreg_rtmr0_1p15>;
                vddio-supply = <&vreg_rtmr0_1p8>;
 
-               reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr0_default>;
+               pinctrl-names = "default";
 
                retimer-switch;
                orientation-switch;
        };
 };
 
+&i2c5 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       eusb3_repeater: redriver@47 {
+               compatible = "nxp,ptn3222";
+               reg = <0x47>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb3_reset_n>;
+               pinctrl-names = "default";
+       };
+
+       eusb6_repeater: redriver@4f {
+               compatible = "nxp,ptn3222";
+               reg = <0x4f>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb6_reset_n>;
+               pinctrl-names = "default";
+       };
+};
+
 &i2c7 {
        clock-frequency = <400000>;
 
                reg = <0x8>;
 
                clocks = <&rpmhcc RPMH_RF_CLK4>;
-               clock-names = "xo";
 
                vdd-supply = <&vreg_rtmr1_1p15>;
                vdd33-supply = <&vreg_rtmr1_3p3>;
                vddat-supply = <&vreg_rtmr1_1p15>;
                vddio-supply = <&vreg_rtmr1_1p8>;
 
-               reset-gpios = <&tlmm 176 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr1_default>;
+               pinctrl-names = "default";
 
                retimer-switch;
                orientation-switch;
 
 &mdss_dp0_out {
        data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
 };
 
 &mdss_dp1 {
 
 &mdss_dp1_out {
        data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
 };
 
 &mdss_dp2 {
 
 &mdss_dp2_out {
        data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
 };
 
 &pcie4 {
 };
 
 &pm8550_gpios {
+       rtmr0_default: rtmr0-reset-n-active-state {
+               pins = "gpio10";
+               function = "normal";
+               power-source = <1>; /* 1.8 V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+
        usb0_3p3_reg_en: usb0-3p3-reg-en-state {
                pins = "gpio11";
                function = "normal";
+               power-source = <1>; /* 1.8 V */
+               bias-disable;
+               input-disable;
+               output-enable;
        };
 };
 
        usb0_pwr_1p15_en: usb0-pwr-1p15-en-state {
                pins = "gpio8";
                function = "normal";
+               power-source = <1>; /* 1.8 V */
+               bias-disable;
+               input-disable;
+               output-enable;
        };
 };
 
        usb0_1p8_reg_en: usb0-1p8-reg-en-state {
                pins = "gpio8";
                function = "normal";
+               power-source = <1>; /* 1.8 V */
+               bias-disable;
+               input-disable;
+               output-enable;
        };
 };
 
 &tlmm {
        gpio-reserved-ranges = <44 4>; /* SPI (TPM) */
 
+       eusb3_reset_n: eusb3-reset-n-state {
+               pins = "gpio6";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       eusb6_reset_n: eusb6-reset-n-state {
+               pins = "gpio184";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
        nvme_reg_en: nvme-reg-en-state {
                pins = "gpio18";
                function = "gpio";
                };
        };
 
+       rtmr1_default: rtmr1-reset-n-active-state {
+               pins = "gpio176";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       rtmr2_default: rtmr2-reset-n-active-state {
+               pins = "gpio185";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
        rtmr1_1p15_reg_en: rtmr1-1p15-reg-en-state {
                pins = "gpio188";
                function = "gpio";
 &usb_1_ss2_qmpphy_out {
        remote-endpoint = <&retimer_ss2_ss_in>;
 };
+
+&usb_mp {
+       status = "okay";
+};
+
+&usb_mp_hsphy0 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb6_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp_hsphy1 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb3_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy1 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};
diff --git a/src/arm64/qcom/x1e78100-lenovo-thinkpad-t14s-oled.dts b/src/arm64/qcom/x1e78100-lenovo-thinkpad-t14s-oled.dts
new file mode 100644 (file)
index 0000000..be65faf
--- /dev/null
@@ -0,0 +1,12 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025, Linaro Limited
+ */
+
+#include "x1e78100-lenovo-thinkpad-t14s.dtsi"
+
+/ {
+       model = "Lenovo ThinkPad T14s Gen 6 (OLED)";
+       compatible = "lenovo,thinkpad-t14s-oled", "lenovo,thinkpad-t14s",
+                    "qcom,x1e78100", "qcom,x1e80100";
+};
index b2c2347f54fa65f9355f0d7c008119e95bb64fb2..5cc6a63d1ef6692bb01b15403c5bb0f01abfba74 100644 (file)
 // SPDX-License-Identifier: BSD-3-Clause
 /*
- * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
- * Copyright (c) 2024, Linaro Limited
+ * Copyright (c) 2025, Linaro Limited
  */
 
-/dts-v1/;
-
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/gpio-keys.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
-
-#include "x1e80100.dtsi"
-#include "x1e80100-pmics.dtsi"
+#include "x1e78100-lenovo-thinkpad-t14s.dtsi"
 
 / {
-       model = "Lenovo ThinkPad T14s Gen 6";
-       compatible = "lenovo,thinkpad-t14s", "qcom,x1e78100", "qcom,x1e80100";
-       chassis-type = "laptop";
-
-       wcd938x: audio-codec {
-               compatible = "qcom,wcd9385-codec";
-
-               pinctrl-0 = <&wcd_default>;
-               pinctrl-names = "default";
-
-               qcom,micbias1-microvolt = <1800000>;
-               qcom,micbias2-microvolt = <1800000>;
-               qcom,micbias3-microvolt = <1800000>;
-               qcom,micbias4-microvolt = <1800000>;
-               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
-               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
-               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
-               qcom,rx-device = <&wcd_rx>;
-               qcom,tx-device = <&wcd_tx>;
-
-               reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
-
-               vdd-buck-supply = <&vreg_l15b_1p8>;
-               vdd-rxtx-supply = <&vreg_l15b_1p8>;
-               vdd-io-supply = <&vreg_l15b_1p8>;
-               vdd-mic-bias-supply = <&vreg_bob1>;
-
-               #sound-dai-cells = <1>;
-       };
-
-       gpio-keys {
-               compatible = "gpio-keys";
-
-               pinctrl-0 = <&hall_int_n_default>;
-               pinctrl-names = "default";
-
-               switch-lid {
-                       gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
-                       linux,input-type = <EV_SW>;
-                       linux,code = <SW_LID>;
-                       wakeup-source;
-                       wakeup-event-action = <EV_ACT_DEASSERTED>;
-               };
-       };
-
-       pmic-glink {
-               compatible = "qcom,x1e80100-pmic-glink",
-                            "qcom,sm8550-pmic-glink",
-                            "qcom,pmic-glink";
-               orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
-                                   <&tlmm 123 GPIO_ACTIVE_HIGH>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-
-               /* Display-adjacent port */
-               connector@0 {
-                       compatible = "usb-c-connector";
-                       reg = <0>;
-                       power-role = "dual";
-                       data-role = "dual";
-
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@0 {
-                                       reg = <0>;
-
-                                       pmic_glink_ss0_hs_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss0_dwc3_hs>;
-                                       };
-                               };
-
-                               port@1 {
-                                       reg = <1>;
-
-                                       pmic_glink_ss0_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss0_qmpphy_out>;
-                                       };
-                               };
-                       };
-               };
+       model = "Lenovo ThinkPad T14s Gen 6 (LCD)";
+       compatible = "lenovo,thinkpad-t14s-lcd", "lenovo,thinkpad-t14s",
+                    "qcom,x1e78100", "qcom,x1e80100";
 
-               /* User-adjacent port */
-               connector@1 {
-                       compatible = "usb-c-connector";
-                       reg = <1>;
-                       power-role = "dual";
-                       data-role = "dual";
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pmk8550_pwm 0 4266537>;
+               enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
+               power-supply = <&vreg_edp_bl>;
 
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@0 {
-                                       reg = <0>;
-
-                                       pmic_glink_ss1_hs_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss1_dwc3_hs>;
-                                       };
-                               };
-
-                               port@1 {
-                                       reg = <1>;
-
-                                       pmic_glink_ss1_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss1_qmpphy_out>;
-                                       };
-                               };
-                       };
-               };
-       };
-
-       reserved-memory {
-               linux,cma {
-                       compatible = "shared-dma-pool";
-                       size = <0x0 0x8000000>;
-                       reusable;
-                       linux,cma-default;
-               };
-       };
-
-       vreg_edp_3p3: regulator-edp-3p3 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "VREG_EDP_3P3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-
-               pinctrl-0 = <&edp_reg_en>;
+               pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>;
                pinctrl-names = "default";
-
-               regulator-boot-on;
        };
 
-       vreg_nvme: regulator-nvme {
+       vreg_edp_bl: regulator-edp-bl {
                compatible = "regulator-fixed";
 
-               regulator-name = "VREG_NVME_3P3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
+               regulator-name = "VBL9";
+               regulator-min-microvolt = <3600000>;
+               regulator-max-microvolt = <3600000>;
 
-               gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>;
+               gpio = <&pmc8380_3_gpios 10 GPIO_ACTIVE_HIGH>;
                enable-active-high;
 
-               pinctrl-0 = <&nvme_reg_en>;
                pinctrl-names = "default";
+               pinctrl-0 = <&edp_bl_reg_en>;
 
                regulator-boot-on;
        };
-
-       vph_pwr: regulator-vph-pwr {
-               compatible = "regulator-fixed";
-
-               regulator-name = "vph_pwr";
-               regulator-min-microvolt = <3700000>;
-               regulator-max-microvolt = <3700000>;
-
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       sound {
-               compatible = "qcom,x1e80100-sndcard";
-               model = "X1E80100-LENOVO-Thinkpad-T14s";
-               audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT",
-                               "SpkrRight IN", "WSA WSA_SPK2 OUT",
-                               "IN1_HPHL", "HPHL_OUT",
-                               "IN2_HPHR", "HPHR_OUT",
-                               "AMIC2", "MIC BIAS2",
-                               "VA DMIC0", "MIC BIAS1",
-                               "VA DMIC1", "MIC BIAS1",
-                               "VA DMIC0", "VA MIC BIAS1",
-                               "VA DMIC1", "VA MIC BIAS1",
-                               "TX SWR_INPUT1", "ADC2_OUTPUT";
-
-               wcd-playback-dai-link {
-                       link-name = "WCD Playback";
-
-                       cpu {
-                               sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
-                       };
-
-                       codec {
-                               sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
-                       };
-
-                       platform {
-                               sound-dai = <&q6apm>;
-                       };
-               };
-
-               wcd-capture-dai-link {
-                       link-name = "WCD Capture";
-
-                       cpu {
-                               sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
-                       };
-
-                       codec {
-                               sound-dai = <&wcd938x 1>, <&swr2 1>, <&lpass_txmacro 0>;
-                       };
-
-                       platform {
-                               sound-dai = <&q6apm>;
-                       };
-               };
-
-               wsa-dai-link {
-                       link-name = "WSA Playback";
-
-                       cpu {
-                               sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
-                       };
-
-                       codec {
-                               sound-dai = <&left_spkr>, <&right_spkr>, <&swr0 0>, <&lpass_wsamacro 0>;
-                       };
-
-                       platform {
-                               sound-dai = <&q6apm>;
-                       };
-               };
-
-               va-dai-link {
-                       link-name = "VA Capture";
-
-                       cpu {
-                               sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
-                       };
-
-                       codec {
-                               sound-dai = <&lpass_vamacro 0>;
-                       };
-
-                       platform {
-                               sound-dai = <&q6apm>;
-                       };
-               };
-       };
 };
 
-&apps_rsc {
-       regulators-0 {
-               compatible = "qcom,pm8550-rpmh-regulators";
-               qcom,pmic-id = "b";
-
-               vdd-bob1-supply = <&vph_pwr>;
-               vdd-bob2-supply = <&vph_pwr>;
-               vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
-               vdd-l2-l13-l14-supply = <&vreg_bob1>;
-               vdd-l5-l16-supply = <&vreg_bob1>;
-               vdd-l6-l7-supply = <&vreg_bob2>;
-               vdd-l8-l9-supply = <&vreg_bob1>;
-               vdd-l12-supply = <&vreg_s5j_1p2>;
-               vdd-l15-supply = <&vreg_s4c_1p8>;
-               vdd-l17-supply = <&vreg_bob2>;
-
-               vreg_bob1: bob1 {
-                       regulator-name = "vreg_bob1";
-                       regulator-min-microvolt = <3008000>;
-                       regulator-max-microvolt = <3960000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_bob2: bob2 {
-                       regulator-name = "vreg_bob2";
-                       regulator-min-microvolt = <2504000>;
-                       regulator-max-microvolt = <3008000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l1b_1p8: ldo1 {
-                       regulator-name = "vreg_l1b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2b_3p0: ldo2 {
-                       regulator-name = "vreg_l2b_3p0";
-                       regulator-min-microvolt = <3072000>;
-                       regulator-max-microvolt = <3072000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l4b_1p8: ldo4 {
-                       regulator-name = "vreg_l4b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l6b_1p8: ldo6 {
-                       regulator-name = "vreg_l6b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <2960000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l8b_3p0: ldo8 {
-                       regulator-name = "vreg_l8b_3p0";
-                       regulator-min-microvolt = <3072000>;
-                       regulator-max-microvolt = <3072000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l9b_2p9: ldo9 {
-                       regulator-name = "vreg_l9b_2p9";
-                       regulator-min-microvolt = <2960000>;
-                       regulator-max-microvolt = <2960000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l10b_1p8: ldo10 {
-                       regulator-name = "vreg_l10b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l12b_1p2: ldo12 {
-                       regulator-name = "vreg_l12b_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l13b_3p0: ldo13 {
-                       regulator-name = "vreg_l13b_3p0";
-                       regulator-min-microvolt = <3072000>;
-                       regulator-max-microvolt = <3072000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l14b_3p0: ldo14 {
-                       regulator-name = "vreg_l14b_3p0";
-                       regulator-min-microvolt = <3072000>;
-                       regulator-max-microvolt = <3072000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l15b_1p8: ldo15 {
-                       regulator-name = "vreg_l15b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l17b_2p5: ldo17 {
-                       regulator-name = "vreg_l17b_2p5";
-                       regulator-min-microvolt = <2504000>;
-                       regulator-max-microvolt = <2504000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-1 {
-               compatible = "qcom,pm8550ve-rpmh-regulators";
-               qcom,pmic-id = "c";
-
-               vdd-l1-supply = <&vreg_s5j_1p2>;
-               vdd-l2-supply = <&vreg_s1f_0p7>;
-               vdd-l3-supply = <&vreg_s1f_0p7>;
-               vdd-s4-supply = <&vph_pwr>;
-
-               vreg_s4c_1p8: smps4 {
-                       regulator-name = "vreg_s4c_1p8";
-                       regulator-min-microvolt = <1856000>;
-                       regulator-max-microvolt = <2000000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l1c_1p2: ldo1 {
-                       regulator-name = "vreg_l1c_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2c_0p8: ldo2 {
-                       regulator-name = "vreg_l2c_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <880000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3c_0p8: ldo3 {
-                       regulator-name = "vreg_l3c_0p8";
-                       regulator-min-microvolt = <912000>;
-                       regulator-max-microvolt = <912000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-2 {
-               compatible = "qcom,pmc8380-rpmh-regulators";
-               qcom,pmic-id = "d";
-
-               vdd-l1-supply = <&vreg_s1f_0p7>;
-               vdd-l2-supply = <&vreg_s1f_0p7>;
-               vdd-l3-supply = <&vreg_s4c_1p8>;
-               vdd-s1-supply = <&vph_pwr>;
-
-               vreg_l1d_0p8: ldo1 {
-                       regulator-name = "vreg_l1d_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <880000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2d_0p9: ldo2 {
-                       regulator-name = "vreg_l2d_0p9";
-                       regulator-min-microvolt = <912000>;
-                       regulator-max-microvolt = <912000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3d_1p8: ldo3 {
-                       regulator-name = "vreg_l3d_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-3 {
-               compatible = "qcom,pmc8380-rpmh-regulators";
-               qcom,pmic-id = "e";
-
-               vdd-l2-supply = <&vreg_s1f_0p7>;
-               vdd-l3-supply = <&vreg_s5j_1p2>;
-
-               vreg_l2e_0p8: ldo2 {
-                       regulator-name = "vreg_l2e_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <880000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3e_1p2: ldo3 {
-                       regulator-name = "vreg_l3e_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-4 {
-               compatible = "qcom,pmc8380-rpmh-regulators";
-               qcom,pmic-id = "f";
-
-               vdd-l1-supply = <&vreg_s5j_1p2>;
-               vdd-l2-supply = <&vreg_s5j_1p2>;
-               vdd-l3-supply = <&vreg_s5j_1p2>;
-               vdd-s1-supply = <&vph_pwr>;
-
-               vreg_s1f_0p7: smps1 {
-                       regulator-name = "vreg_s1f_0p7";
-                       regulator-min-microvolt = <700000>;
-                       regulator-max-microvolt = <1100000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-6 {
-               compatible = "qcom,pm8550ve-rpmh-regulators";
-               qcom,pmic-id = "i";
-
-               vdd-l1-supply = <&vreg_s4c_1p8>;
-               vdd-l2-supply = <&vreg_s5j_1p2>;
-               vdd-l3-supply = <&vreg_s1f_0p7>;
-               vdd-s1-supply = <&vph_pwr>;
-               vdd-s2-supply = <&vph_pwr>;
-
-               vreg_l1i_1p8: ldo1 {
-                       regulator-name = "vreg_l1i_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2i_1p2: ldo2 {
-                       regulator-name = "vreg_l2i_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3i_0p8: ldo3 {
-                       regulator-name = "vreg_l3i_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <880000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-7 {
-               compatible = "qcom,pm8550ve-rpmh-regulators";
-               qcom,pmic-id = "j";
-
-               vdd-l1-supply = <&vreg_s1f_0p7>;
-               vdd-l2-supply = <&vreg_s5j_1p2>;
-               vdd-l3-supply = <&vreg_s1f_0p7>;
-               vdd-s5-supply = <&vph_pwr>;
-
-               vreg_s5j_1p2: smps5 {
-                       regulator-name = "vreg_s5j_1p2";
-                       regulator-min-microvolt = <1256000>;
-                       regulator-max-microvolt = <1304000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l1j_0p8: ldo1 {
-                       regulator-name = "vreg_l1j_0p8";
-                       regulator-min-microvolt = <912000>;
-                       regulator-max-microvolt = <912000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2j_1p2: ldo2 {
-                       regulator-name = "vreg_l2j_1p2";
-                       regulator-min-microvolt = <1256000>;
-                       regulator-max-microvolt = <1256000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3j_0p8: ldo3 {
-                       regulator-name = "vreg_l3j_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <880000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-};
-
-&gpu {
-       status = "okay";
-
-       zap-shader {
-               firmware-name = "qcom/x1e80100/LENOVO/21N1/qcdxkmsuc8380.mbn";
-       };
-};
-
-&i2c0 {
-       clock-frequency = <400000>;
-
-       pinctrl-0 = <&qup_i2c0_data_clk>, <&tpad_default>;
-       pinctrl-names = "default";
-
-       status = "okay";
-
-       /* ELAN06E2 or ELAN06E3 */
-       touchpad@15 {
-               compatible = "hid-over-i2c";
-               reg = <0x15>;
-
-               hid-descr-addr = <0x1>;
-               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
-
-               wakeup-source;
-       };
-
-       /* SYNA8022 or SYNA8024 */
-       touchpad@2c {
-               compatible = "hid-over-i2c";
-               reg = <0x2c>;
-
-               hid-descr-addr = <0x20>;
-               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
-
-               wakeup-source;
-       };
-
-       /* ELAN06F1 or SYNA06F2 */
-       keyboard@3a {
-               compatible = "hid-over-i2c";
-               reg = <0x3a>;
-
-               hid-descr-addr = <0x1>;
-               interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>;
-
-               pinctrl-0 = <&kybd_default>;
-               pinctrl-names = "default";
-
-               wakeup-source;
-       };
-};
-
-&i2c5 {
-       clock-frequency = <400000>;
-
-       status = "okay";
-
-       eusb5_repeater: redriver@43 {
-               compatible = "nxp,ptn3222";
-               reg = <0x43>;
-               #phy-cells = <0>;
-
-               vdd3v3-supply = <&vreg_l13b_3p0>;
-               vdd1v8-supply = <&vreg_l4b_1p8>;
-
-               reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
-
-               pinctrl-0 = <&eusb5_reset_n>;
-               pinctrl-names = "default";
-       };
-
-       eusb3_repeater: redriver@47 {
-               compatible = "nxp,ptn3222";
-               reg = <0x47>;
-               #phy-cells = <0>;
-
-               vdd3v3-supply = <&vreg_l13b_3p0>;
-               vdd1v8-supply = <&vreg_l4b_1p8>;
-
-               reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
-
-               pinctrl-0 = <&eusb3_reset_n>;
-               pinctrl-names = "default";
-       };
-
-       eusb6_repeater: redriver@4f {
-               compatible = "nxp,ptn3222";
-               reg = <0x4f>;
-               #phy-cells = <0>;
-
-               vdd3v3-supply = <&vreg_l13b_3p0>;
-               vdd1v8-supply = <&vreg_l4b_1p8>;
-
-               reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
-
-               pinctrl-0 = <&eusb6_reset_n>;
-               pinctrl-names = "default";
-       };
-};
-
-&i2c8 {
-       clock-frequency = <400000>;
-
-       status = "okay";
-
-       /* ILIT2911 or GTCH1563 */
-       touchscreen@10 {
-               compatible = "hid-over-i2c";
-               reg = <0x10>;
-
-               hid-descr-addr = <0x1>;
-               interrupts-extended = <&tlmm 51 IRQ_TYPE_LEVEL_LOW>;
-
-               pinctrl-0 = <&ts0_default>;
-               pinctrl-names = "default";
-       };
-
-       /* TODO: second-sourced touchscreen @ 0x41 */
-};
-
-&lpass_tlmm {
-       spkr_01_sd_n_active: spkr-01-sd-n-active-state {
-               pins = "gpio12";
-               function = "gpio";
-               drive-strength = <16>;
-               bias-disable;
-               output-low;
-       };
-};
-
-&lpass_vamacro {
-       pinctrl-0 = <&dmic01_default>;
-       pinctrl-names = "default";
-
-       vdd-micb-supply = <&vreg_l1b_1p8>;
-       qcom,dmic-sample-rate = <4800000>;
-};
-
-&mdss {
-       status = "okay";
-};
-
-&mdss_dp3 {
-       compatible = "qcom,x1e80100-dp";
-       /delete-property/ #sound-dai-cells;
-
-       status = "okay";
-
-       aux-bus {
-               panel {
-                       compatible = "edp-panel";
-                       enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
-                       power-supply = <&vreg_edp_3p3>;
-
-                       pinctrl-0 = <&edp_bl_en>;
-                       pinctrl-names = "default";
-
-                       port {
-                               edp_panel_in: endpoint {
-                                       remote-endpoint = <&mdss_dp3_out>;
-                               };
-                       };
-               };
-       };
-
-       ports {
-               port@1 {
-                       reg = <1>;
-
-                       mdss_dp3_out: endpoint {
-                               data-lanes = <0 1 2 3>;
-                               link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
-
-                               remote-endpoint = <&edp_panel_in>;
-                       };
-               };
-       };
-};
-
-&mdss_dp3_phy {
-       vdda-phy-supply = <&vreg_l3j_0p8>;
-       vdda-pll-supply = <&vreg_l2j_1p2>;
-
-       status = "okay";
-};
-
-&pcie4 {
-       perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
-       wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
-
-       pinctrl-0 = <&pcie4_default>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&pcie4_phy {
-       vdda-phy-supply = <&vreg_l3i_0p8>;
-       vdda-pll-supply = <&vreg_l3e_1p2>;
-
-       status = "okay";
-};
-
-&pcie6a {
-       perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
-       wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
-
-       vddpe-3v3-supply = <&vreg_nvme>;
-
-       pinctrl-0 = <&pcie6a_default>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&pcie6a_phy {
-       vdda-phy-supply = <&vreg_l1d_0p8>;
-       vdda-pll-supply = <&vreg_l2j_1p2>;
-
-       status = "okay";
+&panel {
+       backlight = <&backlight>;
 };
 
 &pmc8380_3_gpios {
-       edp_bl_en: edp-bl-en-state {
-               pins = "gpio4";
+       edp_bl_reg_en: edp-bl-reg-en-state {
+               pins = "gpio10";
                function = "normal";
-               power-source = <1>;
-               input-disable;
-               output-enable;
        };
 };
 
-&qupv3_0 {
-       status = "okay";
-};
-
-&qupv3_1 {
-       status = "okay";
-};
-
-&qupv3_2 {
-       status = "okay";
-};
-
-&remoteproc_adsp {
-       firmware-name = "qcom/x1e80100/LENOVO/21N1/qcadsp8380.mbn",
-                       "qcom/x1e80100/LENOVO/21N1/adsp_dtbs.elf";
-
-       status = "okay";
-};
-
-&remoteproc_cdsp {
-       firmware-name = "qcom/x1e80100/LENOVO/21N1/qccdsp8380.mbn",
-                       "qcom/x1e80100/LENOVO/21N1/cdsp_dtbs.elf";
-
-       status = "okay";
-};
-
-&smb2360_0 {
-       status = "okay";
-};
-
-&smb2360_0_eusb2_repeater {
-       vdd18-supply = <&vreg_l3d_1p8>;
-       vdd3-supply = <&vreg_l2b_3p0>;
-};
-
-&smb2360_1 {
-       status = "okay";
-};
-
-&smb2360_1_eusb2_repeater {
-       vdd18-supply = <&vreg_l3d_1p8>;
-       vdd3-supply = <&vreg_l14b_3p0>;
-};
-
-&swr0 {
-       status = "okay";
-
-       pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
-       pinctrl-names = "default";
-
-       /* WSA8845, Left Speaker */
-       left_spkr: speaker@0,0 {
-               compatible = "sdw20217020400";
-               reg = <0 0>;
-               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "SpkrLeft";
-               vdd-1p8-supply = <&vreg_l15b_1p8>;
-               vdd-io-supply = <&vreg_l12b_1p2>;
-               qcom,port-mapping = <1 2 3 7 10 13>;
-       };
-
-       /* WSA8845, Right Speaker */
-       right_spkr: speaker@0,1 {
-               compatible = "sdw20217020400";
-               reg = <0 1>;
-               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "SpkrRight";
-               vdd-1p8-supply = <&vreg_l15b_1p8>;
-               vdd-io-supply = <&vreg_l12b_1p2>;
-               qcom,port-mapping = <4 5 6 7 11 13>;
-       };
-};
-
-&swr1 {
-       status = "okay";
-
-       /* WCD9385 RX */
-       wcd_rx: codec@0,4 {
-               compatible = "sdw20217010d00";
-               reg = <0 4>;
-               qcom,rx-port-mapping = <1 2 3 4 5>;
-       };
-};
-
-&swr2 {
-       status = "okay";
-
-       /* WCD9385 TX */
-       wcd_tx: codec@0,3 {
-               compatible = "sdw20217010d00";
-               reg = <0 3>;
-               qcom,tx-port-mapping = <2 2 3 4>;
-       };
-};
-
-&tlmm {
-       gpio-reserved-ranges = <34 2>, /* Unused */
-                              <44 4>, /* SPI (TPM) */
-                              <72 2>, /* Secure EC I2C connection (?) */
-                              <238 1>; /* UFS Reset */
-
-       eusb3_reset_n: eusb3-reset-n-state {
-               pins = "gpio6";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-               output-low;
-       };
-
-       eusb5_reset_n: eusb5-reset-n-state {
-               pins = "gpio7";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-               output-low;
-       };
-
-       eusb6_reset_n: eusb6-reset-n-state {
-               pins = "gpio184";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-               output-low;
+&pmk8550_gpios {
+       edp_bl_pwm: edp-bl-pwm-state {
+               pins = "gpio5";
+               function = "func3";
        };
-
-       tpad_default: tpad-default-state {
-               pins = "gpio3";
-               function = "gpio";
-               bias-pull-up;
-       };
-
-       nvme_reg_en: nvme-reg-en-state {
-               pins = "gpio18";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-       };
-
-       ts0_default: ts0-default-state {
-               reset-n-pins {
-                       pins = "gpio48";
-                       function = "gpio";
-                       output-high;
-                       drive-strength = <16>;
-               };
-
-               int-n-pins {
-                       pins = "gpio51";
-                       function = "gpio";
-                       bias-disable;
-               };
-       };
-
-       kybd_default: kybd-default-state {
-               pins = "gpio67";
-               function = "gpio";
-               bias-disable;
-       };
-
-       edp_reg_en: edp-reg-en-state {
-               pins = "gpio70";
-               function = "gpio";
-               drive-strength = <16>;
-               bias-disable;
-       };
-
-       hall_int_n_default: hall-int-n-state {
-               pins = "gpio92";
-               function = "gpio";
-               bias-disable;
-       };
-
-       pcie4_default: pcie4-default-state {
-               clkreq-n-pins {
-                       pins = "gpio147";
-                       function = "pcie4_clk";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-
-               perst-n-pins {
-                       pins = "gpio146";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-disable;
-               };
-
-               wake-n-pins {
-                       pins = "gpio148";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-       };
-
-       pcie6a_default: pcie6a-default-state {
-               clkreq-n-pins {
-                       pins = "gpio153";
-                       function = "pcie6a_clk";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-
-               perst-n-pins {
-                       pins = "gpio152";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-disable;
-               };
-
-               wake-n-pins {
-                       pins = "gpio154";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-       };
-
-       wcd_default: wcd-reset-n-active-state {
-               pins = "gpio191";
-               function = "gpio";
-               drive-strength = <16>;
-               bias-disable;
-               output-low;
-       };
-};
-
-&usb_1_ss0_hsphy {
-       vdd-supply = <&vreg_l3j_0p8>;
-       vdda12-supply = <&vreg_l2j_1p2>;
-
-       phys = <&smb2360_0_eusb2_repeater>;
-
-       status = "okay";
-};
-
-&usb_1_ss0_qmpphy {
-       vdda-phy-supply = <&vreg_l2j_1p2>;
-       vdda-pll-supply = <&vreg_l1j_0p8>;
-
-       status = "okay";
-};
-
-&usb_1_ss0 {
-       status = "okay";
-};
-
-&usb_1_ss0_dwc3 {
-       dr_mode = "host";
-};
-
-&usb_1_ss0_dwc3_hs {
-       remote-endpoint = <&pmic_glink_ss0_hs_in>;
 };
 
-&usb_1_ss0_qmpphy_out {
-       remote-endpoint = <&pmic_glink_ss0_ss_in>;
-};
-
-&usb_1_ss1_hsphy {
-       vdd-supply = <&vreg_l3j_0p8>;
-       vdda12-supply = <&vreg_l2j_1p2>;
-
-       phys = <&smb2360_1_eusb2_repeater>;
-
-       status = "okay";
-};
-
-&usb_1_ss1_qmpphy {
-       vdda-phy-supply = <&vreg_l2j_1p2>;
-       vdda-pll-supply = <&vreg_l2d_0p9>;
-
-       status = "okay";
-};
-
-&usb_1_ss1 {
-       status = "okay";
-};
-
-&usb_1_ss1_dwc3 {
-       dr_mode = "host";
-};
-
-&usb_1_ss1_dwc3_hs {
-       remote-endpoint = <&pmic_glink_ss1_hs_in>;
-};
-
-&usb_1_ss1_qmpphy_out {
-       remote-endpoint = <&pmic_glink_ss1_ss_in>;
-};
-
-&usb_2 {
-       status = "okay";
-};
-
-&usb_2_dwc3 {
-       dr_mode = "host";
-};
-
-&usb_2_hsphy {
-       vdd-supply = <&vreg_l2e_0p8>;
-       vdda12-supply = <&vreg_l3e_1p2>;
-
-       phys = <&eusb5_repeater>;
-
-       status = "okay";
-};
-
-&usb_mp {
-       status = "okay";
-};
-
-&usb_mp_hsphy0 {
-       vdd-supply = <&vreg_l2e_0p8>;
-       vdda12-supply = <&vreg_l3e_1p2>;
-
-       phys = <&eusb6_repeater>;
-
-       status = "okay";
-};
-
-&usb_mp_hsphy1 {
-       vdd-supply = <&vreg_l2e_0p8>;
-       vdda12-supply = <&vreg_l3e_1p2>;
-
-       phys = <&eusb3_repeater>;
-
-       status = "okay";
-};
-
-&usb_mp_qmpphy0 {
-       vdda-phy-supply = <&vreg_l3e_1p2>;
-       vdda-pll-supply = <&vreg_l3c_0p8>;
-
-       status = "okay";
-};
-
-&usb_mp_qmpphy1 {
-       vdda-phy-supply = <&vreg_l3e_1p2>;
-       vdda-pll-supply = <&vreg_l3c_0p8>;
-
+&pmk8550_pwm {
        status = "okay";
 };
diff --git a/src/arm64/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi b/src/arm64/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi
new file mode 100644 (file)
index 0000000..ac1dddf
--- /dev/null
@@ -0,0 +1,1576 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2024, Linaro Limited
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/gpio-keys.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+#include "x1e80100.dtsi"
+#include "x1e80100-pmics.dtsi"
+
+/ {
+       model = "Lenovo ThinkPad T14s Gen 6";
+       compatible = "lenovo,thinkpad-t14s", "qcom,x1e78100", "qcom,x1e80100";
+       chassis-type = "laptop";
+
+       wcd938x: audio-codec {
+               compatible = "qcom,wcd9385-codec";
+
+               pinctrl-0 = <&wcd_default>;
+               pinctrl-names = "default";
+
+               qcom,micbias1-microvolt = <1800000>;
+               qcom,micbias2-microvolt = <1800000>;
+               qcom,micbias3-microvolt = <1800000>;
+               qcom,micbias4-microvolt = <1800000>;
+               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
+               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+               qcom,rx-device = <&wcd_rx>;
+               qcom,tx-device = <&wcd_tx>;
+
+               reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
+               mux-controls = <&us_euro_mux_ctrl>;
+
+               vdd-buck-supply = <&vreg_l15b_1p8>;
+               vdd-rxtx-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l15b_1p8>;
+               vdd-mic-bias-supply = <&vreg_bob1>;
+
+               #sound-dai-cells = <1>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               pinctrl-0 = <&hall_int_n_default>;
+               pinctrl-names = "default";
+
+               switch-lid {
+                       gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_LID>;
+                       wakeup-source;
+                       wakeup-event-action = <EV_ACT_DEASSERTED>;
+               };
+       };
+
+       pmic-glink {
+               compatible = "qcom,x1e80100-pmic-glink",
+                            "qcom,sm8550-pmic-glink",
+                            "qcom,pmic-glink";
+               orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
+                                   <&tlmm 123 GPIO_ACTIVE_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               /* Display-adjacent port */
+               connector@0 {
+                       compatible = "usb-c-connector";
+                       reg = <0>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss0_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss0_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss0_ss_in: endpoint {
+                                               remote-endpoint = <&retimer_ss0_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss0_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss0_con_sbu_out>;
+                                       };
+                               };
+                       };
+               };
+
+               /* User-adjacent port */
+               connector@1 {
+                       compatible = "usb-c-connector";
+                       reg = <1>;
+                       power-role = "dual";
+                       data-role = "dual";
+
+                       ports {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               port@0 {
+                                       reg = <0>;
+
+                                       pmic_glink_ss1_hs_in: endpoint {
+                                               remote-endpoint = <&usb_1_ss1_dwc3_hs>;
+                                       };
+                               };
+
+                               port@1 {
+                                       reg = <1>;
+
+                                       pmic_glink_ss1_ss_in: endpoint {
+                                               remote-endpoint = <&retimer_ss1_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss1_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss1_con_sbu_out>;
+                                       };
+                               };
+                       };
+               };
+       };
+
+       /* two muxes together support CTIA and OMTP switching */
+       us_euro_mux_ctrl: mux-controller {
+               compatible = "gpio-mux";
+               pinctrl-0 = <&us_euro_hs_sel>;
+               pinctrl-names = "default";
+               mux-supply = <&vreg_l16b_2p5>;
+               #mux-control-cells = <0>;
+               mux-gpios = <&tlmm 68 GPIO_ACTIVE_HIGH>;
+       };
+
+       reserved-memory {
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       size = <0x0 0x8000000>;
+                       reusable;
+                       linux,cma-default;
+               };
+       };
+
+       vreg_edp_3p3: regulator-edp-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_EDP_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&edp_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_misc_3p3: regulator-misc-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VCC3B";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pm8550ve_8_gpios 6 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&misc_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vreg_nvme: regulator-nvme {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_NVME_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&nvme_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vph_pwr: regulator-vph-pwr {
+               compatible = "regulator-fixed";
+
+               regulator-name = "vph_pwr";
+               regulator-min-microvolt = <3700000>;
+               regulator-max-microvolt = <3700000>;
+
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vreg_wwan: regulator-wwan {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VCC3B_WAN_RCM";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 221 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&wwan_sw_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       sound {
+               compatible = "qcom,x1e80100-sndcard";
+               model = "X1E80100-LENOVO-Thinkpad-T14s";
+               audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT",
+                               "SpkrRight IN", "WSA WSA_SPK2 OUT",
+                               "IN1_HPHL", "HPHL_OUT",
+                               "IN2_HPHR", "HPHR_OUT",
+                               "AMIC2", "MIC BIAS2",
+                               "VA DMIC0", "MIC BIAS1",
+                               "VA DMIC1", "MIC BIAS1",
+                               "VA DMIC0", "VA MIC BIAS1",
+                               "VA DMIC1", "VA MIC BIAS1",
+                               "TX SWR_INPUT1", "ADC2_OUTPUT";
+
+               wcd-playback-dai-link {
+                       link-name = "WCD Playback";
+
+                       cpu {
+                               sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+                       };
+
+                       codec {
+                               sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wcd-capture-dai-link {
+                       link-name = "WCD Capture";
+
+                       cpu {
+                               sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+                       };
+
+                       codec {
+                               sound-dai = <&wcd938x 1>, <&swr2 1>, <&lpass_txmacro 0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               wsa-dai-link {
+                       link-name = "WSA Playback";
+
+                       cpu {
+                               sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+                       };
+
+                       codec {
+                               sound-dai = <&left_spkr>, <&right_spkr>, <&swr0 0>, <&lpass_wsamacro 0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+
+               va-dai-link {
+                       link-name = "VA Capture";
+
+                       cpu {
+                               sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+                       };
+
+                       codec {
+                               sound-dai = <&lpass_vamacro 0>;
+                       };
+
+                       platform {
+                               sound-dai = <&q6apm>;
+                       };
+               };
+       };
+};
+
+&apps_rsc {
+       regulators-0 {
+               compatible = "qcom,pm8550-rpmh-regulators";
+               qcom,pmic-id = "b";
+
+               vdd-bob1-supply = <&vph_pwr>;
+               vdd-bob2-supply = <&vph_pwr>;
+               vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
+               vdd-l2-l13-l14-supply = <&vreg_bob1>;
+               vdd-l5-l16-supply = <&vreg_bob1>;
+               vdd-l6-l7-supply = <&vreg_bob2>;
+               vdd-l8-l9-supply = <&vreg_bob1>;
+               vdd-l12-supply = <&vreg_s5j_1p2>;
+               vdd-l15-supply = <&vreg_s4c_1p8>;
+               vdd-l17-supply = <&vreg_bob2>;
+
+               vreg_bob1: bob1 {
+                       regulator-name = "vreg_bob1";
+                       regulator-min-microvolt = <3008000>;
+                       regulator-max-microvolt = <3960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_bob2: bob2 {
+                       regulator-name = "vreg_bob2";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <3008000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1b_1p8: ldo1 {
+                       regulator-name = "vreg_l1b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2b_3p0: ldo2 {
+                       regulator-name = "vreg_l2b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l4b_1p8: ldo4 {
+                       regulator-name = "vreg_l4b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l6b_1p8: ldo6 {
+                       regulator-name = "vreg_l6b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l8b_3p0: ldo8 {
+                       regulator-name = "vreg_l8b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l9b_2p9: ldo9 {
+                       regulator-name = "vreg_l9b_2p9";
+                       regulator-min-microvolt = <2960000>;
+                       regulator-max-microvolt = <2960000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l10b_1p8: ldo10 {
+                       regulator-name = "vreg_l10b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l12b_1p2: ldo12 {
+                       regulator-name = "vreg_l12b_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l13b_3p0: ldo13 {
+                       regulator-name = "vreg_l13b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l14b_3p0: ldo14 {
+                       regulator-name = "vreg_l14b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l15b_1p8: ldo15 {
+                       regulator-name = "vreg_l15b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
+               };
+
+               vreg_l16b_2p5: ldo16 {
+                       regulator-name = "vreg_l16b_2p5";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <2504000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l17b_2p5: ldo17 {
+                       regulator-name = "vreg_l17b_2p5";
+                       regulator-min-microvolt = <2504000>;
+                       regulator-max-microvolt = <2504000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-1 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "c";
+
+               vdd-l1-supply = <&vreg_s5j_1p2>;
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s4-supply = <&vph_pwr>;
+
+               vreg_s4c_1p8: smps4 {
+                       regulator-name = "vreg_s4c_1p8";
+                       regulator-min-microvolt = <1856000>;
+                       regulator-max-microvolt = <2000000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1c_1p2: ldo1 {
+                       regulator-name = "vreg_l1c_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2c_0p8: ldo2 {
+                       regulator-name = "vreg_l2c_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3c_0p8: ldo3 {
+                       regulator-name = "vreg_l3c_0p8";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-2 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "d";
+
+               vdd-l1-supply = <&vreg_s1f_0p7>;
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s4c_1p8>;
+               vdd-s1-supply = <&vph_pwr>;
+
+               vreg_l1d_0p8: ldo1 {
+                       regulator-name = "vreg_l1d_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2d_0p9: ldo2 {
+                       regulator-name = "vreg_l2d_0p9";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3d_1p8: ldo3 {
+                       regulator-name = "vreg_l3d_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-3 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "e";
+
+               vdd-l2-supply = <&vreg_s1f_0p7>;
+               vdd-l3-supply = <&vreg_s5j_1p2>;
+
+               vreg_l2e_0p8: ldo2 {
+                       regulator-name = "vreg_l2e_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3e_1p2: ldo3 {
+                       regulator-name = "vreg_l3e_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-4 {
+               compatible = "qcom,pmc8380-rpmh-regulators";
+               qcom,pmic-id = "f";
+
+               vdd-l1-supply = <&vreg_s5j_1p2>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s5j_1p2>;
+               vdd-s1-supply = <&vph_pwr>;
+
+               vreg_s1f_0p7: smps1 {
+                       regulator-name = "vreg_s1f_0p7";
+                       regulator-min-microvolt = <700000>;
+                       regulator-max-microvolt = <1100000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-6 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "i";
+
+               vdd-l1-supply = <&vreg_s4c_1p8>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s1-supply = <&vph_pwr>;
+               vdd-s2-supply = <&vph_pwr>;
+
+               vreg_l1i_1p8: ldo1 {
+                       regulator-name = "vreg_l1i_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2i_1p2: ldo2 {
+                       regulator-name = "vreg_l2i_1p2";
+                       regulator-min-microvolt = <1200000>;
+                       regulator-max-microvolt = <1200000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3i_0p8: ldo3 {
+                       regulator-name = "vreg_l3i_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+
+       regulators-7 {
+               compatible = "qcom,pm8550ve-rpmh-regulators";
+               qcom,pmic-id = "j";
+
+               vdd-l1-supply = <&vreg_s1f_0p7>;
+               vdd-l2-supply = <&vreg_s5j_1p2>;
+               vdd-l3-supply = <&vreg_s1f_0p7>;
+               vdd-s5-supply = <&vph_pwr>;
+
+               vreg_s5j_1p2: smps5 {
+                       regulator-name = "vreg_s5j_1p2";
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1304000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l1j_0p8: ldo1 {
+                       regulator-name = "vreg_l1j_0p8";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l2j_1p2: ldo2 {
+                       regulator-name = "vreg_l2j_1p2";
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l3j_0p8: ldo3 {
+                       regulator-name = "vreg_l3j_0p8";
+                       regulator-min-microvolt = <880000>;
+                       regulator-max-microvolt = <880000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+       };
+};
+
+&gpu {
+       status = "okay";
+
+       zap-shader {
+               firmware-name = "qcom/x1e80100/LENOVO/21N1/qcdxkmsuc8380.mbn";
+       };
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+
+       pinctrl-0 = <&qup_i2c0_data_clk>, <&tpad_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       /* ELAN06E2 or ELAN06E3 */
+       touchpad@15 {
+               compatible = "hid-over-i2c";
+               reg = <0x15>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+               vddl-supply = <&vreg_l12b_1p2>;
+
+               wakeup-source;
+       };
+
+       /* SYNA8022 or SYNA8024 */
+       touchpad@2c {
+               compatible = "hid-over-i2c";
+               reg = <0x2c>;
+
+               hid-descr-addr = <0x20>;
+               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+               vddl-supply = <&vreg_l12b_1p2>;
+
+               wakeup-source;
+       };
+
+       /* ELAN06F1 or SYNA06F2 */
+       keyboard@3a {
+               compatible = "hid-over-i2c";
+               reg = <0x3a>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+               vddl-supply = <&vreg_l15b_1p8>;
+
+               pinctrl-0 = <&kybd_default>;
+               pinctrl-names = "default";
+
+               wakeup-source;
+       };
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       typec-mux@8 {
+               compatible = "parade,ps8830";
+               reg = <0x08>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK3>;
+
+               vdd-supply = <&vreg_rtmr0_1p15>;
+               vdd33-supply = <&vreg_rtmr0_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr0_3p3>;
+               vddar-supply = <&vreg_rtmr0_1p15>;
+               vddat-supply = <&vreg_rtmr0_1p15>;
+               vddio-supply = <&vreg_rtmr0_1p8>;
+
+               reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr0_default>;
+               pinctrl-names = "default";
+
+               orientation-switch;
+               retimer-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss0_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss0_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss0_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss0_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c5 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       eusb5_repeater: redriver@43 {
+               compatible = "nxp,ptn3222";
+               reg = <0x43>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb5_reset_n>;
+               pinctrl-names = "default";
+       };
+
+       eusb3_repeater: redriver@47 {
+               compatible = "nxp,ptn3222";
+               reg = <0x47>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb3_reset_n>;
+               pinctrl-names = "default";
+       };
+
+       eusb6_repeater: redriver@4f {
+               compatible = "nxp,ptn3222";
+               reg = <0x4f>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb6_reset_n>;
+               pinctrl-names = "default";
+       };
+};
+
+&i2c7 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       typec-mux@8 {
+               compatible = "parade,ps8830";
+               reg = <0x8>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK4>;
+
+               vdd-supply = <&vreg_rtmr1_1p15>;
+               vdd33-supply = <&vreg_rtmr1_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr1_3p3>;
+               vddar-supply = <&vreg_rtmr1_1p15>;
+               vddat-supply = <&vreg_rtmr1_1p15>;
+               vddio-supply = <&vreg_rtmr1_1p8>;
+
+               reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr1_default>;
+               pinctrl-names = "default";
+
+               retimer-switch;
+               orientation-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss1_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss1_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss1_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss1_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c8 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       /* ILIT2911 or GTCH1563 */
+       touchscreen@10 {
+               compatible = "hid-over-i2c";
+               reg = <0x10>;
+
+               hid-descr-addr = <0x1>;
+               interrupts-extended = <&tlmm 51 IRQ_TYPE_LEVEL_LOW>;
+
+               vdd-supply = <&vreg_misc_3p3>;
+               vddl-supply = <&vreg_l15b_1p8>;
+
+               pinctrl-0 = <&ts0_default>;
+               pinctrl-names = "default";
+       };
+
+       /* TODO: second-sourced touchscreen @ 0x41 */
+};
+
+&lpass_tlmm {
+       spkr_01_sd_n_active: spkr-01-sd-n-active-state {
+               pins = "gpio12";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+};
+
+&lpass_vamacro {
+       pinctrl-0 = <&dmic01_default>;
+       pinctrl-names = "default";
+
+       vdd-micb-supply = <&vreg_l1b_1p8>;
+       qcom,dmic-sample-rate = <4800000>;
+};
+
+&mdss {
+       status = "okay";
+};
+
+&mdss_dp0 {
+       status = "okay";
+};
+
+&mdss_dp0_out {
+       data-lanes = <0 1>;
+};
+
+&mdss_dp1 {
+       status = "okay";
+};
+
+&mdss_dp1_out {
+       data-lanes = <0 1>;
+};
+
+&mdss_dp3 {
+       /delete-property/ #sound-dai-cells;
+
+       status = "okay";
+
+       aux-bus {
+               panel: panel {
+                       compatible = "edp-panel";
+                       power-supply = <&vreg_edp_3p3>;
+
+                       port {
+                               edp_panel_in: endpoint {
+                                       remote-endpoint = <&mdss_dp3_out>;
+                               };
+                       };
+               };
+       };
+
+       ports {
+               port@1 {
+                       reg = <1>;
+
+                       mdss_dp3_out: endpoint {
+                               data-lanes = <0 1 2 3>;
+                               link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+
+                               remote-endpoint = <&edp_panel_in>;
+                       };
+               };
+       };
+};
+
+&mdss_dp3_phy {
+       vdda-phy-supply = <&vreg_l3j_0p8>;
+       vdda-pll-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&pcie4 {
+       perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
+
+       pinctrl-0 = <&pcie4_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie4_phy {
+       vdda-phy-supply = <&vreg_l3i_0p8>;
+       vdda-pll-supply = <&vreg_l3e_1p2>;
+
+       status = "okay";
+};
+
+&pcie5 {
+       perst-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&vreg_wwan>;
+
+       pinctrl-0 = <&pcie5_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie5_phy {
+       vdda-phy-supply = <&vreg_l3i_0p8>;
+       vdda-pll-supply = <&vreg_l3e_1p2>;
+
+       status = "okay";
+};
+
+&pcie6a {
+       perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
+       wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
+
+       vddpe-3v3-supply = <&vreg_nvme>;
+
+       pinctrl-0 = <&pcie6a_default>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+&pcie6a_phy {
+       vdda-phy-supply = <&vreg_l1d_0p8>;
+       vdda-pll-supply = <&vreg_l2j_1p2>;
+
+       status = "okay";
+};
+
+&pm8550_gpios {
+       rtmr0_default: rtmr0-reset-n-active-state {
+               pins = "gpio10";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+
+       usb0_3p3_reg_en: usb0-3p3-reg-en-state {
+               pins = "gpio11";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pm8550ve_8_gpios {
+       misc_3p3_reg_en: misc-3p3-reg-en-state {
+               pins = "gpio6";
+               function = "normal";
+               bias-disable;
+               drive-push-pull;
+               input-disable;
+               output-enable;
+               power-source = <1>; /* 1.8 V */
+               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
+       };
+};
+
+&pm8550ve_9_gpios {
+       usb0_1p8_reg_en: usb0-1p8-reg-en-state {
+               pins = "gpio8";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pmc8380_3_gpios {
+       edp_bl_en: edp-bl-en-state {
+               pins = "gpio4";
+               function = "normal";
+               power-source = <1>;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pmc8380_5_gpios {
+       usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
+               pins = "gpio8";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&qupv3_0 {
+       status = "okay";
+};
+
+&qupv3_1 {
+       status = "okay";
+};
+
+&qupv3_2 {
+       status = "okay";
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/x1e80100/LENOVO/21N1/qcadsp8380.mbn",
+                       "qcom/x1e80100/LENOVO/21N1/adsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/x1e80100/LENOVO/21N1/qccdsp8380.mbn",
+                       "qcom/x1e80100/LENOVO/21N1/cdsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&smb2360_0 {
+       status = "okay";
+};
+
+&smb2360_0_eusb2_repeater {
+       vdd18-supply = <&vreg_l3d_1p8>;
+       vdd3-supply = <&vreg_l2b_3p0>;
+};
+
+&smb2360_1 {
+       status = "okay";
+};
+
+&smb2360_1_eusb2_repeater {
+       vdd18-supply = <&vreg_l3d_1p8>;
+       vdd3-supply = <&vreg_l14b_3p0>;
+};
+
+&swr0 {
+       status = "okay";
+
+       pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
+       pinctrl-names = "default";
+
+       /* WSA8845, Left Speaker */
+       left_spkr: speaker@0,0 {
+               compatible = "sdw20217020400";
+               reg = <0 0>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "SpkrLeft";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <1 2 3 7 10 13>;
+       };
+
+       /* WSA8845, Right Speaker */
+       right_spkr: speaker@0,1 {
+               compatible = "sdw20217020400";
+               reg = <0 1>;
+               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+               #sound-dai-cells = <0>;
+               sound-name-prefix = "SpkrRight";
+               vdd-1p8-supply = <&vreg_l15b_1p8>;
+               vdd-io-supply = <&vreg_l12b_1p2>;
+               qcom,port-mapping = <4 5 6 7 11 13>;
+       };
+};
+
+&swr1 {
+       status = "okay";
+
+       /* WCD9385 RX */
+       wcd_rx: codec@0,4 {
+               compatible = "sdw20217010d00";
+               reg = <0 4>;
+               qcom,rx-port-mapping = <1 2 3 4 5>;
+       };
+};
+
+&swr2 {
+       status = "okay";
+
+       /* WCD9385 TX */
+       wcd_tx: codec@0,3 {
+               compatible = "sdw20217010d00";
+               reg = <0 3>;
+               qcom,tx-port-mapping = <2 2 3 4>;
+       };
+};
+
+&tlmm {
+       gpio-reserved-ranges = <34 2>, /* Unused */
+                              <44 4>, /* SPI (TPM) */
+                              <72 2>, /* Secure EC I2C connection (?) */
+                              <238 1>; /* UFS Reset */
+
+       eusb3_reset_n: eusb3-reset-n-state {
+               pins = "gpio6";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       eusb5_reset_n: eusb5-reset-n-state {
+               pins = "gpio7";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       eusb6_reset_n: eusb6-reset-n-state {
+               pins = "gpio184";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+               output-low;
+       };
+
+       tpad_default: tpad-default-state {
+               pins = "gpio3";
+               function = "gpio";
+               bias-pull-up;
+       };
+
+       nvme_reg_en: nvme-reg-en-state {
+               pins = "gpio18";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       ts0_default: ts0-default-state {
+               reset-n-pins {
+                       pins = "gpio48";
+                       function = "gpio";
+                       output-high;
+                       drive-strength = <16>;
+               };
+
+               int-n-pins {
+                       pins = "gpio51";
+                       function = "gpio";
+                       bias-disable;
+               };
+       };
+
+       kybd_default: kybd-default-state {
+               pins = "gpio67";
+               function = "gpio";
+               bias-disable;
+       };
+
+       edp_reg_en: edp-reg-en-state {
+               pins = "gpio70";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       hall_int_n_default: hall-int-n-state {
+               pins = "gpio92";
+               function = "gpio";
+               bias-disable;
+       };
+
+       pcie4_default: pcie4-default-state {
+               clkreq-n-pins {
+                       pins = "gpio147";
+                       function = "pcie4_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio146";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio148";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       pcie5_default: pcie5-default-state {
+               clkreq-n-pins {
+                       pins = "gpio150";
+                       function = "pcie5_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio149";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio151";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       pcie6a_default: pcie6a-default-state {
+               clkreq-n-pins {
+                       pins = "gpio153";
+                       function = "pcie6a_clk";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+
+               perst-n-pins {
+                       pins = "gpio152";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-disable;
+               };
+
+               wake-n-pins {
+                       pins = "gpio154";
+                       function = "gpio";
+                       drive-strength = <2>;
+                       bias-pull-up;
+               };
+       };
+
+       rtmr1_default: rtmr1-reset-n-active-state {
+               pins = "gpio176";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       us_euro_hs_sel: us-euro-hs-sel-state {
+               pins = "gpio68";
+               function = "gpio";
+               bias-pull-down;
+               drive-strength = <2>;
+       };
+
+       usb1_pwr_1p15_reg_en: usb1-pwr-1p15-reg-en-state {
+               pins = "gpio188";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb1_pwr_1p8_reg_en: usb1-pwr-1p8-reg-en-state {
+               pins = "gpio175";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb1_pwr_3p3_reg_en: usb1-pwr-3p3-reg-en-state {
+               pins = "gpio186";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       wcd_default: wcd-reset-n-active-state {
+               pins = "gpio191";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+               output-low;
+       };
+
+       wwan_sw_en: wwan-sw-en-state {
+               pins = "gpio221";
+               function = "gpio";
+               drive-strength = <4>;
+               bias-disable;
+       };
+};
+
+&usb_1_ss0_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       phys = <&smb2360_0_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_1_ss0_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l1j_0p8>;
+
+       status = "okay";
+};
+
+&usb_1_ss0 {
+       status = "okay";
+};
+
+&usb_1_ss0_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_ss0_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss0_hs_in>;
+};
+
+&usb_1_ss0_qmpphy_out {
+       remote-endpoint = <&retimer_ss0_ss_in>;
+};
+
+&usb_1_ss1_hsphy {
+       vdd-supply = <&vreg_l3j_0p8>;
+       vdda12-supply = <&vreg_l2j_1p2>;
+
+       phys = <&smb2360_1_eusb2_repeater>;
+
+       status = "okay";
+};
+
+&usb_1_ss1_qmpphy {
+       vdda-phy-supply = <&vreg_l2j_1p2>;
+       vdda-pll-supply = <&vreg_l2d_0p9>;
+
+       status = "okay";
+};
+
+&usb_1_ss1 {
+       status = "okay";
+};
+
+&usb_1_ss1_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_1_ss1_dwc3_hs {
+       remote-endpoint = <&pmic_glink_ss1_hs_in>;
+};
+
+&usb_1_ss1_qmpphy_out {
+       remote-endpoint = <&retimer_ss1_ss_in>;
+};
+
+&usb_2 {
+       status = "okay";
+};
+
+&usb_2_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_2_hsphy {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb5_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp {
+       status = "okay";
+};
+
+&usb_mp_hsphy0 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb6_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp_hsphy1 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb3_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy1 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};
index 53781f9b13af3e8491dcf63c57868eaf7025d0a8..71b2cc6c392fef9edd19477e4aab6e28699e1eb7 100644 (file)
        compatible = "asus,vivobook-s15", "qcom,x1e80100";
        chassis-type = "laptop";
 
+       aliases {
+               serial1 = &uart14;
+       };
+
        gpio-keys {
                compatible = "gpio-keys";
                pinctrl-0 = <&hall_int_n_default>;
                regulator-always-on;
                regulator-boot-on;
        };
+
+       /*
+        * TODO: These two regulators are actually part of the removable M.2
+        * card and not the CRD mainboard. Need to describe this differently.
+        * Functionally it works correctly, because all we need to do is to
+        * turn on the actual 3.3V supply above.
+        */
+       vreg_wcn_0p95: regulator-wcn-0p95 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_0P95";
+               regulator-min-microvolt = <950000>;
+               regulator-max-microvolt = <950000>;
+
+               vin-supply = <&vreg_wcn_3p3>;
+       };
+
+       vreg_wcn_1p9: regulator-wcn-1p9 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_1P9";
+               regulator-min-microvolt = <1900000>;
+               regulator-max-microvolt = <1900000>;
+
+               vin-supply = <&vreg_wcn_3p3>;
+       };
+
+       vreg_wcn_3p3: regulator-wcn-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&wcn_sw_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       wcn7850-pmu {
+               compatible = "qcom,wcn7850-pmu";
+
+               vdd-supply = <&vreg_wcn_0p95>;
+               vddio-supply = <&vreg_l15b_1p8>;
+               vddaon-supply = <&vreg_wcn_0p95>;
+               vdddig-supply = <&vreg_wcn_0p95>;
+               vddrfa1p2-supply = <&vreg_wcn_1p9>;
+               vddrfa1p8-supply = <&vreg_wcn_1p9>;
+
+               wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
+               bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&wcn_wlan_en>, <&wcn_bt_en>;
+               pinctrl-names = "default";
+
+               regulators {
+                       vreg_pmu_rfa_cmn: ldo0 {
+                               regulator-name = "vreg_pmu_rfa_cmn";
+                       };
+
+                       vreg_pmu_aon_0p59: ldo1 {
+                               regulator-name = "vreg_pmu_aon_0p59";
+                       };
+
+                       vreg_pmu_wlcx_0p8: ldo2 {
+                               regulator-name = "vreg_pmu_wlcx_0p8";
+                       };
+
+                       vreg_pmu_wlmx_0p85: ldo3 {
+                               regulator-name = "vreg_pmu_wlmx_0p85";
+                       };
+
+                       vreg_pmu_btcmx_0p85: ldo4 {
+                               regulator-name = "vreg_pmu_btcmx_0p85";
+                       };
+
+                       vreg_pmu_rfa_0p8: ldo5 {
+                               regulator-name = "vreg_pmu_rfa_0p8";
+                       };
+
+                       vreg_pmu_rfa_1p2: ldo6 {
+                               regulator-name = "vreg_pmu_rfa_1p2";
+                       };
+
+                       vreg_pmu_rfa_1p8: ldo7 {
+                               regulator-name = "vreg_pmu_rfa_1p8";
+                       };
+
+                       vreg_pmu_pcie_0p9: ldo8 {
+                               regulator-name = "vreg_pmu_pcie_0p9";
+                       };
+
+                       vreg_pmu_pcie_1p8: ldo9 {
+                               regulator-name = "vreg_pmu_pcie_1p8";
+                       };
+               };
+       };
 };
 
 &apps_rsc {
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
+               vreg_l4b_1p8: ldo4 {
+                       regulator-name = "vreg_l4b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
+               vreg_l13b_3p0: ldo13 {
+                       regulator-name = "vreg_l13b_3p0";
+                       regulator-min-microvolt = <3072000>;
+                       regulator-max-microvolt = <3072000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
                vreg_l14b_3p0: ldo14 {
                        regulator-name = "vreg_l14b_3p0";
                        regulator-min-microvolt = <3072000>;
                        regulator-max-microvolt = <3072000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
+
+               vreg_l15b_1p8: ldo15 {
+                       regulator-name = "vreg_l15b_1p8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
        };
 
        regulators-1 {
                vdd-l3-supply = <&vreg_s1f_0p7>;
                vdd-s4-supply = <&vph_pwr>;
 
+               vreg_l3c_0p8: ldo3 {
+                       regulator-name = "vreg_l3c_0p8";
+                       regulator-min-microvolt = <912000>;
+                       regulator-max-microvolt = <912000>;
+                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+               };
+
                vreg_s4c_1p8: smps4 {
                        regulator-name = "vreg_s4c_1p8";
                        regulator-min-microvolt = <1856000>;
 
                vreg_l2j_1p2: ldo2 {
                        regulator-name = "vreg_l2j_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
                wakeup-source;
        };
 
-       /* EC? @ 0x5b, 0x76 */
+       eusb5_repeater: redriver@43 {
+               compatible = "nxp,ptn3222";
+               reg = <0x43>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb5_reset_n>;
+               pinctrl-names = "default";
+       };
+
+       eusb3_repeater: redriver@47 {
+               compatible = "nxp,ptn3222";
+               reg = <0x47>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb3_reset_n>;
+               pinctrl-names = "default";
+       };
+
+       eusb6_repeater: redriver@4f {
+               compatible = "nxp,ptn3222";
+               reg = <0x4f>;
+               #phy-cells = <0>;
+
+               vdd3v3-supply = <&vreg_l13b_3p0>;
+               vdd1v8-supply = <&vreg_l4b_1p8>;
+
+               reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&eusb6_reset_n>;
+               pinctrl-names = "default";
+       };
+
+       /* EC @ 0x76 */
 };
 
 &i2c7 {
 };
 
 &mdss_dp3 {
-       compatible = "qcom,x1e80100-dp";
        /delete-property/ #sound-dai-cells;
 
        status = "okay";
        status = "okay";
 };
 
+&pcie4_port0 {
+       wifi@0 {
+               compatible = "pci17cb,1107";
+               reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+               vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+               vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+       };
+};
+
 &pcie6a {
        perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
        wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
                bias-disable;
        };
 
+       eusb3_reset_n: eusb3-reset-n-state {
+               pins = "gpio6";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+               output-low;
+       };
+
+       eusb5_reset_n: eusb5-reset-n-state {
+               pins = "gpio7";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+               output-low;
+       };
+
+       eusb6_reset_n: eusb6-reset-n-state {
+               pins = "gpio184";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-pull-up;
+               output-low;
+       };
+
        hall_int_n_default: hall-int-n-state {
                pins = "gpio92";
                function = "gpio";
                function = "gpio";
                bias-disable;
        };
+
+       wcn_bt_en: wcn-bt-en-state {
+               pins = "gpio116";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-pull-down;
+       };
+
+       wcn_sw_en: wcn-sw-en-state {
+               pins = "gpio214";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+       };
+
+       wcn_wlan_en: wcn-wlan-en-state {
+               pins = "gpio117";
+               function = "gpio";
+               drive-strength = <16>;
+               bias-disable;
+       };
+};
+
+&uart14 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn7850-bt";
+               max-speed = <3200000>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+       };
 };
 
 &usb_1_ss0_hsphy {
 &usb_1_ss1_qmpphy_out {
        remote-endpoint = <&pmic_glink_ss1_ss_in>;
 };
+
+&usb_2 {
+       status = "okay";
+};
+
+&usb_2_dwc3 {
+       dr_mode = "host";
+};
+
+&usb_2_hsphy {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb5_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp {
+       status = "okay";
+};
+
+&usb_mp_hsphy0 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb6_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp_hsphy1 {
+       vdd-supply = <&vreg_l2e_0p8>;
+       vdda12-supply = <&vreg_l3e_1p2>;
+
+       phys = <&eusb3_repeater>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};
+
+&usb_mp_qmpphy1 {
+       vdda-phy-supply = <&vreg_l3e_1p2>;
+       vdda-pll-supply = <&vreg_l3c_0p8>;
+
+       status = "okay";
+};
index ff5b3472fafd35a2a3754c11ab0b9b9e8ea5a4b4..976b8e44b5763b2d6c0f4786bf5809fee29dcecc 100644 (file)
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/gpio-keys.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
-#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
-
 #include "x1e80100.dtsi"
-#include "x1e80100-pmics.dtsi"
+#include "x1-crd.dtsi"
 
 / {
        model = "Qualcomm Technologies, Inc. X1E80100 CRD";
        compatible = "qcom,x1e80100-crd", "qcom,x1e80100";
-
-       aliases {
-               serial0 = &uart21;
-       };
-
-       wcd938x: audio-codec {
-               compatible = "qcom,wcd9385-codec";
-
-               pinctrl-names = "default";
-               pinctrl-0 = <&wcd_default>;
-
-               qcom,micbias1-microvolt = <1800000>;
-               qcom,micbias2-microvolt = <1800000>;
-               qcom,micbias3-microvolt = <1800000>;
-               qcom,micbias4-microvolt = <1800000>;
-               qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 500000 500000 500000 500000>;
-               qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
-               qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
-               qcom,rx-device = <&wcd_rx>;
-               qcom,tx-device = <&wcd_tx>;
-
-               reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
-
-               vdd-buck-supply = <&vreg_l15b_1p8>;
-               vdd-rxtx-supply = <&vreg_l15b_1p8>;
-               vdd-io-supply = <&vreg_l15b_1p8>;
-               vdd-mic-bias-supply = <&vreg_bob1>;
-
-               #sound-dai-cells = <1>;
-       };
-
-       chosen {
-               stdout-path = "serial0:115200n8";
-       };
-
-       gpio-keys {
-               compatible = "gpio-keys";
-
-               pinctrl-0 = <&hall_int_n_default>;
-               pinctrl-names = "default";
-
-               switch-lid {
-                       gpios = <&tlmm 92 GPIO_ACTIVE_LOW>;
-                       linux,input-type = <EV_SW>;
-                       linux,code = <SW_LID>;
-                       wakeup-source;
-                       wakeup-event-action = <EV_ACT_DEASSERTED>;
-               };
-       };
-
-       pmic-glink {
-               compatible = "qcom,x1e80100-pmic-glink",
-                            "qcom,sm8550-pmic-glink",
-                            "qcom,pmic-glink";
-               #address-cells = <1>;
-               #size-cells = <0>;
-               orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
-                                   <&tlmm 123 GPIO_ACTIVE_HIGH>,
-                                   <&tlmm 125 GPIO_ACTIVE_HIGH>;
-
-               /* Left-side rear port */
-               connector@0 {
-                       compatible = "usb-c-connector";
-                       reg = <0>;
-                       power-role = "dual";
-                       data-role = "dual";
-
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@0 {
-                                       reg = <0>;
-
-                                       pmic_glink_ss0_hs_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss0_dwc3_hs>;
-                                       };
-                               };
-
-                               port@1 {
-                                       reg = <1>;
-
-                                       pmic_glink_ss0_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss0_qmpphy_out>;
-                                       };
-                               };
-                       };
-               };
-
-               /* Left-side front port */
-               connector@1 {
-                       compatible = "usb-c-connector";
-                       reg = <1>;
-                       power-role = "dual";
-                       data-role = "dual";
-
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@0 {
-                                       reg = <0>;
-
-                                       pmic_glink_ss1_hs_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss1_dwc3_hs>;
-                                       };
-                               };
-
-                               port@1 {
-                                       reg = <1>;
-
-                                       pmic_glink_ss1_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss1_qmpphy_out>;
-                                       };
-                               };
-                       };
-               };
-
-               /* Right-side port */
-               connector@2 {
-                       compatible = "usb-c-connector";
-                       reg = <2>;
-                       power-role = "dual";
-                       data-role = "dual";
-
-                       ports {
-                               #address-cells = <1>;
-                               #size-cells = <0>;
-
-                               port@0 {
-                                       reg = <0>;
-
-                                       pmic_glink_ss2_hs_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss2_dwc3_hs>;
-                                       };
-                               };
-
-                               port@1 {
-                                       reg = <1>;
-
-                                       pmic_glink_ss2_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss2_qmpphy_out>;
-                                       };
-                               };
-                       };
-               };
-       };
-
-       reserved-memory {
-               linux,cma {
-                       compatible = "shared-dma-pool";
-                       size = <0x0 0x8000000>;
-                       reusable;
-                       linux,cma-default;
-               };
-       };
-
-       sound {
-               compatible = "qcom,x1e80100-sndcard";
-               model = "X1E80100-CRD";
-               audio-routing = "WooferLeft IN", "WSA WSA_SPK1 OUT",
-                               "TweeterLeft IN", "WSA WSA_SPK2 OUT",
-                               "WooferRight IN", "WSA2 WSA_SPK2 OUT",
-                               "TweeterRight IN", "WSA2 WSA_SPK2 OUT",
-                               "IN1_HPHL", "HPHL_OUT",
-                               "IN2_HPHR", "HPHR_OUT",
-                               "AMIC2", "MIC BIAS2",
-                               "VA DMIC0", "MIC BIAS3",
-                               "VA DMIC1", "MIC BIAS3",
-                               "VA DMIC2", "MIC BIAS1",
-                               "VA DMIC3", "MIC BIAS1",
-                               "VA DMIC0", "VA MIC BIAS3",
-                               "VA DMIC1", "VA MIC BIAS3",
-                               "VA DMIC2", "VA MIC BIAS1",
-                               "VA DMIC3", "VA MIC BIAS1",
-                               "TX SWR_INPUT1", "ADC2_OUTPUT";
-
-               wcd-playback-dai-link {
-                       link-name = "WCD Playback";
-
-                       cpu {
-                               sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
-                       };
-
-                       codec {
-                               sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
-                       };
-
-                       platform {
-                               sound-dai = <&q6apm>;
-                       };
-               };
-
-               wcd-capture-dai-link {
-                       link-name = "WCD Capture";
-
-                       cpu {
-                               sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
-                       };
-
-                       codec {
-                               sound-dai = <&wcd938x 1>, <&swr2 1>, <&lpass_txmacro 0>;
-                       };
-
-                       platform {
-                               sound-dai = <&q6apm>;
-                       };
-               };
-
-               wsa-dai-link {
-                       link-name = "WSA Playback";
-
-                       cpu {
-                               sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
-                       };
-
-                       codec {
-                               sound-dai = <&left_woofer>, <&left_tweeter>,
-                                           <&swr0 0>, <&lpass_wsamacro 0>,
-                                           <&right_woofer>, <&right_tweeter>,
-                                           <&swr3 0>, <&lpass_wsa2macro 0>;
-                       };
-
-                       platform {
-                               sound-dai = <&q6apm>;
-                       };
-               };
-
-               va-dai-link {
-                       link-name = "VA Capture";
-
-                       cpu {
-                               sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
-                       };
-
-                       codec {
-                               sound-dai = <&lpass_vamacro 0>;
-                       };
-
-                       platform {
-                               sound-dai = <&q6apm>;
-                       };
-               };
-       };
-
-       vreg_edp_3p3: regulator-edp-3p3 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "VREG_EDP_3P3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-
-               pinctrl-0 = <&edp_reg_en>;
-               pinctrl-names = "default";
-
-               regulator-boot-on;
-       };
-
-       vreg_misc_3p3: regulator-misc-3p3 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "VREG_MISC_3P3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&pm8550ve_8_gpios 6 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-
-               pinctrl-names = "default";
-               pinctrl-0 = <&misc_3p3_reg_en>;
-
-               regulator-boot-on;
-               regulator-always-on;
-       };
-
-       vreg_nvme: regulator-nvme {
-               compatible = "regulator-fixed";
-
-               regulator-name = "VREG_NVME_3P3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-
-               pinctrl-names = "default";
-               pinctrl-0 = <&nvme_reg_en>;
-
-               regulator-boot-on;
-       };
-
-       vph_pwr: regulator-vph-pwr {
-               compatible = "regulator-fixed";
-
-               regulator-name = "vph_pwr";
-               regulator-min-microvolt = <3700000>;
-               regulator-max-microvolt = <3700000>;
-
-               regulator-always-on;
-               regulator-boot-on;
-       };
-
-       vreg_wwan: regulator-wwan {
-               compatible = "regulator-fixed";
-
-               regulator-name = "SDX_VPH_PWR";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&tlmm 221 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-
-               pinctrl-0 = <&wwan_sw_en>;
-               pinctrl-names = "default";
-
-               regulator-boot-on;
-       };
-};
-
-&apps_rsc {
-       regulators-0 {
-               compatible = "qcom,pm8550-rpmh-regulators";
-               qcom,pmic-id = "b";
-
-               vdd-bob1-supply = <&vph_pwr>;
-               vdd-bob2-supply = <&vph_pwr>;
-               vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
-               vdd-l2-l13-l14-supply = <&vreg_bob1>;
-               vdd-l5-l16-supply = <&vreg_bob1>;
-               vdd-l6-l7-supply = <&vreg_bob2>;
-               vdd-l8-l9-supply = <&vreg_bob1>;
-               vdd-l12-supply = <&vreg_s5j_1p2>;
-               vdd-l15-supply = <&vreg_s4c_1p8>;
-               vdd-l17-supply = <&vreg_bob2>;
-
-               vreg_bob1: bob1 {
-                       regulator-name = "vreg_bob1";
-                       regulator-min-microvolt = <3008000>;
-                       regulator-max-microvolt = <3960000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_bob2: bob2 {
-                       regulator-name = "vreg_bob2";
-                       regulator-min-microvolt = <2504000>;
-                       regulator-max-microvolt = <3008000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l1b_1p8: ldo1 {
-                       regulator-name = "vreg_l1b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2b_3p0: ldo2 {
-                       regulator-name = "vreg_l2b_3p0";
-                       regulator-min-microvolt = <3072000>;
-                       regulator-max-microvolt = <3100000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l4b_1p8: ldo4 {
-                       regulator-name = "vreg_l4b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l5b_3p0: ldo5 {
-                       regulator-name = "vreg_l5b_3p0";
-                       regulator-min-microvolt = <3000000>;
-                       regulator-max-microvolt = <3000000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l6b_1p8: ldo6 {
-                       regulator-name = "vreg_l6b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <2960000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l7b_2p8: ldo7 {
-                       regulator-name = "vreg_l7b_2p8";
-                       regulator-min-microvolt = <2800000>;
-                       regulator-max-microvolt = <2800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l8b_3p0: ldo8 {
-                       regulator-name = "vreg_l8b_3p0";
-                       regulator-min-microvolt = <3072000>;
-                       regulator-max-microvolt = <3072000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l9b_2p9: ldo9 {
-                       regulator-name = "vreg_l9b_2p9";
-                       regulator-min-microvolt = <2960000>;
-                       regulator-max-microvolt = <2960000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l10b_1p8: ldo10 {
-                       regulator-name = "vreg_l10b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l12b_1p2: ldo12 {
-                       regulator-name = "vreg_l12b_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l13b_3p0: ldo13 {
-                       regulator-name = "vreg_l13b_3p0";
-                       regulator-min-microvolt = <3072000>;
-                       regulator-max-microvolt = <3100000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l14b_3p0: ldo14 {
-                       regulator-name = "vreg_l14b_3p0";
-                       regulator-min-microvolt = <3072000>;
-                       regulator-max-microvolt = <3072000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l15b_1p8: ldo15 {
-                       regulator-name = "vreg_l15b_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l16b_2p9: ldo16 {
-                       regulator-name = "vreg_l16b_2p9";
-                       regulator-min-microvolt = <2912000>;
-                       regulator-max-microvolt = <2912000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l17b_2p5: ldo17 {
-                       regulator-name = "vreg_l17b_2p5";
-                       regulator-min-microvolt = <2504000>;
-                       regulator-max-microvolt = <2504000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-1 {
-               compatible = "qcom,pm8550ve-rpmh-regulators";
-               qcom,pmic-id = "c";
-
-               vdd-l1-supply = <&vreg_s5j_1p2>;
-               vdd-l2-supply = <&vreg_s1f_0p7>;
-               vdd-l3-supply = <&vreg_s1f_0p7>;
-               vdd-s4-supply = <&vph_pwr>;
-
-               vreg_s4c_1p8: smps4 {
-                       regulator-name = "vreg_s4c_1p8";
-                       regulator-min-microvolt = <1856000>;
-                       regulator-max-microvolt = <2000000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l1c_1p2: ldo1 {
-                       regulator-name = "vreg_l1c_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2c_0p8: ldo2 {
-                       regulator-name = "vreg_l2c_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3c_0p8: ldo3 {
-                       regulator-name = "vreg_l3c_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-2 {
-               compatible = "qcom,pmc8380-rpmh-regulators";
-               qcom,pmic-id = "d";
-
-               vdd-l1-supply = <&vreg_s1f_0p7>;
-               vdd-l2-supply = <&vreg_s1f_0p7>;
-               vdd-l3-supply = <&vreg_s4c_1p8>;
-               vdd-s1-supply = <&vph_pwr>;
-
-               vreg_l1d_0p8: ldo1 {
-                       regulator-name = "vreg_l1d_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2d_0p9: ldo2 {
-                       regulator-name = "vreg_l2d_0p9";
-                       regulator-min-microvolt = <912000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3d_1p8: ldo3 {
-                       regulator-name = "vreg_l3d_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-3 {
-               compatible = "qcom,pmc8380-rpmh-regulators";
-               qcom,pmic-id = "e";
-
-               vdd-l2-supply = <&vreg_s1f_0p7>;
-               vdd-l3-supply = <&vreg_s5j_1p2>;
-
-               vreg_l2e_0p8: ldo2 {
-                       regulator-name = "vreg_l2e_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3e_1p2: ldo3 {
-                       regulator-name = "vreg_l3e_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-4 {
-               compatible = "qcom,pmc8380-rpmh-regulators";
-               qcom,pmic-id = "f";
-
-               vdd-l1-supply = <&vreg_s5j_1p2>;
-               vdd-l2-supply = <&vreg_s5j_1p2>;
-               vdd-l3-supply = <&vreg_s5j_1p2>;
-               vdd-s1-supply = <&vph_pwr>;
-
-               vreg_s1f_0p7: smps1 {
-                       regulator-name = "vreg_s1f_0p7";
-                       regulator-min-microvolt = <700000>;
-                       regulator-max-microvolt = <1100000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l1f_1p0: ldo1 {
-                       regulator-name = "vreg_l1f_1p0";
-                       regulator-min-microvolt = <1024000>;
-                       regulator-max-microvolt = <1024000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2f_1p0: ldo2 {
-                       regulator-name = "vreg_l2f_1p0";
-                       regulator-min-microvolt = <1024000>;
-                       regulator-max-microvolt = <1024000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3f_1p0: ldo3 {
-                       regulator-name = "vreg_l3f_1p0";
-                       regulator-min-microvolt = <1024000>;
-                       regulator-max-microvolt = <1024000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-6 {
-               compatible = "qcom,pm8550ve-rpmh-regulators";
-               qcom,pmic-id = "i";
-
-               vdd-l1-supply = <&vreg_s4c_1p8>;
-               vdd-l2-supply = <&vreg_s5j_1p2>;
-               vdd-l3-supply = <&vreg_s1f_0p7>;
-               vdd-s1-supply = <&vph_pwr>;
-               vdd-s2-supply = <&vph_pwr>;
-
-               vreg_s1i_0p9: smps1 {
-                       regulator-name = "vreg_s1i_0p9";
-                       regulator-min-microvolt = <900000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_s2i_1p0: smps2 {
-                       regulator-name = "vreg_s2i_1p0";
-                       regulator-min-microvolt = <1000000>;
-                       regulator-max-microvolt = <1100000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l1i_1p8: ldo1 {
-                       regulator-name = "vreg_l1i_1p8";
-                       regulator-min-microvolt = <1800000>;
-                       regulator-max-microvolt = <1800000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2i_1p2: ldo2 {
-                       regulator-name = "vreg_l2i_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3i_0p8: ldo3 {
-                       regulator-name = "vreg_l3i_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-
-       regulators-7 {
-               compatible = "qcom,pm8550ve-rpmh-regulators";
-               qcom,pmic-id = "j";
-
-               vdd-l1-supply = <&vreg_s1f_0p7>;
-               vdd-l2-supply = <&vreg_s5j_1p2>;
-               vdd-l3-supply = <&vreg_s1f_0p7>;
-               vdd-s5-supply = <&vph_pwr>;
-
-               vreg_s5j_1p2: smps5 {
-                       regulator-name = "vreg_s5j_1p2";
-                       regulator-min-microvolt = <1256000>;
-                       regulator-max-microvolt = <1304000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l1j_0p8: ldo1 {
-                       regulator-name = "vreg_l1j_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l2j_1p2: ldo2 {
-                       regulator-name = "vreg_l2j_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-
-               vreg_l3j_0p8: ldo3 {
-                       regulator-name = "vreg_l3j_0p8";
-                       regulator-min-microvolt = <880000>;
-                       regulator-max-microvolt = <920000>;
-                       regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
-               };
-       };
-};
-
-&gpu {
-       status = "okay";
-
-       zap-shader {
-               firmware-name = "qcom/x1e80100/gen70500_zap.mbn";
-       };
-};
-
-&i2c0 {
-       clock-frequency = <400000>;
-
-       status = "okay";
-
-       touchpad@15 {
-               compatible = "hid-over-i2c";
-               reg = <0x15>;
-
-               hid-descr-addr = <0x1>;
-               interrupts-extended = <&tlmm 3 IRQ_TYPE_LEVEL_LOW>;
-
-               vdd-supply = <&vreg_misc_3p3>;
-               vddl-supply = <&vreg_l12b_1p2>;
-
-               pinctrl-0 = <&tpad_default>;
-               pinctrl-names = "default";
-
-               wakeup-source;
-       };
-
-       keyboard@3a {
-               compatible = "hid-over-i2c";
-               reg = <0x3a>;
-
-               hid-descr-addr = <0x1>;
-               interrupts-extended = <&tlmm 67 IRQ_TYPE_LEVEL_LOW>;
-
-               vdd-supply = <&vreg_misc_3p3>;
-               vddl-supply = <&vreg_l12b_1p2>;
-
-               pinctrl-0 = <&kybd_default>;
-               pinctrl-names = "default";
-
-               wakeup-source;
-       };
-};
-
-&i2c8 {
-       clock-frequency = <400000>;
-
-       status = "okay";
-
-       touchscreen@10 {
-               compatible = "hid-over-i2c";
-               reg = <0x10>;
-
-               hid-descr-addr = <0x1>;
-               interrupts-extended = <&tlmm 51 IRQ_TYPE_LEVEL_LOW>;
-
-               vdd-supply = <&vreg_misc_3p3>;
-               vddl-supply = <&vreg_l15b_1p8>;
-
-               pinctrl-0 = <&ts0_default>;
-               pinctrl-names = "default";
-       };
-};
-
-&lpass_tlmm {
-       spkr_01_sd_n_active: spkr-01-sd-n-active-state {
-               pins = "gpio12";
-               function = "gpio";
-               drive-strength = <16>;
-               bias-disable;
-               output-low;
-       };
-
-       spkr_23_sd_n_active: spkr-23-sd-n-active-state {
-               pins = "gpio13";
-               function = "gpio";
-               drive-strength = <16>;
-               bias-disable;
-               output-low;
-       };
-};
-
-&lpass_vamacro {
-       pinctrl-0 = <&dmic01_default>, <&dmic23_default>;
-       pinctrl-names = "default";
-
-       vdd-micb-supply = <&vreg_l1b_1p8>;
-       qcom,dmic-sample-rate = <4800000>;
-};
-
-&mdss {
-       status = "okay";
-};
-
-&mdss_dp3 {
-       compatible = "qcom,x1e80100-dp";
-       /delete-property/ #sound-dai-cells;
-
-       status = "okay";
-
-       aux-bus {
-               panel {
-                       compatible = "samsung,atna45af01", "samsung,atna33xc20";
-                       enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
-                       power-supply = <&vreg_edp_3p3>;
-
-                       pinctrl-0 = <&edp_bl_en>;
-                       pinctrl-names = "default";
-
-                       port {
-                               edp_panel_in: endpoint {
-                                       remote-endpoint = <&mdss_dp3_out>;
-                               };
-                       };
-               };
-       };
-
-       ports {
-               port@1 {
-                       reg = <1>;
-                       mdss_dp3_out: endpoint {
-                               data-lanes = <0 1 2 3>;
-                               link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
-
-                               remote-endpoint = <&edp_panel_in>;
-                       };
-               };
-       };
-};
-
-&mdss_dp3_phy {
-       vdda-phy-supply = <&vreg_l3j_0p8>;
-       vdda-pll-supply = <&vreg_l2j_1p2>;
-
-       status = "okay";
-};
-
-&pcie4 {
-       perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
-       wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
-
-       pinctrl-0 = <&pcie4_default>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&pcie4_phy {
-       vdda-phy-supply = <&vreg_l3i_0p8>;
-       vdda-pll-supply = <&vreg_l3e_1p2>;
-
-       status = "okay";
-};
-
-&pcie5 {
-       perst-gpios = <&tlmm 149 GPIO_ACTIVE_LOW>;
-       wake-gpios = <&tlmm 151 GPIO_ACTIVE_LOW>;
-
-       vddpe-3v3-supply = <&vreg_wwan>;
-
-       pinctrl-0 = <&pcie5_default>;
-       pinctrl-names = "default";
-
-       status = "okay";
-};
-
-&pcie5_phy {
-       vdda-phy-supply = <&vreg_l3i_0p8>;
-       vdda-pll-supply = <&vreg_l3e_1p2>;
-
-       status = "okay";
-};
-
-&pcie6a {
-       perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
-       wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
-
-       vddpe-3v3-supply = <&vreg_nvme>;
-
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie6a_default>;
-
-       status = "okay";
-};
-
-&pcie6a_phy {
-       vdda-phy-supply = <&vreg_l1d_0p8>;
-       vdda-pll-supply = <&vreg_l2j_1p2>;
-
-       status = "okay";
-};
-
-&pm8550ve_8_gpios {
-       misc_3p3_reg_en: misc-3p3-reg-en-state {
-               pins = "gpio6";
-               function = "normal";
-               bias-disable;
-               input-disable;
-               output-enable;
-               drive-push-pull;
-               power-source = <1>; /* 1.8 V */
-               qcom,drive-strength = <PMIC_GPIO_STRENGTH_LOW>;
-       };
-};
-
-&pmc8380_3_gpios {
-       edp_bl_en: edp-bl-en-state {
-               pins = "gpio4";
-               function = "normal";
-               power-source = <1>; /* 1.8V */
-               input-disable;
-               output-enable;
-       };
-};
-
-&qupv3_0 {
-       status = "okay";
-};
-
-&qupv3_1 {
-       status = "okay";
-};
-
-&qupv3_2 {
-       status = "okay";
-};
-
-&remoteproc_adsp {
-       firmware-name = "qcom/x1e80100/adsp.mbn",
-                       "qcom/x1e80100/adsp_dtb.mbn";
-
-       status = "okay";
-};
-
-&remoteproc_cdsp {
-       firmware-name = "qcom/x1e80100/cdsp.mbn",
-                       "qcom/x1e80100/cdsp_dtb.mbn";
-
-       status = "okay";
-};
-
-&smb2360_0 {
-       status = "okay";
-};
-
-&smb2360_0_eusb2_repeater {
-       vdd18-supply = <&vreg_l3d_1p8>;
-       vdd3-supply = <&vreg_l2b_3p0>;
-};
-
-&smb2360_1 {
-       status = "okay";
-};
-
-&smb2360_1_eusb2_repeater {
-       vdd18-supply = <&vreg_l3d_1p8>;
-       vdd3-supply = <&vreg_l14b_3p0>;
-};
-
-&smb2360_2 {
-       status = "okay";
-};
-
-&smb2360_2_eusb2_repeater {
-       vdd18-supply = <&vreg_l3d_1p8>;
-       vdd3-supply = <&vreg_l8b_3p0>;
-};
-
-&swr0 {
-       status = "okay";
-
-       pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
-       pinctrl-names = "default";
-
-       /* WSA8845, Left Woofer */
-       left_woofer: speaker@0,0 {
-               compatible = "sdw20217020400";
-               reg = <0 0>;
-               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "WooferLeft";
-               vdd-1p8-supply = <&vreg_l15b_1p8>;
-               vdd-io-supply = <&vreg_l12b_1p2>;
-               qcom,port-mapping = <1 2 3 7 10 13>;
-       };
-
-       /* WSA8845, Left Tweeter */
-       left_tweeter: speaker@0,1 {
-               compatible = "sdw20217020400";
-               reg = <0 1>;
-               reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "TweeterLeft";
-               vdd-1p8-supply = <&vreg_l15b_1p8>;
-               vdd-io-supply = <&vreg_l12b_1p2>;
-               qcom,port-mapping = <4 5 6 7 11 13>;
-       };
-};
-
-&swr1 {
-       status = "okay";
-
-       /* WCD9385 RX */
-       wcd_rx: codec@0,4 {
-               compatible = "sdw20217010d00";
-               reg = <0 4>;
-               qcom,rx-port-mapping = <1 2 3 4 5>;
-       };
-};
-
-&swr2 {
-       status = "okay";
-
-       /* WCD9385 TX */
-       wcd_tx: codec@0,3 {
-               compatible = "sdw20217010d00";
-               reg = <0 3>;
-               qcom,tx-port-mapping = <2 2 3 4>;
-       };
-};
-
-&swr3 {
-       status = "okay";
-
-       pinctrl-0 = <&wsa2_swr_active>, <&spkr_23_sd_n_active>;
-       pinctrl-names = "default";
-
-       /* WSA8845, Right Woofer */
-       right_woofer: speaker@0,0 {
-               compatible = "sdw20217020400";
-               reg = <0 0>;
-               reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>;
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "WooferRight";
-               vdd-1p8-supply = <&vreg_l15b_1p8>;
-               vdd-io-supply = <&vreg_l12b_1p2>;
-               qcom,port-mapping = <1 2 3 7 10 13>;
-       };
-
-       /* WSA8845, Right Tweeter */
-       right_tweeter: speaker@0,1 {
-               compatible = "sdw20217020400";
-               reg = <0 1>;
-               reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>;
-               #sound-dai-cells = <0>;
-               sound-name-prefix = "TweeterRight";
-               vdd-1p8-supply = <&vreg_l15b_1p8>;
-               vdd-io-supply = <&vreg_l12b_1p2>;
-               qcom,port-mapping = <4 5 6 7 11 13>;
-       };
-};
-
-&tlmm {
-       gpio-reserved-ranges = <34 2>, /* Unused */
-                              <44 4>, /* SPI (TPM) */
-                              <238 1>; /* UFS Reset */
-
-       edp_reg_en: edp-reg-en-state {
-               pins = "gpio70";
-               function = "gpio";
-               drive-strength = <16>;
-               bias-disable;
-       };
-
-       hall_int_n_default: hall-int-n-state {
-               pins = "gpio92";
-               function = "gpio";
-               bias-disable;
-       };
-
-       kybd_default: kybd-default-state {
-               pins = "gpio67";
-               function = "gpio";
-               bias-disable;
-       };
-
-       nvme_reg_en: nvme-reg-en-state {
-               pins = "gpio18";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-       };
-
-       pcie4_default: pcie4-default-state {
-               clkreq-n-pins {
-                       pins = "gpio147";
-                       function = "pcie4_clk";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-
-               perst-n-pins {
-                       pins = "gpio146";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-disable;
-               };
-
-               wake-n-pins {
-                       pins = "gpio148";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-       };
-
-       pcie5_default: pcie5-default-state {
-               clkreq-n-pins {
-                       pins = "gpio150";
-                       function = "pcie5_clk";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-
-               perst-n-pins {
-                       pins = "gpio149";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-disable;
-               };
-
-               wake-n-pins {
-                       pins = "gpio151";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-       };
-
-       pcie6a_default: pcie6a-default-state {
-               clkreq-n-pins {
-                       pins = "gpio153";
-                       function = "pcie6a_clk";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-
-               perst-n-pins {
-                       pins = "gpio152";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-disable;
-               };
-
-               wake-n-pins {
-                       pins = "gpio154";
-                       function = "gpio";
-                       drive-strength = <2>;
-                       bias-pull-up;
-               };
-       };
-
-       tpad_default: tpad-default-state {
-               pins = "gpio3";
-               function = "gpio";
-               bias-disable;
-       };
-
-       ts0_default: ts0-default-state {
-               int-n-pins {
-                       pins = "gpio51";
-                       function = "gpio";
-                       bias-disable;
-               };
-
-               reset-n-pins {
-                       pins = "gpio48";
-                       function = "gpio";
-                       output-high;
-                       drive-strength = <16>;
-               };
-       };
-
-       wcd_default: wcd-reset-n-active-state {
-               pins = "gpio191";
-               function = "gpio";
-               drive-strength = <16>;
-               bias-disable;
-               output-low;
-       };
-
-       wwan_sw_en: wwan-sw-en-state {
-               pins = "gpio221";
-               function = "gpio";
-               drive-strength = <4>;
-               bias-disable;
-       };
-};
-
-&uart21 {
-       compatible = "qcom,geni-debug-uart";
-       status = "okay";
-};
-
-&usb_1_ss0_hsphy {
-       vdd-supply = <&vreg_l3j_0p8>;
-       vdda12-supply = <&vreg_l2j_1p2>;
-
-       phys = <&smb2360_0_eusb2_repeater>;
-
-       status = "okay";
-};
-
-&usb_1_ss0_qmpphy {
-       vdda-phy-supply = <&vreg_l2j_1p2>;
-       vdda-pll-supply = <&vreg_l1j_0p8>;
-
-       status = "okay";
-};
-
-&usb_1_ss0 {
-       status = "okay";
-};
-
-&usb_1_ss0_dwc3 {
-       dr_mode = "host";
-};
-
-&usb_1_ss0_dwc3_hs {
-       remote-endpoint = <&pmic_glink_ss0_hs_in>;
-};
-
-&usb_1_ss0_qmpphy_out {
-       remote-endpoint = <&pmic_glink_ss0_ss_in>;
-};
-
-&usb_1_ss1_hsphy {
-       vdd-supply = <&vreg_l3j_0p8>;
-       vdda12-supply = <&vreg_l2j_1p2>;
-
-       phys = <&smb2360_1_eusb2_repeater>;
-
-       status = "okay";
-};
-
-&usb_1_ss1_qmpphy {
-       vdda-phy-supply = <&vreg_l2j_1p2>;
-       vdda-pll-supply = <&vreg_l2d_0p9>;
-
-       status = "okay";
-};
-
-&usb_1_ss1 {
-       status = "okay";
-};
-
-&usb_1_ss1_dwc3 {
-       dr_mode = "host";
-};
-
-&usb_1_ss1_dwc3_hs {
-       remote-endpoint = <&pmic_glink_ss1_hs_in>;
-};
-
-&usb_1_ss1_qmpphy_out {
-       remote-endpoint = <&pmic_glink_ss1_ss_in>;
-};
-
-&usb_1_ss2_hsphy {
-       vdd-supply = <&vreg_l3j_0p8>;
-       vdda12-supply = <&vreg_l2j_1p2>;
-
-       phys = <&smb2360_2_eusb2_repeater>;
-
-       status = "okay";
-};
-
-&usb_1_ss2_qmpphy {
-       vdda-phy-supply = <&vreg_l2j_1p2>;
-       vdda-pll-supply = <&vreg_l2d_0p9>;
-
-       status = "okay";
-};
-
-&usb_1_ss2 {
-       status = "okay";
-};
-
-&usb_1_ss2_dwc3 {
-       dr_mode = "host";
-};
-
-&usb_1_ss2_dwc3_hs {
-       remote-endpoint = <&pmic_glink_ss2_hs_in>;
 };
 
-&usb_1_ss2_qmpphy_out {
-       remote-endpoint = <&pmic_glink_ss2_ss_in>;
+&gpu_zap_shader {
+       firmware-name = "qcom/x1e80100/gen70500_zap.mbn";
 };
index 86e87f03b0ec6170fae28e54e13d8dcd739232f4..967f6dba0878b51a985fd7c9570b8c4e71afe57d 100644 (file)
                        regulator-min-microvolt = <1200000>;
                        regulator-max-microvolt = <1200000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l13b_3p0: ldo13 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l17b_2p5: ldo17 {
                reg = <0x08>;
 
                clocks = <&rpmhcc RPMH_RF_CLK3>;
-               clock-names = "xo";
 
                vdd-supply = <&vreg_rtmr0_1p15>;
                vdd33-supply = <&vreg_rtmr0_3p3>;
                reg = <0x8>;
 
                clocks = <&rpmhcc RPMH_RF_CLK4>;
-               clock-names = "xo";
 
                vdd-supply = <&vreg_rtmr1_1p15>;
                vdd33-supply = <&vreg_rtmr1_3p3>;
        status = "okay";
 };
 
+&mdss_dp0 {
+       status = "okay";
+};
+
+&mdss_dp0_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp1 {
+       status = "okay";
+};
+
+&mdss_dp1_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
 &mdss_dp3 {
        /delete-property/ #sound-dai-cells;
 
diff --git a/src/arm64/qcom/x1e80100-hp-elitebook-ultra-g1q.dts b/src/arm64/qcom/x1e80100-hp-elitebook-ultra-g1q.dts
new file mode 100644 (file)
index 0000000..4ea00d8
--- /dev/null
@@ -0,0 +1,30 @@
+// SPDX-License-Identifier: BSD-3-Clause
+
+/dts-v1/;
+
+#include "x1e80100-hp-omnibook-x14.dts"
+
+/ {
+       model = "HP EliteBook Ultra G1q";
+       compatible = "hp,elitebook-ultra-g1q", "qcom,x1e80100";
+};
+
+&gpu {
+       zap-shader {
+               firmware-name = "qcom/x1e80100/hp/elitebook-ultra-g1q/qcdxkmsuc8380.mbn";
+       };
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/x1e80100/hp/elitebook-ultra-g1q/qcadsp8380.mbn",
+                       "qcom/x1e80100/hp/elitebook-ultra-g1q/adsp_dtbs.elf";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/x1e80100/hp/elitebook-ultra-g1q/qccdsp8380.mbn",
+                       "qcom/x1e80100/hp/elitebook-ultra-g1q/cdsp_dtbs.elf";
+};
+
+&sound {
+       model = "X1E80100-HP-ELITEBOOK-ULTRA-G1Q";
+};
index cd860a246c450b4c6181838bb1a7d3d77f613dba..10b3af5e79fb6493cd6b6c661de6a801e40092f7 100644 (file)
                                        reg = <1>;
 
                                        pmic_glink_ss1_ss_in: endpoint {
-                                               remote-endpoint = <&retimer_ss1_ss_out>;
-                                       };
-                               };
-
-                               port@2 {
-                                       reg = <2>;
-
-                                       pmic_glink_ss1_con_sbu_in: endpoint {
-                                               remote-endpoint = <&retimer_ss1_con_sbu_out>;
+                                               remote-endpoint = <&usb_1_ss1_qmpphy_out>;
                                        };
                                };
                        };
                };
        };
 
-       sound {
+       sound: sound {
                compatible = "qcom,x1e80100-sndcard";
                model = "X1E80100-HP-OMNIBOOK-X14";
                audio-routing = "SpkrLeft IN", "WSA WSA_SPK1 OUT",
                regulator-boot-on;
        };
 
-       vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "VREG_RTMR1_1P15";
-               regulator-min-microvolt = <1150000>;
-               regulator-max-microvolt = <1150000>;
-
-               gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-
-               pinctrl-0 = <&usb1_pwr_1p15_reg_en>;
-               pinctrl-names = "default";
-
-               regulator-boot-on;
-       };
-
-       vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "VREG_RTMR1_1P8";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
-
-               gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-
-               pinctrl-0 = <&usb1_pwr_1p8_reg_en>;
-               pinctrl-names = "default";
-
-               regulator-boot-on;
-       };
-
-       vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
-               compatible = "regulator-fixed";
-
-               regulator-name = "VREG_RTMR1_3P3";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-
-               gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
-               enable-active-high;
-
-               pinctrl-0 = <&usb1_pwr_3p3_reg_en>;
-               pinctrl-names = "default";
-
-               regulator-boot-on;
-       };
-
        vreg_vph_pwr: regulator-vph-pwr {
                compatible = "regulator-fixed";
 
                        regulator-min-microvolt = <1200000>;
                        regulator-max-microvolt = <1200000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l13b_3p0: ldo13 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l16b_2p9: ldo16 {
 
                vreg_l2j_1p2: ldo2 {
                        regulator-name = "vreg_l2j_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
        };
 };
 
-&i2c7 {
-       clock-frequency = <400000>;
-
-       status = "okay";
-
-       typec-mux@8 {
-               compatible = "parade,ps8830";
-               reg = <0x8>;
-
-               clocks = <&rpmhcc RPMH_RF_CLK4>;
-
-               vdd-supply = <&vreg_rtmr1_1p15>;
-               vdd33-supply = <&vreg_rtmr1_3p3>;
-               vdd33-cap-supply = <&vreg_rtmr1_3p3>;
-               vddar-supply = <&vreg_rtmr1_1p15>;
-               vddat-supply = <&vreg_rtmr1_1p15>;
-               vddio-supply = <&vreg_rtmr1_1p8>;
-
-               reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
-
-               pinctrl-0 = <&rtmr1_default>;
-               pinctrl-names = "default";
-
-               orientation-switch;
-               retimer-switch;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-
-                               retimer_ss1_ss_out: endpoint {
-                                       remote-endpoint = <&pmic_glink_ss1_ss_in>;
-                               };
-                       };
-
-                       port@1 {
-                               reg = <1>;
-
-                               retimer_ss1_ss_in: endpoint {
-                                       remote-endpoint = <&usb_1_ss1_qmpphy_out>;
-                               };
-                       };
-
-                       port@2 {
-                               reg = <2>;
-
-                               retimer_ss1_con_sbu_out: endpoint {
-                                       remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
-                               };
-                       };
-
-               };
-       };
-};
-
 &i2c8 {
        clock-frequency = <400000>;
 
 
 &mdss_dp0_out {
        data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
 };
 
 &mdss_dp1 {
 
 &mdss_dp1_out {
        data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
 };
 
 &mdss_dp3 {
-       compatible = "qcom,x1e80100-dp";
        /delete-property/ #sound-dai-cells;
 
        status = "okay";
        status = "okay";
 };
 
+&smb2360_0 {
+       status = "okay";
+};
+
 &smb2360_0_eusb2_repeater {
        vdd18-supply = <&vreg_l3d_1p8>;
        vdd3-supply = <&vreg_l2b_3p0>;
+};
 
+&smb2360_1 {
        status = "okay";
 };
 
 &smb2360_1_eusb2_repeater {
        vdd18-supply = <&vreg_l3d_1p8>;
        vdd3-supply = <&vreg_l14b_3p0>;
-
-       status = "okay";
 };
 
 &swr0 {
                               <72 2>, /* Secure EC I2C connection (?) */
                               <238 1>; /* UFS Reset */
 
-       bt_en_default: bt-en-sleep {
-               pins = "gpio116";
-               function = "gpio";
-               output-low;
-               bias-disable;
-               drive-strength = <16>;
-       };
-
        edp_reg_en: edp-reg-en-state {
                pins = "gpio70";
                function = "gpio";
                };
        };
 
-       rtmr1_default: rtmr1-reset-n-active-state {
-               pins = "gpio176";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-       };
-
        tpad_default: tpad-default-state {
                pins = "gpio3";
                function = "gpio";
                };
        };
 
-       usb1_pwr_1p15_reg_en: usb1-pwr-1p15-reg-en-state {
-               pins = "gpio188";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-       };
-
-       usb1_pwr_1p8_reg_en: usb1-pwr-1p8-reg-en-state {
-               pins = "gpio175";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-       };
-
-       usb1_pwr_3p3_reg_en: usb1-pwr-3p3-reg-en-state {
-               pins = "gpio186";
-               function = "gpio";
-               drive-strength = <2>;
-               bias-disable;
-       };
-
        wcd_default: wcd-reset-n-active-state {
                pins = "gpio191";
                function = "gpio";
 };
 
 &usb_1_ss1_qmpphy_out {
-       remote-endpoint = <&retimer_ss1_ss_in>;
+       remote-endpoint = <&pmic_glink_ss1_ss_in>;
 };
 
 &usb_mp {
index a3d53f2ba2c3d01804442cd8a8e135724c63e609..dad0f11e8e8583df6fd8aeec5be2af86739d85fb 100644 (file)
                                        reg = <1>;
 
                                        pmic_glink_ss0_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+                                               remote-endpoint = <&retimer_ss0_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss0_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss0_con_sbu_out>;
                                        };
                                };
                        };
                                        reg = <1>;
 
                                        pmic_glink_ss1_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+                                               remote-endpoint = <&retimer_ss1_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss1_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss1_con_sbu_out>;
                                        };
                                };
                        };
                                        reg = <1>;
 
                                        pmic_glink_ss2_ss_in: endpoint {
-                                               remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+                                               remote-endpoint = <&retimer_ss2_ss_out>;
+                                       };
+                               };
+
+                               port@2 {
+                                       reg = <2>;
+
+                                       pmic_glink_ss2_con_sbu_in: endpoint {
+                                               remote-endpoint = <&retimer_ss2_con_sbu_out>;
                                        };
                                };
                        };
                audio-routing = "WooferLeft IN", "WSA WSA_SPK1 OUT",
                                "TweeterLeft IN", "WSA WSA_SPK2 OUT",
                                "WooferRight IN", "WSA2 WSA_SPK2 OUT",
-                               "TweeterRight IN", "WSA2 WSA_SPK2 OUT";
+                               "TweeterRight IN", "WSA2 WSA_SPK2 OUT",
+                               "VA DMIC0", "vdd-micb",
+                               "VA DMIC1", "vdd-micb",
+                               "VA DMIC2", "vdd-micb",
+                               "VA DMIC3", "vdd-micb";
 
                wsa-dai-link {
                        link-name = "WSA Playback";
                regulator-boot-on;
        };
 
+       vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR0_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb0_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR1_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb1_pwr_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr2_1p15: regulator-rtmr2-1p15 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR2_1P15";
+               regulator-min-microvolt = <1150000>;
+               regulator-max-microvolt = <1150000>;
+
+               gpio = <&tlmm 189 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb2_pwr_1p15_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr2_1p8: regulator-rtmr2-1p8 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR2_1P8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+
+               gpio = <&tlmm 126 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb2_pwr_1p8_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
+       vreg_rtmr2_3p3: regulator-rtmr2-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_RTMR2_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 187 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&usb2_pwr_3p3_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
        vph_pwr: regulator-vph-pwr {
                compatible = "regulator-fixed";
 
                        regulator-min-microvolt = <1200000>;
                        regulator-max-microvolt = <1200000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l14b_3p0: ldo14 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
-
        };
 
        regulators-1 {
 
                vreg_l2j_1p2: ldo2 {
                        regulator-name = "vreg_l2j_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
        };
 };
 
+&i2c1 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       typec-mux@8 {
+               compatible = "parade,ps8830";
+               reg = <0x08>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK5>;
+
+               vdd-supply = <&vreg_rtmr2_1p15>;
+               vdd33-supply = <&vreg_rtmr2_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr2_3p3>;
+               vddar-supply = <&vreg_rtmr2_1p15>;
+               vddat-supply = <&vreg_rtmr2_1p15>;
+               vddio-supply = <&vreg_rtmr2_1p8>;
+
+               reset-gpios = <&tlmm 185 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr2_default>;
+               pinctrl-names = "default";
+
+               orientation-switch;
+               retimer-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss2_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss2_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss2_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss2_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss2_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       typec-mux@8 {
+               compatible = "parade,ps8830";
+               reg = <0x08>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK3>;
+
+               vdd-supply = <&vreg_rtmr0_1p15>;
+               vdd33-supply = <&vreg_rtmr0_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr0_3p3>;
+               vddar-supply = <&vreg_rtmr0_1p15>;
+               vddat-supply = <&vreg_rtmr0_1p15>;
+               vddio-supply = <&vreg_rtmr0_1p8>;
+
+               reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr0_default>;
+               pinctrl-names = "default";
+
+               retimer-switch;
+               orientation-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss0_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss0_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss0_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss0_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c7 {
+       clock-frequency = <400000>;
+
+       status = "okay";
+
+       typec-mux@8 {
+               compatible = "parade,ps8830";
+               reg = <0x8>;
+
+               clocks = <&rpmhcc RPMH_RF_CLK4>;
+
+               vdd-supply = <&vreg_rtmr1_1p15>;
+               vdd33-supply = <&vreg_rtmr1_3p3>;
+               vdd33-cap-supply = <&vreg_rtmr1_3p3>;
+               vddar-supply = <&vreg_rtmr1_1p15>;
+               vddat-supply = <&vreg_rtmr1_1p15>;
+               vddio-supply = <&vreg_rtmr1_1p8>;
+
+               reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
+
+               pinctrl-0 = <&rtmr1_default>;
+               pinctrl-names = "default";
+
+               retimer-switch;
+               orientation-switch;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               retimer_ss1_ss_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss1_ss_in>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               retimer_ss1_ss_in: endpoint {
+                                       remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+                               };
+                       };
+
+                       port@2 {
+                               reg = <2>;
+
+                               retimer_ss1_con_sbu_out: endpoint {
+                                       remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
+                               };
+                       };
+
+               };
+       };
+};
+
 &i2c8 {
        clock-frequency = <400000>;
 
        status = "okay";
 };
 
+&mdss_dp0 {
+       status = "okay";
+};
+
+&mdss_dp0_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp1 {
+       status = "okay";
+};
+
+&mdss_dp1_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp2 {
+       status = "okay";
+};
+
+&mdss_dp2_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
 &mdss_dp3 {
-       compatible = "qcom,x1e80100-dp";
        /delete-property/ #sound-dai-cells;
 
        status = "okay";
        wifi@0 {
                compatible = "pci17cb,1107";
                reg = <0x10000 0x0 0x0 0x0 0x0>;
-
-               qcom,ath12k-calibration-variant = "LES790";
        };
 };
 
        status = "okay";
 };
 
+&pm8550_gpios {
+       rtmr0_default: rtmr0-reset-n-active-state {
+               pins = "gpio10";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+
+       usb0_3p3_reg_en: usb0-3p3-reg-en-state {
+               pins = "gpio11";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
+&pm8550ve_9_gpios {
+       usb0_1p8_reg_en: usb0-1p8-reg-en-state {
+               pins = "gpio8";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
 &pmc8380_3_gpios {
        edp_bl_en: edp-bl-en-state {
                pins = "gpio4";
        };
 };
 
+&pmc8380_5_gpios {
+       usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
+               pins = "gpio8";
+               function = "normal";
+               power-source = <1>; /* 1.8V */
+               bias-disable;
+               input-disable;
+               output-enable;
+       };
+};
+
 &qupv3_0 {
        status = "okay";
 };
                };
        };
 
+       rtmr1_default: rtmr1-reset-n-active-state {
+               pins = "gpio176";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       rtmr2_default: rtmr2-reset-n-active-state {
+               pins = "gpio185";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
        tpad_default: tpad-default-state {
                pins = "gpio3";
                function = "gpio";
                };
        };
 
+       usb1_pwr_1p15_reg_en: usb1-pwr-1p15-reg-en-state {
+               pins = "gpio188";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb1_pwr_1p8_reg_en: usb1-pwr-1p8-reg-en-state {
+               pins = "gpio175";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb1_pwr_3p3_reg_en: usb1-pwr-3p3-reg-en-state {
+               pins = "gpio186";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb2_pwr_1p15_reg_en: usb2-pwr-1p15-reg-en-state {
+               pins = "gpio189";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb2_pwr_1p8_reg_en: usb2-pwr-1p8-reg-en-state {
+               pins = "gpio126";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       usb2_pwr_3p3_reg_en: usb2-pwr-3p3-reg-en-state {
+               pins = "gpio187";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
 };
 
 &uart21 {
 };
 
 &usb_1_ss0_qmpphy_out {
-       remote-endpoint = <&pmic_glink_ss0_ss_in>;
+       remote-endpoint = <&retimer_ss0_ss_in>;
 };
 
 &usb_1_ss1_hsphy {
 };
 
 &usb_1_ss1_qmpphy_out {
-       remote-endpoint = <&pmic_glink_ss1_ss_in>;
+       remote-endpoint = <&retimer_ss1_ss_in>;
 };
 
 &usb_1_ss2_hsphy {
 };
 
 &usb_1_ss2_qmpphy_out {
-       remote-endpoint = <&pmic_glink_ss2_ss_in>;
+       remote-endpoint = <&retimer_ss2_ss_in>;
 };
index 5867953c73564ca7ae1279b73f6834aa1d732792..0fd8516580b2679ee425438cb73fd4078cb20581 100644 (file)
                        regulator-min-microvolt = <1200000>;
                        regulator-max-microvolt = <1200000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l13b: ldo13 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l16b: ldo16 {
                reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
 
                clocks = <&rpmhcc RPMH_RF_CLK3>;
-               clock-names = "xo";
 
                vdd-supply = <&vreg_rtmr0_1p15>;
                vdd33-supply = <&vreg_rtmr0_3p3>;
                reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
 
                clocks = <&rpmhcc RPMH_RF_CLK4>;
-               clock-names = "xo";
 
                vdd-supply = <&vreg_rtmr1_1p15>;
                vdd33-supply = <&vreg_rtmr1_3p3>;
        status = "okay";
 };
 
+&mdss_dp0 {
+       status = "okay";
+};
+
+&mdss_dp0_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp1 {
+       status = "okay";
+};
+
+&mdss_dp1_out {
+       data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
 &mdss_dp3 {
-       compatible = "qcom,x1e80100-dp";
        /delete-property/ #sound-dai-cells;
 
        status = "okay";
index d7a2a2b8fc6c30bdb10df81eac7d92306998838f..e3888bc143a0aaae23c92d400d48ea94423e0366 100644 (file)
                        };
                };
 
-               pmc8380-6-thermal {
+               pmc8380_6_thermal: pmc8380-6-thermal {
                        polling-delay-passive = <100>;
 
                        thermal-sensors = <&pmc8380_6_temp_alarm>;
                        reg = <0x6100>, <0x6200>;
                        reg-names = "rtc", "alarm";
                        interrupts = <0x0 0x62 0x1 IRQ_TYPE_EDGE_RISING>;
-                       /* Not yet sure what blocks access */
-                       status = "reserved";
+                       qcom,no-alarm; /* alarm owned by ADSP */
+                       qcom,uefi-rtc-info;
                };
 
                pmk8550_sdam_2: nvram@7100 {
index ec594628304a9ab9fe2dd7cdc0467953cd82dc1f..4dfba835af6a064dbc5ad65671cb8a6e4df79758 100644 (file)
@@ -17,6 +17,7 @@
 
        aliases {
                serial0 = &uart21;
+               serial1 = &uart14;
        };
 
        wcd938x: audio-codec {
                regulator-boot-on;
        };
 
+       vreg_wcn_0p95: regulator-wcn-0p95 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_0P95";
+               regulator-min-microvolt = <950000>;
+               regulator-max-microvolt = <950000>;
+
+               vin-supply = <&vreg_wcn_3p3>;
+       };
+
+       vreg_wcn_1p9: regulator-wcn-1p9 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_1P9";
+               regulator-min-microvolt = <1900000>;
+               regulator-max-microvolt = <1900000>;
+
+               vin-supply = <&vreg_wcn_3p3>;
+       };
+
+       vreg_wcn_3p3: regulator-wcn-3p3 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VREG_WCN_3P3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&wcn_sw_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+
        usb-1-ss0-sbu-mux {
                compatible = "onnn,fsusb42", "gpio-sbu-mux";
 
                        };
                };
        };
+
+       wcn7850-pmu {
+               compatible = "qcom,wcn7850-pmu";
+
+               vdd-supply = <&vreg_wcn_0p95>;
+               vddio-supply = <&vreg_l15b_1p8>;
+               vddaon-supply = <&vreg_wcn_0p95>;
+               vdddig-supply = <&vreg_wcn_0p95>;
+               vddrfa1p2-supply = <&vreg_wcn_1p9>;
+               vddrfa1p8-supply = <&vreg_wcn_1p9>;
+
+               wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
+               bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&wcn_wlan_bt_en>;
+               pinctrl-names = "default";
+
+               regulators {
+                       vreg_pmu_rfa_cmn: ldo0 {
+                               regulator-name = "vreg_pmu_rfa_cmn";
+                       };
+
+                       vreg_pmu_aon_0p59: ldo1 {
+                               regulator-name = "vreg_pmu_aon_0p59";
+                       };
+
+                       vreg_pmu_wlcx_0p8: ldo2 {
+                               regulator-name = "vreg_pmu_wlcx_0p8";
+                       };
+
+                       vreg_pmu_wlmx_0p85: ldo3 {
+                               regulator-name = "vreg_pmu_wlmx_0p85";
+                       };
+
+                       vreg_pmu_btcmx_0p85: ldo4 {
+                               regulator-name = "vreg_pmu_btcmx_0p85";
+                       };
+
+                       vreg_pmu_rfa_0p8: ldo5 {
+                               regulator-name = "vreg_pmu_rfa_0p8";
+                       };
+
+                       vreg_pmu_rfa_1p2: ldo6 {
+                               regulator-name = "vreg_pmu_rfa_1p2";
+                       };
+
+                       vreg_pmu_rfa_1p8: ldo7 {
+                               regulator-name = "vreg_pmu_rfa_1p8";
+                       };
+
+                       vreg_pmu_pcie_0p9: ldo8 {
+                               regulator-name = "vreg_pmu_pcie_0p9";
+                       };
+
+                       vreg_pmu_pcie_1p8: ldo9 {
+                               regulator-name = "vreg_pmu_pcie_1p8";
+                       };
+               };
+       };
 };
 
 &apps_rsc {
                        regulator-min-microvolt = <1200000>;
                        regulator-max-microvolt = <1200000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l13b_3p0: ldo13 {
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+                       regulator-always-on;
                };
 
                vreg_l16b_2p9: ldo16 {
 
                vreg_l2j_1p2: ldo2 {
                        regulator-name = "vreg_l2j_1p2";
-                       regulator-min-microvolt = <1200000>;
-                       regulator-max-microvolt = <1200000>;
+                       regulator-min-microvolt = <1256000>;
+                       regulator-max-microvolt = <1256000>;
                        regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
                };
 
 
 &mdss_dp0_out {
        data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
 };
 
 &mdss_dp1 {
 
 &mdss_dp1_out {
        data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
 };
 
 &mdss_dp2 {
 
 &mdss_dp2_out {
        data-lanes = <0 1>;
+       link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
 };
 
 &mdss_dp3 {
-       compatible = "qcom,x1e80100-dp";
        /delete-property/ #sound-dai-cells;
 
        status = "okay";
        status = "okay";
 };
 
+&pcie4_port0 {
+       wifi@0 {
+               compatible = "pci17cb,1107";
+               reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+               vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+               vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+       };
+};
+
 &pcie6a {
        perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
        wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
                bias-disable;
                output-low;
        };
+
+       wcn_wlan_bt_en: wcn-wlan-bt-en-state {
+               pins = "gpio116", "gpio117";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+
+       wcn_sw_en: wcn-sw-en-state {
+               pins = "gpio214";
+               function = "gpio";
+               drive-strength = <2>;
+               bias-disable;
+       };
+};
+
+&uart14 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn7850-bt";
+               max-speed = <3200000>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p59>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+       };
 };
 
 &uart21 {
index 4936fa5b98ff7a9a009e3106f4dba90131251971..a8eb4c5fe99fe6dd49af200a738b6476d87279b2 100644 (file)
@@ -20,6 +20,7 @@
 #include <dt-bindings/soc/qcom,gpr.h>
 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
 #include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
+#include <dt-bindings/thermal/thermal.h>
 
 / {
        interrupt-parent = <&intc>;
@@ -71,8 +72,8 @@
                        reg = <0x0 0x0>;
                        enable-method = "psci";
                        next-level-cache = <&l2_0>;
-                       power-domains = <&cpu_pd0>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd0>, <&scmi_dvfs 0>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
 
                        l2_0: l2-cache {
@@ -88,8 +89,8 @@
                        reg = <0x0 0x100>;
                        enable-method = "psci";
                        next-level-cache = <&l2_0>;
-                       power-domains = <&cpu_pd1>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd1>, <&scmi_dvfs 0>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                        reg = <0x0 0x200>;
                        enable-method = "psci";
                        next-level-cache = <&l2_0>;
-                       power-domains = <&cpu_pd2>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd2>, <&scmi_dvfs 0>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                        reg = <0x0 0x300>;
                        enable-method = "psci";
                        next-level-cache = <&l2_0>;
-                       power-domains = <&cpu_pd3>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd3>, <&scmi_dvfs 0>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                        reg = <0x0 0x10000>;
                        enable-method = "psci";
                        next-level-cache = <&l2_1>;
-                       power-domains = <&cpu_pd4>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd4>, <&scmi_dvfs 1>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
 
                        l2_1: l2-cache {
                        reg = <0x0 0x10100>;
                        enable-method = "psci";
                        next-level-cache = <&l2_1>;
-                       power-domains = <&cpu_pd5>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd5>, <&scmi_dvfs 1>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                        reg = <0x0 0x10200>;
                        enable-method = "psci";
                        next-level-cache = <&l2_1>;
-                       power-domains = <&cpu_pd6>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd6>, <&scmi_dvfs 1>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                        reg = <0x0 0x10300>;
                        enable-method = "psci";
                        next-level-cache = <&l2_1>;
-                       power-domains = <&cpu_pd7>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd7>, <&scmi_dvfs 1>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                        reg = <0x0 0x20000>;
                        enable-method = "psci";
                        next-level-cache = <&l2_2>;
-                       power-domains = <&cpu_pd8>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd8>, <&scmi_dvfs 2>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
 
                        l2_2: l2-cache {
                        reg = <0x0 0x20100>;
                        enable-method = "psci";
                        next-level-cache = <&l2_2>;
-                       power-domains = <&cpu_pd9>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd9>, <&scmi_dvfs 2>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                        reg = <0x0 0x20200>;
                        enable-method = "psci";
                        next-level-cache = <&l2_2>;
-                       power-domains = <&cpu_pd10>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd10>, <&scmi_dvfs 2>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                        reg = <0x0 0x20300>;
                        enable-method = "psci";
                        next-level-cache = <&l2_2>;
-                       power-domains = <&cpu_pd11>;
-                       power-domain-names = "psci";
+                       power-domains = <&cpu_pd11>, <&scmi_dvfs 2>;
+                       power-domain-names = "psci", "perf";
                        cpu-idle-states = <&cluster_c4>;
                };
 
                                };
                        };
 
-                       cluster2 {
+                       cpu_map_cluster2: cluster2 {
                                core0 {
                                        cpu = <&cpu8>;
                                };
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                        qcom,dload-mode = <&tcsr 0x19000>;
                };
+
+               scmi {
+                       compatible = "arm,scmi";
+                       mboxes = <&cpucp_mbox 0>, <&cpucp_mbox 2>;
+                       mbox-names = "tx", "rx";
+                       shmem = <&cpu_scp_lpri0>, <&cpu_scp_lpri1>;
+
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       scmi_dvfs: protocol@13 {
+                               reg = <0x13>;
+                               #power-domain-cells = <1>;
+                       };
+               };
        };
 
        clk_virt: interconnect-0 {
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_2 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_2 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_1 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_1 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre1_noc MASTER_QUP_1 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>;
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>;
                                interconnect-names = "qup-core",
                                                     "qup-config";
 
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
 
                                interconnects = <&clk_virt MASTER_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS
                                                 &clk_virt SLAVE_QUP_CORE_0 QCOM_ICC_TAG_ALWAYS>,
-                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ALWAYS>,
+                                               <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                                &config_noc SLAVE_QUP_0 QCOM_ICC_TAG_ACTIVE_ONLY>,
                                                <&aggre2_noc MASTER_QUP_0 QCOM_ICC_TAG_ALWAYS
                                                 &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>;
                                interconnect-names = "qup-core",
                        device_type = "pci";
                        compatible = "qcom,pcie-x1e80100";
                        reg = <0x0 0x01bd0000 0x0 0x3000>,
-                             <0x0 0x78000000 0x0 0xf1d>,
+                             <0x0 0x78000000 0x0 0xf20>,
                              <0x0 0x78000f40 0x0 0xa8>,
                              <0x0 0x78001000 0x0 0x1000>,
                              <0x0 0x78100000 0x0 0x100000>,
 
                        interconnects = <&pcie_north_anoc MASTER_PCIE_3 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &cnoc_main SLAVE_PCIE_3 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc_main SLAVE_PCIE_3 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "pcie-mem",
                                             "cpu-pcie";
 
                        phys = <&pcie3_phy>;
                        phy-names = "pciephy";
 
+                       eq-presets-8gts = /bits/ 16 <0x5555 0x5555 0x5555 0x5555
+                                                    0x5555 0x5555 0x5555 0x5555>;
+                       eq-presets-16gts = /bits/ 8 <0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55>;
+
                        operating-points-v2 = <&pcie3_opp_table>;
 
                        status = "disabled";
 
                        interconnects = <&pcie_south_anoc MASTER_PCIE_6A QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &cnoc_main SLAVE_PCIE_6A QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc_main SLAVE_PCIE_6A QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "pcie-mem",
                                             "cpu-pcie";
 
                        phys = <&pcie6a_phy>;
                        phy-names = "pciephy";
 
+                       eq-presets-8gts = /bits/ 16 <0x5555 0x5555 0x5555 0x5555>;
+                       eq-presets-16gts = /bits/ 8 <0x55 0x55 0x55 0x55>;
+
                        status = "disabled";
                };
 
 
                        interconnects = <&pcie_north_anoc MASTER_PCIE_5 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &cnoc_main SLAVE_PCIE_5 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc_main SLAVE_PCIE_5 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "pcie-mem",
                                             "cpu-pcie";
 
                        phys = <&pcie5_phy>;
                        phy-names = "pciephy";
 
+                       eq-presets-8gts = /bits/ 16 <0x5555 0x5555>;
+
                        status = "disabled";
                };
 
                                      "pipe",
                                      "pipediv2";
 
-                       resets = <&gcc GCC_PCIE_5_PHY_BCR>;
-                       reset-names = "phy";
+                       resets = <&gcc GCC_PCIE_5_PHY_BCR>,
+                                <&gcc GCC_PCIE_5_NOCSR_COM_PHY_BCR>;
+                       reset-names = "phy",
+                                     "phy_nocsr";
 
                        assigned-clocks = <&gcc GCC_PCIE_5_PHY_RCHNG_CLK>;
                        assigned-clock-rates = <100000000>;
 
                        interconnects = <&pcie_north_anoc MASTER_PCIE_4 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &cnoc_main SLAVE_PCIE_4 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &cnoc_main SLAVE_PCIE_4 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "pcie-mem",
                                             "cpu-pcie";
 
                        phys = <&pcie4_phy>;
                        phy-names = "pciephy";
 
+                       eq-presets-8gts = /bits/ 16 <0x5555 0x5555>;
+
                        status = "disabled";
 
                        pcie4_port0: pcie@0 {
                                      "pipe",
                                      "pipediv2";
 
-                       resets = <&gcc GCC_PCIE_4_PHY_BCR>;
-                       reset-names = "phy";
+                       resets = <&gcc GCC_PCIE_4_PHY_BCR>,
+                                <&gcc GCC_PCIE_4_NOCSR_COM_PHY_BCR>;
+                       reset-names = "phy",
+                                     "phy_nocsr";
 
                        assigned-clocks = <&gcc GCC_PCIE_4_PHY_RCHNG_CLK>;
                        assigned-clock-rates = <100000000>;
 
                        status = "disabled";
 
-                       zap-shader {
+                       gpu_zap_shader: zap-shader {
                                memory-region = <&gpu_microcode_mem>;
                        };
 
                        gpu_opp_table: opp-table {
-                               compatible = "operating-points-v2";
+                               compatible = "operating-points-v2-adreno", "operating-points-v2";
+
+                               opp-1250000000 {
+                                       opp-hz = /bits/ 64 <1250000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L3>;
+                                       opp-peak-kBps = <16500000>;
+                                       qcom,opp-acd-level = <0xa82a5ffd>;
+                               };
+
+                               opp-1175000000 {
+                                       opp-hz = /bits/ 64 <1175000000>;
+                                       opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L2>;
+                                       opp-peak-kBps = <14398438>;
+                                       qcom,opp-acd-level = <0xa82a5ffd>;
+                               };
 
                                opp-1100000000 {
                                        opp-hz = /bits/ 64 <1100000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
-                                       opp-peak-kBps = <16500000>;
+                                       opp-peak-kBps = <14398438>;
+                                       qcom,opp-acd-level = <0xa82a5ffd>;
                                };
 
                                opp-1000000000 {
                                        opp-hz = /bits/ 64 <1000000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
                                        opp-peak-kBps = <14398438>;
+                                       qcom,opp-acd-level = <0xa82b5ffd>;
                                };
 
                                opp-925000000 {
                                        opp-hz = /bits/ 64 <925000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
                                        opp-peak-kBps = <14398438>;
+                                       qcom,opp-acd-level = <0xa82b5ffd>;
                                };
 
                                opp-800000000 {
                                        opp-hz = /bits/ 64 <800000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
                                        opp-peak-kBps = <12449219>;
+                                       qcom,opp-acd-level = <0xa82c5ffd>;
                                };
 
                                opp-744000000 {
                                        opp-hz = /bits/ 64 <744000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_SVS_L2>;
                                        opp-peak-kBps = <10687500>;
+                                       qcom,opp-acd-level = <0x882e5ffd>;
                                };
 
                                opp-687000000 {
                                        opp-hz = /bits/ 64 <687000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
                                        opp-peak-kBps = <8171875>;
+                                       qcom,opp-acd-level = <0x882e5ffd>;
                                };
 
                                opp-550000000 {
                                        opp-hz = /bits/ 64 <550000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
                                        opp-peak-kBps = <6074219>;
+                                       qcom,opp-acd-level = <0xc0285ffd>;
                                };
 
                                opp-390000000 {
                                        opp-hz = /bits/ 64 <390000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
                                        opp-peak-kBps = <3000000>;
+                                       qcom,opp-acd-level = <0xc0285ffd>;
                                };
 
                                opp-300000000 {
                                        opp-hz = /bits/ 64 <300000000>;
                                        opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS_D1>;
                                        opp-peak-kBps = <2136719>;
+                                       qcom,opp-acd-level = <0xc02b5ffd>;
                                };
                        };
                };
 
                        interconnects = <&usb_south_anoc MASTER_USB3_2 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_USB3_2 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_USB3_2 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "usb-ddr",
                                             "apps-usb";
 
 
                        interconnects = <&usb_north_anoc MASTER_USB2 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_USB2 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_USB2 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "usb-ddr",
                                             "apps-usb";
 
                                snps,dis-u1-entry-quirk;
                                snps,dis-u2-entry-quirk;
 
+                               dma-coherent;
+
                                ports {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
 
                        interconnects = <&usb_north_anoc MASTER_USB3_MP QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_USB3_MP QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_USB3_MP QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "usb-ddr",
                                             "apps-usb";
 
 
                        interconnects = <&usb_south_anoc MASTER_USB3_1 QCOM_ICC_TAG_ALWAYS
                                         &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
-                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS
-                                        &config_noc SLAVE_USB3_1 QCOM_ICC_TAG_ALWAYS>;
+                                       <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &config_noc SLAVE_USB3_1 QCOM_ICC_TAG_ACTIVE_ONLY>;
                        interconnect-names = "usb-ddr",
                                             "apps-usb";
 
                        dma-coherent;
                };
 
+               pcie_smmu: iommu@15400000 {
+                       compatible = "arm,smmu-v3";
+                       reg = <0 0x15400000 0 0x80000>;
+                       #iommu-cells = <1>;
+                       interrupts = <GIC_SPI 138 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 136 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eventq",
+                                         "gerror",
+                                         "cmdq-sync";
+                       dma-coherent;
+                       status = "reserved"; /* Controlled by Gunyah. */
+               };
+
                intc: interrupt-controller@17000000 {
                        compatible = "arm,gic-v3";
                        reg = <0 0x17000000 0 0x10000>,     /* GICD */
                        };
                };
 
+               cpucp_mbox: mailbox@17430000 {
+                       compatible = "qcom,x1e80100-cpucp-mbox";
+                       reg = <0 0x17430000 0 0x10000>, <0 0x18830000 0 0x10000>;
+                       interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+                       #mbox-cells = <1>;
+               };
+
                apps_rsc: rsc@17500000 {
                        compatible = "qcom,rpmh-rsc";
                        reg = <0 0x17500000 0 0x10000>,
                        };
                };
 
+               sram: sram@18b4e000 {
+                       compatible = "mmio-sram";
+                       reg = <0x0 0x18b4e000 0x0 0x400>;
+
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0x0 0x18b4e000 0x400>;
+
+                       cpu_scp_lpri0: scp-sram-section@0 {
+                               compatible = "arm,scmi-shmem";
+                               reg = <0x0 0x200>;
+                       };
+
+                       cpu_scp_lpri1: scp-sram-section@200 {
+                               compatible = "arm,scmi-shmem";
+                               reg = <0x200 0x200>;
+                       };
+               };
+
+               sbsa_watchdog: watchdog@1c840000 {
+                       compatible = "arm,sbsa-gwdt";
+                       reg = <0 0x1c840000 0 0x1000>,
+                             <0 0x1c850000 0 0x1000>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
                pmu@24091000 {
                        compatible = "qcom,x1e80100-llcc-bwmon", "qcom,sc7280-llcc-bwmon";
                        reg = <0 0x24091000 0 0x1000>;
                };
 
                /* cluster0 */
-               pmu@240b3400 {
+               bwmon_cluster0: pmu@240b3400 {
                        compatible = "qcom,x1e80100-cpu-bwmon", "qcom,sdm845-bwmon";
                        reg = <0 0x240b3400 0 0x600>;
 
                                         &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
 
                        operating-points-v2 = <&cpu_bwmon_opp_table>;
+               };
+
+               /* cluster2 */
+               bwmon_cluster2: pmu@240b5400 {
+                       compatible = "qcom,x1e80100-cpu-bwmon", "qcom,sdm845-bwmon";
+                       reg = <0 0x240b5400 0 0x600>;
+
+                       interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
+
+                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
+                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
+
+                       operating-points-v2 = <&cpu_bwmon_opp_table>;
 
                        cpu_bwmon_opp_table: opp-table {
                                compatible = "operating-points-v2";
                        };
                };
 
-               /* cluster2 */
-               pmu@240b5400 {
-                       compatible = "qcom,x1e80100-cpu-bwmon", "qcom,sdm845-bwmon";
-                       reg = <0 0x240b5400 0 0x600>;
-
-                       interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
-
-                       interconnects = <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
-                                        &gem_noc SLAVE_LLCC QCOM_ICC_TAG_ACTIVE_ONLY>;
-
-                       operating-points-v2 = <&cpu_bwmon_opp_table>;
-               };
-
                /* cluster1 */
                pmu@240b6400 {
                        compatible = "qcom,x1e80100-cpu-bwmon", "qcom,sdm845-bwmon";
                                };
 
                                aoss0-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                };
 
                cpu0-0-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 1>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu0-0-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 2>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu0-1-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 3>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu0-1-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 4>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu0-2-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 5>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu0-2-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 6>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu0-3-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 7>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu0-3-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 8>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens0 9>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
-                               };
-
                                cpuss2-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                        thermal-sensors = <&tsens0 10>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
-                               };
-
                                cpuss2-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                                };
 
                                mem-critical {
-                                       temperature = <125000>;
+                                       temperature = <115000>;
                                        hysteresis = <0>;
                                        type = "critical";
                                };
                };
 
                video-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens0 12>;
 
                        trips {
                                trip-point0 {
-                                       temperature = <125000>;
+                                       temperature = <90000>;
+                                       hysteresis = <2000>;
+                                       type = "hot";
+                               };
+
+                               video-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
-                                       type = "passive";
+                                       type = "critical";
                                };
                        };
                };
                                };
 
                                aoss0-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                };
 
                cpu1-0-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens1 1>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu1-0-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens1 2>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu1-1-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens1 3>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu1-1-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens1 4>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu1-2-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens1 5>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu1-2-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens1 6>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu1-3-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens1 7>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu1-3-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens1 8>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens1 9>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
-                               };
-
                                cpuss2-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                        thermal-sensors = <&tsens1 10>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
-                               };
-
                                cpuss2-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                                };
 
                                aoss0-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                };
 
                cpu2-0-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens2 1>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu2-0-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens2 2>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu2-1-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens2 3>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu2-1-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens2 4>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu2-2-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens2 5>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu2-2-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens2 6>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu2-3-top-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens2 7>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                cpu2-3-btm-thermal {
-                       polling-delay-passive = <250>;
-
                        thermal-sensors = <&tsens2 8>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
-                               trip-point1 {
-                                       temperature = <95000>;
-                                       hysteresis = <2000>;
-                                       type = "passive";
-                               };
-
                                cpu-critical {
-                                       temperature = <110000>;
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                        thermal-sensors = <&tsens2 9>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
-                               };
-
                                cpuss2-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                        thermal-sensors = <&tsens2 10>;
 
                        trips {
-                               trip-point0 {
-                                       temperature = <90000>;
-                                       hysteresis = <2000>;
-                                       type = "hot";
-                               };
-
                                cpuss2-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                                };
 
                                aoss0-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                                };
 
                                nsp0-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                                };
 
                                nsp1-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                                };
 
                                nsp2-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                                };
 
                                nsp3-critical {
-                                       temperature = <125000>;
-                                       hysteresis = <0>;
+                                       temperature = <115000>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
                };
 
                gpuss-0-thermal {
-                       polling-delay-passive = <10>;
+                       polling-delay-passive = <200>;
 
                        thermal-sensors = <&tsens3 5>;
 
-                       trips {
-                               trip-point0 {
-                                       temperature = <85000>;
-                                       hysteresis = <1000>;
-                                       type = "passive";
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss0_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
+                       };
 
-                               trip-point1 {
-                                       temperature = <90000>;
+                       trips {
+                               gpuss0_alert0: trip-point0 {
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
-                               trip-point2 {
-                                       temperature = <125000>;
+                               gpu-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                gpuss-1-thermal {
-                       polling-delay-passive = <10>;
+                       polling-delay-passive = <200>;
 
                        thermal-sensors = <&tsens3 6>;
 
-                       trips {
-                               trip-point0 {
-                                       temperature = <85000>;
-                                       hysteresis = <1000>;
-                                       type = "passive";
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss1_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
+                       };
 
-                               trip-point1 {
-                                       temperature = <90000>;
+                       trips {
+                               gpuss1_alert0: trip-point0 {
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
-                               trip-point2 {
-                                       temperature = <125000>;
+                               gpu-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                gpuss-2-thermal {
-                       polling-delay-passive = <10>;
+                       polling-delay-passive = <200>;
 
                        thermal-sensors = <&tsens3 7>;
 
-                       trips {
-                               trip-point0 {
-                                       temperature = <85000>;
-                                       hysteresis = <1000>;
-                                       type = "passive";
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss2_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
+                       };
 
-                               trip-point1 {
-                                       temperature = <90000>;
+                       trips {
+                               gpuss2_alert0: trip-point0 {
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
-                               trip-point2 {
-                                       temperature = <125000>;
+                               gpu-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                gpuss-3-thermal {
-                       polling-delay-passive = <10>;
+                       polling-delay-passive = <200>;
 
                        thermal-sensors = <&tsens3 8>;
 
-                       trips {
-                               trip-point0 {
-                                       temperature = <85000>;
-                                       hysteresis = <1000>;
-                                       type = "passive";
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss3_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
+                       };
 
-                               trip-point1 {
-                                       temperature = <90000>;
+                       trips {
+                               gpuss3_alert0: trip-point0 {
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
-                               trip-point2 {
-                                       temperature = <125000>;
+                               gpu-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                gpuss-4-thermal {
-                       polling-delay-passive = <10>;
+                       polling-delay-passive = <200>;
 
                        thermal-sensors = <&tsens3 9>;
 
-                       trips {
-                               trip-point0 {
-                                       temperature = <85000>;
-                                       hysteresis = <1000>;
-                                       type = "passive";
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss4_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
+                       };
 
-                               trip-point1 {
-                                       temperature = <90000>;
+                       trips {
+                               gpuss4_alert0: trip-point0 {
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
-                               trip-point2 {
-                                       temperature = <125000>;
+                               gpu-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                gpuss-5-thermal {
-                       polling-delay-passive = <10>;
+                       polling-delay-passive = <200>;
 
                        thermal-sensors = <&tsens3 10>;
 
-                       trips {
-                               trip-point0 {
-                                       temperature = <85000>;
-                                       hysteresis = <1000>;
-                                       type = "passive";
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss5_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
+                       };
 
-                               trip-point1 {
-                                       temperature = <90000>;
+                       trips {
+                               gpuss5_alert0: trip-point0 {
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
-                               trip-point2 {
-                                       temperature = <125000>;
+                               gpu-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                gpuss-6-thermal {
-                       polling-delay-passive = <10>;
+                       polling-delay-passive = <200>;
 
                        thermal-sensors = <&tsens3 11>;
 
-                       trips {
-                               trip-point0 {
-                                       temperature = <85000>;
-                                       hysteresis = <1000>;
-                                       type = "passive";
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss6_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
+                       };
 
-                               trip-point1 {
-                                       temperature = <90000>;
+                       trips {
+                               gpuss6_alert0: trip-point0 {
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
-                               trip-point2 {
-                                       temperature = <125000>;
+                               gpu-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
                };
 
                gpuss-7-thermal {
-                       polling-delay-passive = <10>;
+                       polling-delay-passive = <200>;
 
                        thermal-sensors = <&tsens3 12>;
 
-                       trips {
-                               trip-point0 {
-                                       temperature = <85000>;
-                                       hysteresis = <1000>;
-                                       type = "passive";
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpuss7_alert0>;
+                                       cooling-device = <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                                };
+                       };
 
-                               trip-point1 {
-                                       temperature = <90000>;
+                       trips {
+                               gpuss7_alert0: trip-point0 {
+                                       temperature = <95000>;
                                        hysteresis = <1000>;
-                                       type = "hot";
+                                       type = "passive";
                                };
 
-                               trip-point2 {
-                                       temperature = <125000>;
+                               gpu-critical {
+                                       temperature = <115000>;
                                        hysteresis = <1000>;
                                        type = "critical";
                                };
 
                                camera0-critical {
                                        temperature = <115000>;
-                                       hysteresis = <0>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
 
                                camera0-critical {
                                        temperature = <115000>;
-                                       hysteresis = <0>;
+                                       hysteresis = <1000>;
                                        type = "critical";
                                };
                        };
diff --git a/src/arm64/qcom/x1p42100-crd.dts b/src/arm64/qcom/x1p42100-crd.dts
new file mode 100644 (file)
index 0000000..cf07860
--- /dev/null
@@ -0,0 +1,17 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+/dts-v1/;
+
+#include "x1p42100.dtsi"
+#include "x1-crd.dtsi"
+
+/delete-node/ &pmc8380_6;
+/delete-node/ &pmc8380_6_thermal;
+
+/ {
+       model = "Qualcomm Technologies, Inc. X1P42100 CRD";
+       compatible = "qcom,x1p42100-crd", "qcom,x1p42100";
+};
diff --git a/src/arm64/qcom/x1p42100.dtsi b/src/arm64/qcom/x1p42100.dtsi
new file mode 100644 (file)
index 0000000..27f4790
--- /dev/null
@@ -0,0 +1,81 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ */
+
+/* X1P42100 is heavily based on X1E80100, with some meaningful differences */
+#include "x1e80100.dtsi"
+
+/delete-node/ &bwmon_cluster0;
+/delete-node/ &cluster_pd2;
+/delete-node/ &cpu_map_cluster2;
+/delete-node/ &cpu8;
+/delete-node/ &cpu9;
+/delete-node/ &cpu10;
+/delete-node/ &cpu11;
+/delete-node/ &cpu_pd8;
+/delete-node/ &cpu_pd9;
+/delete-node/ &cpu_pd10;
+/delete-node/ &cpu_pd11;
+/delete-node/ &pcie3_phy;
+
+&gcc {
+       compatible = "qcom,x1p42100-gcc", "qcom,x1e80100-gcc";
+};
+
+/* The GPU is physically different and will be brought up later */
+&gpu {
+       /delete-property/ compatible;
+};
+
+&gpucc {
+       compatible = "qcom,x1p42100-gpucc";
+};
+
+/* PCIe3 has half the lanes compared to X1E80100 */
+&pcie3 {
+       num-lanes = <4>;
+};
+
+&pcie6a_phy {
+       compatible = "qcom,x1p42100-qmp-gen4x4-pcie-phy";
+};
+
+&soc {
+       /* The PCIe3 PHY on X1P42100 uses a different IP block */
+       pcie3_phy: phy@1bd4000 {
+               compatible = "qcom,x1p42100-qmp-gen4x4-pcie-phy";
+               reg = <0x0 0x01bd4000 0x0 0x2000>,
+                     <0x0 0x01bd6000 0x0 0x2000>;
+
+               clocks = <&gcc GCC_PCIE_3_PHY_AUX_CLK>,
+                        <&gcc GCC_PCIE_3_CFG_AHB_CLK>,
+                        <&tcsr TCSR_PCIE_8L_CLKREF_EN>,
+                        <&gcc GCC_PCIE_3_PHY_RCHNG_CLK>,
+                        <&gcc GCC_PCIE_3_PIPE_CLK>,
+                        <&gcc GCC_PCIE_3_PIPEDIV2_CLK>;
+               clock-names = "aux",
+                             "cfg_ahb",
+                             "ref",
+                             "rchng",
+                             "pipe",
+                             "pipediv2";
+
+               resets = <&gcc GCC_PCIE_3_PHY_BCR>,
+                        <&gcc GCC_PCIE_3_NOCSR_COM_PHY_BCR>;
+               reset-names = "phy",
+                             "phy_nocsr";
+
+               assigned-clocks = <&gcc GCC_PCIE_3_PHY_RCHNG_CLK>;
+               assigned-clock-rates = <100000000>;
+
+               power-domains = <&gcc GCC_PCIE_3_PHY_GDSC>;
+
+               #clock-cells = <0>;
+               clock-output-names = "pcie3_pipe_clk";
+
+               #phy-cells = <0>;
+
+               status = "disabled";
+       };
+};
index 1489bc8d2f4e6416a9097d1f9586ff42c12e800a..d40a7224f9c3d78260415e77892782c527afc3f2 100644 (file)
        #address-cells = <1>;
        #size-cells = <0>;
 
-       brcmf: bcrmf@1 {
+       brcmf: wifi@1 {
                reg = <1>;
                compatible = "brcm,bcm4329-fmac";
                interrupts-extended = <&gpio1 27 IRQ_TYPE_LEVEL_LOW>;
index f1613bfd16320c9de928add5f34a43742e2caacb..95ff693399919afc2a9720095990b8010f1fe333 100644 (file)
                isp0: isp@fed00000 {
                        compatible = "renesas,r8a779a0-isp",
                                     "renesas,rcar-gen4-isp";
-                       reg = <0 0xfed00000 0 0x10000>;
-                       interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cpg CPG_MOD 612>;
+                       reg = <0 0xfed00000 0 0x10000>, <0 0xfec00000 0 0x100000>;
+                       reg-names = "cs", "core";
+                       interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cs", "core";
+                       clocks = <&cpg CPG_MOD 612>, <&cpg CPG_MOD 16>;
+                       clock-names = "cs", "core";
                        power-domains = <&sysc R8A779A0_PD_A3ISP01>;
-                       resets = <&cpg 612>;
+                       resets = <&cpg 612>, <&cpg 16>;
+                       reset-names = "cs", "core";
                        status = "disabled";
 
+                       renesas,vspx = <&vspx0>;
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                isp1: isp@fed20000 {
                        compatible = "renesas,r8a779a0-isp",
                                     "renesas,rcar-gen4-isp";
-                       reg = <0 0xfed20000 0 0x10000>;
-                       interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cpg CPG_MOD 613>;
+                       reg = <0 0xfed20000 0 0x10000>, <0 0xfee00000 0 0x100000>;
+                       reg-names = "cs", "core";
+                       interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cs", "core";
+                       clocks = <&cpg CPG_MOD 613>, <&cpg CPG_MOD 17>;
+                       clock-names = "cs", "core";
                        power-domains = <&sysc R8A779A0_PD_A3ISP01>;
-                       resets = <&cpg 613>;
+                       resets = <&cpg 613>, <&cpg 17>;
+                       reset-names = "cs", "core";
                        status = "disabled";
 
+                       renesas,vspx = <&vspx1>;
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                isp2: isp@fed30000 {
                        compatible = "renesas,r8a779a0-isp",
                                     "renesas,rcar-gen4-isp";
-                       reg = <0 0xfed30000 0 0x10000>;
-                       interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cpg CPG_MOD 614>;
+                       reg = <0 0xfed30000 0 0x10000>, <0 0xfef00000 0 0x100000>;
+                       reg-names = "cs", "core";
+                       interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cs", "core";
+                       clocks = <&cpg CPG_MOD 614>, <&cpg CPG_MOD 18>;
+                       clock-names = "cs", "core";
                        power-domains = <&sysc R8A779A0_PD_A3ISP23>;
-                       resets = <&cpg 614>;
+                       resets = <&cpg 614>, <&cpg 18>;
+                       reset-names = "cs", "core";
                        status = "disabled";
 
+                       renesas,vspx = <&vspx2>;
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                isp3: isp@fed40000 {
                        compatible = "renesas,r8a779a0-isp",
                                     "renesas,rcar-gen4-isp";
-                       reg = <0 0xfed40000 0 0x10000>;
-                       interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
-                       clocks = <&cpg CPG_MOD 615>;
+                       reg = <0 0xfed40000 0 0x10000>, <0 0xfe400000 0 0x100000>;
+                       reg-names = "cs", "core";
+                       interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cs", "core";
+                       clocks = <&cpg CPG_MOD 615>, <&cpg CPG_MOD 19>;
+                       clock-names = "cs", "core";
                        power-domains = <&sysc R8A779A0_PD_A3ISP23>;
-                       resets = <&cpg 615>;
+                       resets = <&cpg 615>, <&cpg 19>;
+                       reset-names = "cs", "core";
                        status = "disabled";
 
+                       renesas,vspx = <&vspx3>;
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
index ebed41892df3346c782250363bb919a35c8aa203..b216d605c321c2f363d57b5078093597b095d673 100644 (file)
 / {
        compatible = "renesas,r8a779f4", "renesas,r8a779f0";
 };
+
+&fuse {
+       nvmem-layout {
+               compatible = "fixed-layout";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               ufs_tune: calib@144 {
+                       reg = <0x144 0x08>;
+               };
+       };
+};
+
+&ufs {
+       nvmem-cells = <&ufs_tune>;
+       nvmem-cell-names = "calibration";
+};
index 1760720b71287043778d8988212165e7e5e69f90..6dbf05a559357170984295af6190266881d12f86 100644 (file)
                isp0: isp@fed00000 {
                        compatible = "renesas,r8a779g0-isp",
                                     "renesas,rcar-gen4-isp";
-                       reg = <0 0xfed00000 0 0x10000>;
-                       interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&cpg CPG_MOD 612>;
+                       reg = <0 0xfed00000 0 0x10000>, <0 0xfec00000 0 0x100000>;
+                       reg-names = "cs", "core";
+                       interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cs", "core";
+                       clocks = <&cpg CPG_MOD 612>, <&cpg CPG_MOD 16>;
+                       clock-names = "cs", "core";
                        power-domains = <&sysc R8A779G0_PD_A3ISP0>;
-                       resets = <&cpg 612>;
+                       resets = <&cpg 612>, <&cpg 16>;
+                       reset-names = "cs", "core";
                        status = "disabled";
 
+                       renesas,vspx = <&vspx0>;
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                isp1: isp@fed20000 {
                        compatible = "renesas,r8a779g0-isp",
                                     "renesas,rcar-gen4-isp";
-                       reg = <0 0xfed20000 0 0x10000>;
-                       interrupts = <GIC_SPI 474 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&cpg CPG_MOD 613>;
+                       reg = <0 0xfed20000 0 0x10000>, <0 0xfee00000 0 0x100000>;
+                       reg-names = "cs", "core";
+                       interrupts = <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 476 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cs", "core";
+                       clocks = <&cpg CPG_MOD 613>, <&cpg CPG_MOD 17>;
+                       clock-names = "cs", "core";
                        power-domains = <&sysc R8A779G0_PD_A3ISP1>;
-                       resets = <&cpg 613>;
+                       resets = <&cpg 613>, <&cpg 17>;
+                       reset-names = "cs", "core";
                        status = "disabled";
 
+                       renesas,vspx = <&vspx1>;
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
diff --git a/src/arm64/renesas/r8a779g3-sparrow-hawk-fan-pwm.dtso b/src/arm64/renesas/r8a779g3-sparrow-hawk-fan-pwm.dtso
new file mode 100644 (file)
index 0000000..50d53c8
--- /dev/null
@@ -0,0 +1,43 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Overlay for the PWM controlled blower fan in connector J3:FAN
+ * on R-Car V4H ES3.0 Sparrow Hawk board
+ *
+ * Copyright (C) 2025 Marek Vasut <marek.vasut+renesas@mailbox.org>
+ *
+ * Example usage:
+ *
+ * # Localize hwmon sysfs directory that matches the PWM fan,
+ * # enable the PWM fan, and configure the fan speed manually.
+ * r8a779g3-sparrow-hawk$ grep -H . /sys/class/hwmon/hwmon?/name
+ * /sys/class/hwmon/hwmon0/name:sensor1_thermal
+ * /sys/class/hwmon/hwmon1/name:sensor2_thermal
+ * /sys/class/hwmon/hwmon2/name:sensor3_thermal
+ * /sys/class/hwmon/hwmon3/name:sensor4_thermal
+ * /sys/class/hwmon/hwmon4/name:pwmfan
+ *                       ^      ^^^^^^
+ *
+ * # Select mode 2 , enable fan PWM and regulator and keep them enabled.
+ * # For details, see Linux Documentation/hwmon/pwm-fan.rst
+ * r8a779g3-sparrow-hawk$ echo 2 > /sys/class/hwmon/hwmon4/pwm1_enable
+ *
+ * # Configure PWM fan speed in range 0..255 , 0 is stopped , 255 is full speed .
+ * # Fan speed 101 is about 2/5 of the PWM fan speed:
+ * r8a779g3-sparrow-hawk$ echo 101 > /sys/class/hwmon/hwmon4/pwm1
+ */
+
+/dts-v1/;
+/plugin/;
+
+/*
+ * Override default PWM fan settings. For a list of available properties,
+ * see schema Documentation/devicetree/bindings/hwmon/pwm-fan.yaml .
+ */
+&fan {
+       /* Available cooling levels */
+       cooling-levels = <0 50 100 150 200 255>;
+       /* Four pulses of tacho signal per one revolution */
+       pulses-per-revolution = <4>;
+       /* PWM period: 100us ~= 10 kHz */
+       pwms = <&pwm0 0 100000>;
+};
diff --git a/src/arm64/renesas/r8a779g3-sparrow-hawk.dts b/src/arm64/renesas/r8a779g3-sparrow-hawk.dts
new file mode 100644 (file)
index 0000000..6955eaf
--- /dev/null
@@ -0,0 +1,772 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the R-Car V4H ES3.0 Sparrow Hawk board
+ *
+ * Copyright (C) 2025 Marek Vasut <marek.vasut+renesas@mailbox.org>
+ */
+/*
+ * DA7212 Codec settings
+ *
+ * for Playback
+ *     > amixer set "Headphone" 40%
+ *     > amixer set "Headphone" on
+ *     > amixer set "Mixout Left DAC Left"  on
+ *     > amixer set "Mixout Right DAC Right" on
+ *     > aplay xxx.wav
+ *
+ * for Capture (Aux/Mic)
+ *
+ *             on/off (B)
+ *     CONN3 (HeadSet) ---+----> MSIOF1
+ *                        |
+ *     CONN4 AUX ---------+ on/off (A)
+ *
+ *     > amixer set "Mixin PGA" on
+ *     > amixer set "Mixin PGA" 50%
+ *     > amixer set "ADC" on
+ *     > amixer set "ADC" 80%
+ *     > amixer set "Aux" on                           ^
+ *     > amixer set "Aux" 80%                          | (A)
+ *     > amixer set "Mixin Left Aux Left" on           |
+ *     > amixer set "Mixin Right Aux Right" on         v
+ *     > amixer set "Mic 1" on                         ^
+ *     > amixer set "Mic 1" 80%                        | (B)
+ *     > amixer set "Mixin Left Mic 1" on              |
+ *     > amixer set "Mixin Right Mic 1" on             v
+ *     > arecord -f cd xxx.wav
+ */
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+
+#include "r8a779g3.dtsi"
+
+/ {
+       model = "Retronix Sparrow Hawk board based on r8a779g3";
+       compatible = "retronix,sparrow-hawk", "renesas,r8a779g3",
+                    "renesas,r8a779g0";
+
+       aliases {
+               ethernet0 = &avb0;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               serial0 = &hscif0;
+               serial1 = &hscif1;
+               serial2 = &hscif3;
+               spi0 = &rpc;
+       };
+
+       chosen {
+               bootargs = "ignore_loglevel rw root=/dev/nfs ip=on";
+               stdout-path = "serial0:921600n8";
+       };
+
+       /* Page 31 / FAN */
+       fan: pwm-fan {
+               pinctrl-0 = <&irq4_pins>;
+               pinctrl-names = "default";
+               compatible = "pwm-fan";
+               #cooling-cells = <2>;
+               interrupts-extended = <&intc_ex 4 IRQ_TYPE_EDGE_FALLING>;
+               /*
+                * The fan model connected to this device can be selected
+                * by user. Set "cooling-levels" DT property to single 255
+                * entry to force the fan PWM into constant HIGH, which
+                * forces the fan to spin at maximum RPM, thus providing
+                * maximum cooling to this device and protection against
+                * misconfigured PWM duty cycle to the fan.
+                *
+                * User has to configure "pwms" and "pulses-per-revolution"
+                * DT properties according to fan datasheet first, and then
+                * extend "cooling-levels = <0 m n ... 255>" property to
+                * achieve proper fan control compatible with fan model
+                * installed by user.
+                */
+               cooling-levels = <255>;
+               pulses-per-revolution = <2>;
+               pwms = <&pwm0 0 50000>;
+       };
+
+       /*
+        * Page 15 / LPDDR5
+        *
+        * This configuration listed below is for the 8 GiB board variant
+        * with MT62F1G64D8EK-023 WT:C LPDDR5 part populated on the board.
+        *
+        * A variant with 16 GiB MT62F2G64D8EK-023 WT:C part populated on
+        * the board is automatically handled by the bootloader, which
+        * adjusts the correct DRAM size into the memory nodes below.
+        */
+       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>;
+       };
+
+       /* Page 27 / DSI to Display */
+       mini-dp-con {
+               compatible = "dp-connector";
+               label = "CN6";
+               type = "full-size";
+
+               port {
+                       mini_dp_con_in: endpoint {
+                               remote-endpoint = <&sn65dsi86_out>;
+                       };
+               };
+       };
+
+       reg_1p2v: regulator-1p2v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.2V";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       /* Page 27 / DSI to Display */
+       sn65dsi86_refclk: clk-x9 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <38400000>;
+       };
+
+       /* Page 30 / Audio_Codec */
+       sound_card: sound {
+               compatible = "audio-graph-card2";
+               links = <&msiof1_snd>;
+       };
+
+       /* Page 17 uSD-Slot */
+       vcc_sdhi: regulator-vcc-sdhi {
+               compatible = "regulator-gpio";
+               regulator-name = "SDHI VccQ";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&gpio8 13 GPIO_ACTIVE_HIGH>;
+               gpios-states = <1>;
+               states = <3300000 0>, <1800000 1>;
+       };
+};
+
+&audio_clkin {
+       clock-frequency = <24576000>;
+};
+
+/* Page 22 / Ether_AVB0 */
+&avb0 {
+       pinctrl-0 = <&avb0_pins>;
+       pinctrl-names = "default";
+       phy-handle = <&avb0_phy>;
+       tx-internal-delay-ps = <2000>;
+       status = "okay";
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               avb0_phy: ethernet-phy@0 {      /* KSZ9031RNXVB */
+                       compatible = "ethernet-phy-id0022.1622",
+                                    "ethernet-phy-ieee802.3-c22";
+                       rxc-skew-ps = <1500>;
+                       reg = <0>;
+                       /* AVB0_PHY_INT_V */
+                       interrupts-extended = <&gpio7 5 IRQ_TYPE_LEVEL_LOW>;
+                       /* GP7_10/AVB0_RESETN_V */
+                       reset-gpios = <&gpio7 10 GPIO_ACTIVE_LOW>;
+                       reset-assert-us = <10000>;
+                       reset-deassert-us = <300>;
+               };
+       };
+};
+
+/* Page 28 / CANFD_IF */
+&can_clk {
+       clock-frequency = <40000000>;
+};
+
+/* Page 28 / CANFD_IF */
+&canfd {
+       pinctrl-0 = <&canfd3_pins>, <&canfd4_pins>, <&can_clk_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       channel3 {
+               status = "okay";
+       };
+
+       channel4 {
+               status = "okay";
+       };
+};
+
+/* Page 27 / DSI to Display */
+&dsi1 {
+       status = "okay";
+
+       ports {
+               port@1 {
+                       dsi1_out: endpoint {
+                               remote-endpoint = <&sn65dsi86_in>;
+                               data-lanes = <1 2 3 4>;
+                       };
+               };
+       };
+};
+
+/* Page 27 / DSI to Display */
+&du {
+       status = "okay";
+};
+
+/* Page 5 / R-Car V4H_INT_I2C */
+&extal_clk {   /* X3 */
+       clock-frequency = <16666666>;
+};
+
+/* Page 5 / R-Car V4H_INT_I2C */
+&extalr_clk {  /* X2 */
+       clock-frequency = <32768>;
+};
+
+/* Page 26 / 2230 Key M M.2 */
+&gpio4 {
+       /* 9FGV0441 nOE inputs 0 and 1 */
+       pcie-m2-oe-hog {
+               gpio-hog;
+               gpios = <21 GPIO_ACTIVE_HIGH>;
+               output-low;
+               line-name = "PCIe-CLK-nOE-M2";
+       };
+
+       /* 9FGV0441 nOE inputs 2 and 3 */
+       pcie-usb-oe-hog {
+               gpio-hog;
+               gpios = <22 GPIO_ACTIVE_HIGH>;
+               output-low;
+               line-name = "PCIe-CLK-nOE-USB";
+       };
+};
+
+/* Page 23 / DEBUG */
+&hscif0 {      /* FTDI ADBUS[3:0] */
+       pinctrl-0 = <&hscif0_pins>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+       bootph-all;
+
+       status = "okay";
+};
+
+/* Page 23 / DEBUG */
+&hscif1 {      /* FTDI BDBUS[3:0] */
+       pinctrl-0 = <&hscif1_pins>;
+       pinctrl-names = "default";
+       uart-has-rtscts;
+
+       status = "okay";
+};
+
+/* Page 24 / UART */
+&hscif3 {      /* CN7 pins 8 (TX) and 10 (RX) */
+       pinctrl-0 = <&hscif3_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+};
+
+/* Page 24 / I2C SWITCH */
+&i2c0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-0 = <&i2c0_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+
+       mux@71 {
+               compatible = "nxp,pca9544";     /* TCA9544 */
+               reg = <0x71>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               vdd-supply = <&reg_3p3v>;
+
+               i2c0_mux0: i2c@0 {
+                       reg = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /* Page 27 / DSI to Display */
+                       bridge@2c {
+                               pinctrl-0 = <&irq0_pins>;
+                               pinctrl-names = "default";
+
+                               compatible = "ti,sn65dsi86";
+                               reg = <0x2c>;
+
+                               clocks = <&sn65dsi86_refclk>;
+                               clock-names = "refclk";
+
+                               interrupts-extended = <&intc_ex 0 IRQ_TYPE_LEVEL_HIGH>;
+
+                               enable-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
+
+                               vccio-supply = <&reg_1p8v>;
+                               vpll-supply = <&reg_1p8v>;
+                               vcca-supply = <&reg_1p2v>;
+                               vcc-supply = <&reg_1p2v>;
+
+                               ports {
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       port@0 {
+                                               reg = <0>;
+                                               sn65dsi86_in: endpoint {
+                                                       remote-endpoint = <&dsi1_out>;
+                                               };
+                                       };
+
+                                       port@1 {
+                                               reg = <1>;
+                                               sn65dsi86_out: endpoint {
+                                                       remote-endpoint = <&mini_dp_con_in>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+
+               i2c0_mux1: i2c@1 {
+                       reg = <1>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       /* Page 30 / Audio_Codec */
+                       codec@1a {
+                               compatible = "dlg,da7212";
+
+                               #sound-dai-cells = <0>;
+                               reg = <0x1a>;
+
+                               clocks = <&rcar_sound>;
+                               clock-names = "mclk";
+
+                               VDDA-supply   = <&reg_1p8v>;
+                               VDDMIC-supply = <&reg_3p3v>;
+                               VDDIO-supply  = <&reg_3p3v>;
+
+                               port {
+                                       da7212_endpoint: endpoint {
+                                               bitclock-master;
+                                               frame-master;
+                                               remote-endpoint = <&msiof1_snd_endpoint>;
+                                       };
+                               };
+                       };
+               };
+
+               i2c0_mux2: i2c@2 {
+                       reg = <2>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               i2c0_mux3: i2c@3 {
+                       reg = <3>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+       };
+};
+
+/* Page 29 / CSI_IF_CN / CAM_CN0 */
+&i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-0 = <&i2c1_pins>;
+       pinctrl-names = "default";
+};
+
+/* Page 29 / CSI_IF_CN / CAM_CN1 */
+&i2c2 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-0 = <&i2c2_pins>;
+       pinctrl-names = "default";
+};
+
+/* Page 31 / IO_CN */
+&i2c3 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-0 = <&i2c3_pins>;
+       pinctrl-names = "default";
+};
+
+/* Page 31 / IO_CN */
+&i2c4 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-0 = <&i2c4_pins>;
+       pinctrl-names = "default";
+};
+
+/* Page 18 / POWER_CORE and Page 19 / POWER_PMIC */
+&i2c5 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-0 = <&i2c5_pins>;
+       pinctrl-names = "default";
+};
+
+/* Page 17 uSD-Slot */
+&mmc0 {
+       pinctrl-0 = <&sd_pins>;
+       pinctrl-1 = <&sd_uhs_pins>;
+       pinctrl-names = "default", "state_uhs";
+       bus-width = <4>;
+       cd-gpios = <&gpio3 11 GPIO_ACTIVE_LOW>; /* SD_CD */
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&vcc_sdhi>;
+       status = "okay";
+};
+
+&msiof1 {
+       pinctrl-0 = <&msiof1_pins>;
+       pinctrl-names = "default";
+
+       status = "okay";
+
+       /* ignore DT warning */
+       /delete-property/#address-cells;
+       /delete-property/#size-cells;
+
+       msiof1_snd: port {
+               msiof1_snd_endpoint: endpoint {
+                       remote-endpoint = <&da7212_endpoint>;
+               };
+       };
+};
+
+/* Page 26 / 2230 Key M M.2 */
+&pcie0_clkref {
+       clock-frequency = <100000000>;
+};
+
+&pciec0 {
+       reset-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+/* Page 25 / PCIe to USB */
+&pcie1_clkref {
+       clock-frequency = <100000000>;
+};
+
+&pciec1 {
+       /* uPD720201 is PCIe Gen2 x1 device */
+       num-lanes = <1>;
+       reset-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
+       status = "okay";
+};
+
+&pfc {
+       pinctrl-0 = <&scif_clk_pins>;
+       pinctrl-names = "default";
+
+       /* Page 22 / Ether_AVB0 */
+       avb0_pins: avb0 {
+               mux {
+                       groups = "avb0_link", "avb0_mdio", "avb0_rgmii",
+                                "avb0_txcrefclk";
+                       function = "avb0";
+               };
+
+               pins-mdio {
+                       groups = "avb0_mdio";
+                       drive-strength = <21>;
+               };
+
+               pins-mii {
+                       groups = "avb0_rgmii";
+                       drive-strength = <21>;
+               };
+
+       };
+
+       /* Page 28 / CANFD_IF */
+       can_clk_pins: can-clk {
+               groups = "can_clk";
+               function = "can_clk";
+       };
+
+       /* Page 28 / CANFD_IF */
+       canfd3_pins: canfd3 {
+               groups = "canfd3_data";
+               function = "canfd3";
+       };
+
+       /* Page 28 / CANFD_IF */
+       canfd4_pins: canfd4 {
+               groups = "canfd4_data";
+               function = "canfd4";
+       };
+
+       /* Page 23 / DEBUG */
+       hscif0_pins: hscif0 {
+               groups = "hscif0_data", "hscif0_ctrl";
+               function = "hscif0";
+       };
+
+       /* Page 23 / DEBUG */
+       hscif1_pins: hscif1 {
+               groups = "hscif1_data_a", "hscif1_ctrl_a";
+               function = "hscif1";
+       };
+
+       /* Page 24 / UART */
+       hscif3_pins: hscif3 {
+               groups = "hscif3_data_a";
+               function = "hscif3";
+       };
+
+       /* Page 24 / I2C SWITCH */
+       i2c0_pins: i2c0 {
+               groups = "i2c0";
+               function = "i2c0";
+       };
+
+       /* Page 29 / CSI_IF_CN / CAM_CN0 */
+       i2c1_pins: i2c1 {
+               groups = "i2c1";
+               function = "i2c1";
+       };
+
+       /* Page 29 / CSI_IF_CN / CAM_CN1 */
+       i2c2_pins: i2c2 {
+               groups = "i2c2";
+               function = "i2c2";
+       };
+
+       /* Page 31 / IO_CN */
+       i2c3_pins: i2c3 {
+               groups = "i2c3";
+               function = "i2c3";
+       };
+
+       /* Page 31 / IO_CN */
+       i2c4_pins: i2c4 {
+               groups = "i2c4";
+               function = "i2c4";
+       };
+
+       /* Page 18 / POWER_CORE */
+       i2c5_pins: i2c5 {
+               groups = "i2c5";
+               function = "i2c5";
+       };
+
+       /* Page 27 / DSI to Display */
+       irq0_pins: irq0 {
+               groups = "intc_ex_irq0_a";
+               function = "intc_ex";
+       };
+
+       /* Page 31 / FAN */
+       irq4_pins: irq4 {
+               groups = "intc_ex_irq4_b";
+               function = "intc_ex";
+       };
+
+       /* Page 31 / FAN */
+       pwm0_pins: pwm0 {
+               groups = "pwm0";
+               function = "pwm0";
+       };
+
+       /* Page 31 / CN7 pin 12 */
+       pwm1_pins: pwm1 {
+               groups = "pwm1_b";
+               function = "pwm1";
+       };
+
+       /* Page 31 / CN7 pin 32 */
+       pwm6_pins: pwm6 {
+               groups = "pwm6";
+               function = "pwm6";
+       };
+
+       /* Page 31 / CN7 pin 33 */
+       pwm7_pins: pwm7 {
+               groups = "pwm7";
+               function = "pwm7";
+       };
+
+       /* Page 16 / QSPI_FLASH */
+       qspi0_pins: qspi0 {
+               groups = "qspi0_ctrl", "qspi0_data4";
+               function = "qspi0";
+               bootph-all;
+       };
+
+       /* Page 6 / SCIF_CLK_SOC_V */
+       scif_clk_pins: scif-clk {
+               groups = "scif_clk";
+               function = "scif_clk";
+       };
+
+       /* Page 17 uSD-Slot */
+       sd_pins: sd {
+               groups = "mmc_data4", "mmc_ctrl";
+               function = "mmc";
+               power-source = <3300>;
+       };
+
+       /* Page 17 uSD-Slot */
+       sd_uhs_pins: sd-uhs {
+               groups = "mmc_data4", "mmc_ctrl";
+               function = "mmc";
+               power-source = <1800>;
+       };
+
+       /* Page 30 / Audio_Codec */
+       msiof1_pins: sound {
+               groups = "msiof1_clk", "msiof1_sync", "msiof1_txd", "msiof1_rxd";
+               function = "msiof1";
+       };
+
+       /* Page 30 / Audio_Codec */
+       sound_clk_pins: sound-clk {
+               groups = "audio_clkin", "audio_clkout";
+               function = "audio_clk";
+       };
+};
+
+/* Page 30 / Audio_Codec */
+&rcar_sound {
+       pinctrl-0 = <&sound_clk_pins>;
+       pinctrl-names = "default";
+
+       /* It is used for ADG output as DA7212_MCLK */
+
+       /* audio_clkout */
+       clock-frequency = <12288000>; /* 48 kHz groups */
+
+       status = "okay";
+};
+
+/* Page 31 / FAN */
+&pwm0 {
+       pinctrl-0 = <&pwm0_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+/* Page 31 / CN7 pin 12 */
+&pwm1 {
+       pinctrl-0 = <&pwm1_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+/* Page 31 / CN7 pin 32 */
+&pwm6 {
+       pinctrl-0 = <&pwm6_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+/* Page 31 / CN7 pin 33 */
+&pwm7 {
+       pinctrl-0 = <&pwm7_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+/* Page 16 / QSPI_FLASH */
+&rpc {
+       pinctrl-0 = <&qspi0_pins>;
+       pinctrl-names = "default";
+       bootph-all;
+
+       status = "okay";
+
+       flash@0 {
+               compatible = "spansion,s25fs512s", "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <4>;
+               bootph-all;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       boot@0 {
+                               reg = <0x0 0x1000000>;
+                               read-only;
+                       };
+
+                       user@1000000 {
+                               reg = <0x1000000 0x2f80000>;
+                       };
+
+                       env1@3f80000 {
+                               reg = <0x3f80000 0x40000>;
+                       };
+
+                       env2@3fc0000 {
+                               reg = <0x3fc0000 0x40000>;
+                       };
+               };
+       };
+};
+
+&rwdt {
+       timeout-sec = <60>;
+       status = "okay";
+};
+
+/* Page 6 / SCIF_CLK_SOC_V */
+&scif_clk {    /* X12 */
+       clock-frequency = <24000000>;
+};
index 8524a1e7205eaed06591bc40706263ff35d8d66a..ed1eefa3515d8b5963815545f10367a89882b6de 100644 (file)
                isp0: isp@fed00000 {
                        compatible = "renesas,r8a779h0-isp",
                                     "renesas,rcar-gen4-isp";
-                       reg = <0 0xfed00000 0 0x10000>;
-                       interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_LOW>;
-                       clocks = <&cpg CPG_MOD 612>;
+                       reg = <0 0xfed00000 0 0x10000>, <0 0xfec00000 0 0x100000>;
+                       reg-names = "cs", "core";
+                       interrupts = <GIC_SPI 473 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 475 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cs", "core";
+                       clocks = <&cpg CPG_MOD 612>, <&cpg CPG_MOD 16>;
+                       clock-names = "cs", "core";
                        power-domains = <&sysc R8A779H0_PD_A3ISP0>;
-                       resets = <&cpg 612>;
+                       resets = <&cpg 612>, <&cpg 16>;
+                       reset-names = "cs", "core";
                        status = "disabled";
 
+                       renesas,vspx = <&vspx0>;
+
                        ports {
                                #address-cells = <1>;
                                #size-cells = <0>;
                        compatible = "renesas,r8a779h0-isp",
                                     "renesas,rcar-gen4-isp";
                        reg = <0 0xfed20000 0 0x10000>;
-                       interrupts = <GIC_SPI 474 IRQ_TYPE_LEVEL_LOW>;
+                       reg-names = "cs";
+                       interrupts = <GIC_SPI 474 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "cs";
                        clocks = <&cpg CPG_MOD 613>;
+                       clock-names = "cs";
                        power-domains = <&sysc R8A779H0_PD_A3ISP0>;
                        resets = <&cpg 613>;
+                       reset-names = "cs";
                        status = "disabled";
 
                        ports {
index 6b1c77cd8261ca3e04570737e718f76bc179d0ed..ecaa9c4f305c28aceb14c4a4da7e8e692d782eb8 100644 (file)
                        status = "disabled";
                };
 
+               gpt: pwm@10048000 {
+                       compatible = "renesas,r9a07g044-gpt",
+                                    "renesas,rzg2l-gpt";
+                       reg = <0 0x10048000 0 0x800>;
+                       #pwm-cells = <3>;
+                       interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 219 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 220 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 221 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 222 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 223 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 224 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 225 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 226 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 227 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 231 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 232 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 233 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 234 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 235 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 236 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 237 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 238 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 239 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 240 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 244 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 245 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 246 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 247 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 248 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 249 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 250 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 251 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 252 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 253 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 257 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 258 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 259 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 260 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 261 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 262 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 263 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 265 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 266 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 270 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 272 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 273 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 274 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 275 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 276 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 277 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 278 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 279 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 283 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 284 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 285 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 286 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 287 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 288 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 289 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 290 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 291 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 292 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 300 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 301 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 302 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 303 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 304 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 305 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 310 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 312 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 313 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 315 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 316 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 317 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "ccmpa0", "ccmpb0", "cmpc0", "cmpd0",
+                                         "cmpe0", "cmpf0", "adtrga0", "adtrgb0",
+                                         "ovf0", "unf0",
+                                         "ccmpa1", "ccmpb1", "cmpc1", "cmpd1",
+                                         "cmpe1", "cmpf1", "adtrga1", "adtrgb1",
+                                         "ovf1", "unf1",
+                                         "ccmpa2", "ccmpb2", "cmpc2", "cmpd2",
+                                         "cmpe2", "cmpf2", "adtrga2", "adtrgb2",
+                                         "ovf2", "unf2",
+                                         "ccmpa3", "ccmpb3", "cmpc3", "cmpd3",
+                                         "cmpe3", "cmpf3", "adtrga3", "adtrgb3",
+                                         "ovf3", "unf3",
+                                         "ccmpa4", "ccmpb4", "cmpc4", "cmpd4",
+                                         "cmpe4", "cmpf4", "adtrga4", "adtrgb4",
+                                         "ovf4", "unf4",
+                                         "ccmpa5", "ccmpb5", "cmpc5", "cmpd5",
+                                         "cmpe5", "cmpf5", "adtrga5", "adtrgb5",
+                                         "ovf5", "unf5",
+                                         "ccmpa6", "ccmpb6", "cmpc6", "cmpd6",
+                                         "cmpe6", "cmpf6", "adtrga6", "adtrgb6",
+                                         "ovf6", "unf6",
+                                         "ccmpa7", "ccmpb7", "cmpc7", "cmpd7",
+                                         "cmpe7", "cmpf7", "adtrga7", "adtrgb7",
+                                         "ovf7", "unf7";
+                       clocks = <&cpg CPG_MOD R9A07G044_GPT_PCLK>;
+                       resets = <&cpg R9A07G044_GPT_RST_C>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
                ssi0: ssi@10049c00 {
                        compatible = "renesas,r9a07g044-ssi",
                                     "renesas,rz-ssi";
index 568d49cfe44a6b88f0a1923a09ec3563a3eca84c..b36749f94ccbddd9a41be52bb250cb017e4498ae 100644 (file)
 #error "Cannot set 1 to MTU3_COUNTER_Z_PHASE_SIGNAL as PMOD_MTU3=0"
 #endif
 
+/*
+ * To enable the GPT pins GTIOC4A(PMOD0_PIN7) and GTIOC4B(PMOD0_PIN10) on the
+ * PMOD0 connector (J1), enable PMOD0_GPT by setting "#define PMOD0_GPT        1"
+ * below.
+ */
+#define PMOD0_GPT      0
+
 #include "r9a07g044l2.dtsi"
 #include "rzg2l-smarc-som.dtsi"
 #include "rzg2l-smarc-pinfunction.dtsi"
index 01f59914dd09975f5922817f2882896797c614ca..669eca74da0a6511a2a6d6a1234ed18ad879629a 100644 (file)
                        status = "disabled";
                };
 
+               gpt: pwm@10048000 {
+                       compatible = "renesas,r9a07g054-gpt",
+                                    "renesas,rzg2l-gpt";
+                       reg = <0 0x10048000 0 0x800>;
+                       #pwm-cells = <3>;
+                       interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 219 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 220 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 221 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 222 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 223 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 224 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 225 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 226 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 227 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 231 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 232 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 233 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 234 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 235 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 236 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 237 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 238 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 239 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 240 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 244 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 245 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 246 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 247 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 248 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 249 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 250 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 251 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 252 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 253 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 257 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 258 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 259 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 260 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 261 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 262 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 263 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 265 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 266 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 270 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 271 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 272 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 273 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 274 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 275 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 276 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 277 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 278 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 279 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 283 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 284 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 285 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 286 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 287 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 288 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 289 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 290 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 291 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 292 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 300 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 301 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 302 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 303 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 304 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 305 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 309 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 310 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 311 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 312 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 313 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 314 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 315 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 316 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 317 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "ccmpa0", "ccmpb0", "cmpc0", "cmpd0",
+                                         "cmpe0", "cmpf0", "adtrga0", "adtrgb0",
+                                         "ovf0", "unf0",
+                                         "ccmpa1", "ccmpb1", "cmpc1", "cmpd1",
+                                         "cmpe1", "cmpf1", "adtrga1", "adtrgb1",
+                                         "ovf1", "unf1",
+                                         "ccmpa2", "ccmpb2", "cmpc2", "cmpd2",
+                                         "cmpe2", "cmpf2", "adtrga2", "adtrgb2",
+                                         "ovf2", "unf2",
+                                         "ccmpa3", "ccmpb3", "cmpc3", "cmpd3",
+                                         "cmpe3", "cmpf3", "adtrga3", "adtrgb3",
+                                         "ovf3", "unf3",
+                                         "ccmpa4", "ccmpb4", "cmpc4", "cmpd4",
+                                         "cmpe4", "cmpf4", "adtrga4", "adtrgb4",
+                                         "ovf4", "unf4",
+                                         "ccmpa5", "ccmpb5", "cmpc5", "cmpd5",
+                                         "cmpe5", "cmpf5", "adtrga5", "adtrgb5",
+                                         "ovf5", "unf5",
+                                         "ccmpa6", "ccmpb6", "cmpc6", "cmpd6",
+                                         "cmpe6", "cmpf6", "adtrga6", "adtrgb6",
+                                         "ovf6", "unf6",
+                                         "ccmpa7", "ccmpb7", "cmpc7", "cmpd7",
+                                         "cmpe7", "cmpf7", "adtrga7", "adtrgb7",
+                                         "ovf7", "unf7";
+                       clocks = <&cpg CPG_MOD R9A07G054_GPT_PCLK>;
+                       resets = <&cpg R9A07G054_GPT_RST_C>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+               };
+
                ssi0: ssi@10049c00 {
                        compatible = "renesas,r9a07g054-ssi",
                                     "renesas,rz-ssi";
index b3e6016880dda537e535cea7e321bff1c2dfca17..43c456ffa63cf525c1b6c2cbcfeb9b613c6a5e03 100644 (file)
 #error "Cannot set 1 to MTU3_COUNTER_Z_PHASE_SIGNAL as PMOD_MTU3=0"
 #endif
 
+/*
+ * To enable the GPT pins GTIOC4A(PMOD0_PIN7) and GTIOC4B(PMOD0_PIN10) on the
+ * PMOD0 connector (J1), enable PMOD0_GPT by setting "#define PMOD0_GPT        1"
+ * below.
+ */
+#define PMOD0_GPT      0
+
 #include "r9a07g054l2.dtsi"
 #include "rzg2l-smarc-som.dtsi"
 #include "rzg2l-smarc-pinfunction.dtsi"
index c93aa16d0a6ec3d50c3bd6070c4a5da50054424a..876f70fed433f7abb9076f5a1b20ca6330345b41 100644 (file)
                };
        };
 
+       gpu_opp_table: opp-table-1 {
+               compatible = "operating-points-v2";
+
+               opp-630000000 {
+                       opp-hz = /bits/ 64 <630000000>;
+                       opp-microvolt = <800000>;
+               };
+
+               opp-315000000 {
+                       opp-hz = /bits/ 64 <315000000>;
+                       opp-microvolt = <800000>;
+               };
+
+               opp-157500000 {
+                       opp-hz = /bits/ 64 <157500000>;
+                       opp-microvolt = <800000>;
+               };
+
+               opp-78750000 {
+                       opp-hz = /bits/ 64 <78750000>;
+                       opp-microvolt = <800000>;
+               };
+
+               opp-19687500 {
+                       opp-hz = /bits/ 64 <19687500>;
+                       opp-microvolt = <800000>;
+               };
+       };
+
        psci {
                compatible = "arm,psci-1.0", "arm,psci-0.2";
                method = "smc";
                #size-cells = <2>;
                ranges;
 
+               icu: interrupt-controller@10400000 {
+                       compatible = "renesas,r9a09g047-icu";
+                       reg = <0 0x10400000 0 0x10000>;
+                       #interrupt-cells = <2>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+                                    <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>,
+                                    <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 419 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 420 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 422 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 423 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 427 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 428 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 429 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 430 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 431 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 432 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 433 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 434 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 435 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 436 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 437 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 438 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 439 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 440 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 441 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 442 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 443 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 444 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 445 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 446 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 447 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 448 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 449 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 450 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 262 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 263 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 264 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 265 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 451 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 452 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 453 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 454 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "nmi",
+                                         "port_irq0", "port_irq1", "port_irq2",
+                                         "port_irq3", "port_irq4", "port_irq5",
+                                         "port_irq6", "port_irq7", "port_irq8",
+                                         "port_irq9", "port_irq10", "port_irq11",
+                                         "port_irq12", "port_irq13", "port_irq14",
+                                         "port_irq15",
+                                         "tint0", "tint1", "tint2", "tint3",
+                                         "tint4", "tint5", "tint6", "tint7",
+                                         "tint8", "tint9", "tint10", "tint11",
+                                         "tint12", "tint13", "tint14", "tint15",
+                                         "tint16", "tint17", "tint18", "tint19",
+                                         "tint20", "tint21", "tint22", "tint23",
+                                         "tint24", "tint25", "tint26", "tint27",
+                                         "tint28", "tint29", "tint30", "tint31",
+                                         "int-ca55-0", "int-ca55-1",
+                                         "int-ca55-2", "int-ca55-3",
+                                         "icu-error-ca55",
+                                         "gpt-u0-gtciada", "gpt-u0-gtciadb",
+                                         "gpt-u1-gtciada", "gpt-u1-gtciadb";
+                       clocks = <&cpg CPG_MOD 0x5>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0x36>;
+               };
+
                pinctrl: pinctrl@10410000 {
                        compatible = "renesas,r9a09g047-pinctrl";
                        reg = <0 0x10410000 0 0x10000>;
                        gpio-ranges = <&pinctrl 0 0 232>;
                        #interrupt-cells = <2>;
                        interrupt-controller;
+                       interrupt-parent = <&icu>;
                        power-domains = <&cpg>;
                        resets = <&cpg 0xa5>, <&cpg 0xa6>;
                };
                        status = "disabled";
                };
 
+               canfd: can@12440000 {
+                       compatible = "renesas,r9a09g047-canfd";
+                       reg = <0 0x12440000 0 0x40000>;
+                       interrupts = <GIC_SPI 709 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 710 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 697 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 703 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 711 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 698 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 704 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 712 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 699 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 705 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 713 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 700 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 706 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 714 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 701 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 707 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 715 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 702 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 708 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 716 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "g_err", "g_recc",
+                                         "ch0_err", "ch0_rec", "ch0_trx",
+                                         "ch1_err", "ch1_rec", "ch1_trx",
+                                         "ch2_err", "ch2_rec", "ch2_trx",
+                                         "ch3_err", "ch3_rec", "ch3_trx",
+                                         "ch4_err", "ch4_rec", "ch4_trx",
+                                         "ch5_err", "ch5_rec", "ch5_trx";
+                       clocks = <&cpg CPG_MOD 0x9c>, <&cpg CPG_MOD 0x9d>,
+                                <&cpg CPG_MOD 0x9e>;
+                       clock-names = "fck", "ram_clk", "can_clk";
+                       assigned-clocks = <&cpg CPG_MOD 0x9e>;
+                       assigned-clock-rates = <80000000>;
+                       resets = <&cpg 0xa1>, <&cpg 0xa2>;
+                       reset-names = "rstp_n", "rstc_n";
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       channel0 {
+                               status = "disabled";
+                       };
+                       channel1 {
+                               status = "disabled";
+                       };
+                       channel2 {
+                               status = "disabled";
+                       };
+                       channel3 {
+                               status = "disabled";
+                       };
+                       channel4 {
+                               status = "disabled";
+                       };
+                       channel5 {
+                               status = "disabled";
+                       };
+               };
+
                wdt1: watchdog@14400000 {
                        compatible = "renesas,r9a09g047-wdt", "renesas,r9a09g057-wdt";
                        reg = <0 0x14400000 0 0x400>;
                        status = "disabled";
                };
 
+               gpu: gpu@14850000 {
+                       compatible = "renesas,r9a09g047-mali",
+                                    "arm,mali-bifrost";
+                       reg = <0x0 0x14850000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 884 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 885 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 883 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 886 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "job", "mmu", "gpu", "event";
+                       clocks = <&cpg CPG_MOD 0xf0>,
+                                <&cpg CPG_MOD 0xf1>,
+                                <&cpg CPG_MOD 0xf2>;
+                       clock-names = "gpu", "bus", "bus_ace";
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0xdd>, <&cpg 0xde>, <&cpg 0xdf>;
+                       reset-names = "rst", "axi_rst", "ace_rst";
+                       operating-points-v2 = <&gpu_opp_table>;
+                       status = "disabled";
+               };
+
                gic: interrupt-controller@14900000 {
                        compatible = "arm,gic-v3";
                        reg = <0x0 0x14900000 0 0x20000>,
                        interrupt-controller;
                        interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
                };
+
+               sdhi0: mmc@15c00000  {
+                       compatible = "renesas,sdhi-r9a09g047", "renesas,sdhi-r9a09g057";
+                       reg = <0x0 0x15c00000 0 0x10000>;
+                       interrupts = <GIC_SPI 735 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 736 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xa3>, <&cpg CPG_MOD 0xa5>,
+                                <&cpg CPG_MOD 0xa4>, <&cpg CPG_MOD 0xa6>;
+                       clock-names = "core", "clkh", "cd", "aclk";
+                       resets = <&cpg 0xa7>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       sdhi0_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI0-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
+               };
+
+               sdhi1: mmc@15c10000 {
+                       compatible = "renesas,sdhi-r9a09g047", "renesas,sdhi-r9a09g057";
+                       reg = <0x0 0x15c10000 0 0x10000>;
+                       interrupts = <GIC_SPI 737 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 738 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xa7>, <&cpg CPG_MOD 0xa9>,
+                                <&cpg CPG_MOD 0xa8>, <&cpg CPG_MOD 0xaa>;
+                       clock-names = "core", "clkh", "cd", "aclk";
+                       resets = <&cpg 0xa8>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       sdhi1_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI1-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
+               };
+
+               sdhi2: mmc@15c20000 {
+                       compatible = "renesas,sdhi-r9a09g047", "renesas,sdhi-r9a09g057";
+                       reg = <0x0 0x15c20000 0 0x10000>;
+                       interrupts = <GIC_SPI 739 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 740 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xab>, <&cpg CPG_MOD 0xad>,
+                                <&cpg CPG_MOD 0xac>, <&cpg CPG_MOD 0xae>;
+                       clock-names = "core", "clkh", "cd", "aclk";
+                       resets = <&cpg 0xa9>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       sdhi2_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI2-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
+               };
        };
 
        timer {
index c063d47e2952f2eb3d6b0f071bd086768e99dfda..1f5e61a73c35b48014f5077873d6dba90d9b35a1 100644 (file)
@@ -7,6 +7,15 @@
 
 /dts-v1/;
 
+/* Switch selection settings */
+#define SW_GPIO8_CAN0_STB      0
+#define SW_GPIO9_CAN1_STB      0
+#define SW_LCD_EN              0
+#define SW_PDM_EN              0
+#define SW_SD0_DEV_SEL         0
+#define SW_SDIO_M2E            0
+
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pinctrl/renesas,r9a09g047-pinctrl.h>
 #include "r9a09g047e57.dtsi"
 #include "rzg3e-smarc-som.dtsi"
        model = "Renesas SMARC EVK version 2 based on r9a09g047e57";
        compatible = "renesas,smarc2-evk", "renesas,rzg3e-smarcm",
                     "renesas,r9a09g047e57", "renesas,r9a09g047";
+
+       vqmmc_sd1_pvdd: regulator-vqmmc-sd1-pvdd {
+               compatible = "regulator-gpio";
+               regulator-name = "SD1_PVDD";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios = <&pinctrl RZG3E_GPIO(1, 5) GPIO_ACTIVE_HIGH>;
+               gpios-states = <0>;
+               states = <3300000 0>, <1800000 1>;
+       };
+};
+
+&canfd {
+       pinctrl-0 = <&canfd_pins>;
+       pinctrl-names = "default";
+
+#if (!SW_PDM_EN)
+       channel1 {
+               status = "okay";
+#if (!SW_LCD_EN) && (SW_GPIO9_CAN1_STB)
+               phys = <&can_transceiver1>;
+#endif
+       };
+#endif
+
+#if (!SW_LCD_EN)
+       channel4 {
+               status = "okay";
+#if (SW_GPIO8_CAN0_STB)
+               phys = <&can_transceiver0>;
+#endif
+       };
+#endif
+};
+
+#if (!SW_LCD_EN) && (SW_GPIO8_CAN0_STB)
+&can_transceiver0 {
+       standby-gpios = <&pinctrl RZG3E_GPIO(5, 4) GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+#endif
+
+#if (!SW_LCD_EN) && (SW_GPIO9_CAN1_STB)
+&can_transceiver1 {
+       standby-gpios = <&pinctrl RZG3E_GPIO(5, 5) GPIO_ACTIVE_HIGH>;
+       status = "okay";
 };
+#endif
 
 &pinctrl {
+       canfd_pins: canfd {
+               can1_pins: can1 {
+                       pinmux = <RZG3E_PORT_PINMUX(L, 2, 3)>, /* RX */
+                                <RZG3E_PORT_PINMUX(L, 3, 3)>; /* TX */
+               };
+
+               can4_pins: can4 {
+                       pinmux = <RZG3E_PORT_PINMUX(5, 2, 3)>, /* RX */
+                                <RZG3E_PORT_PINMUX(5, 3, 3)>; /* TX */
+               };
+       };
+
        scif_pins: scif {
                pins = "SCIF_TXD", "SCIF_RXD";
                renesas,output-impedance = <1>;
        };
+
+       sd1-pwr-en-hog {
+               gpio-hog;
+               gpios = <RZG3E_GPIO(1, 6) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "sd1_pwr_en";
+       };
+
+       sdhi1_pins: sd1 {
+               sd1-cd {
+                       pinmux = <RZG3E_PORT_PINMUX(1, 4, 8)>; /* SD1CD */
+               };
+
+               sd1-ctrl {
+                       pinmux = <RZG3E_PORT_PINMUX(G, 0, 1)>, /* SD1CLK */
+                                <RZG3E_PORT_PINMUX(G, 1, 1)>; /* SD1CMD */
+               };
+
+               sd1-data {
+                       pinmux = <RZG3E_PORT_PINMUX(G, 2, 1)>, /* SD1DAT0 */
+                                <RZG3E_PORT_PINMUX(G, 3, 1)>, /* SD1DAT1 */
+                                <RZG3E_PORT_PINMUX(G, 4, 1)>, /* SD1DAT2 */
+                                <RZG3E_PORT_PINMUX(G, 5, 1)>; /* SD1DAT3 */
+               };
+       };
 };
 
 &scif0 {
        pinctrl-0 = <&scif_pins>;
        pinctrl-names = "default";
 };
+
+&sdhi1 {
+       pinctrl-0 = <&sdhi1_pins>;
+       pinctrl-1 = <&sdhi1_pins>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&vqmmc_sd1_pvdd>;
+};
diff --git a/src/arm64/renesas/r9a09g056.dtsi b/src/arm64/renesas/r9a09g056.dtsi
new file mode 100644 (file)
index 0000000..90964bd
--- /dev/null
@@ -0,0 +1,282 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the RZ/V2N SoC
+ *
+ * Copyright (C) 2025 Renesas Electronics Corp.
+ */
+
+#include <dt-bindings/clock/renesas,r9a09g056-cpg.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/pinctrl/rzg2l-pinctrl.h>
+
+/* RZV2N_Px = Offset address of PFC_P_mn  - 0x20 */
+#define RZV2N_P0       0
+#define RZV2N_P1       1
+#define RZV2N_P2       2
+#define RZV2N_P3       3
+#define RZV2N_P4       4
+#define RZV2N_P5       5
+#define RZV2N_P6       6
+#define RZV2N_P7       7
+#define RZV2N_P8       8
+#define RZV2N_P9       9
+#define RZV2N_PA       10
+#define RZV2N_PB       11
+
+#define RZV2N_PORT_PINMUX(b, p, f)     RZG2L_PORT_PINMUX(RZV2N_P##b, p, f)
+#define RZV2N_GPIO(port, pin)          RZG2L_GPIO(RZV2N_P##port, pin)
+
+/ {
+       compatible = "renesas,r9a09g056";
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       audio_extal_clk: audio-clk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by the board */
+               clock-frequency = <0>;
+       };
+
+       /*
+        * The default cluster table is based on the assumption that the PLLCA55 clock
+        * frequency is set to 1.7GHz. The PLLCA55 clock frequency can be set to
+        * 1.7/1.6/1.5/1.1 GHz based on the BOOTPLLCA_0/1 pins (and additionally can be
+        * clocked to 1.8GHz as well). The table below should be overridden in the board
+        * DTS based on the PLLCA55 clock frequency.
+        */
+       cluster0_opp: opp-table-0 {
+               compatible = "operating-points-v2";
+
+               opp-1700000000 {
+                       opp-hz = /bits/ 64 <1700000000>;
+                       opp-microvolt = <900000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-850000000 {
+                       opp-hz = /bits/ 64 <850000000>;
+                       opp-microvolt = <800000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-425000000 {
+                       opp-hz = /bits/ 64 <425000000>;
+                       opp-microvolt = <800000>;
+                       clock-latency-ns = <300000>;
+               };
+               opp-212500000 {
+                       opp-hz = /bits/ 64 <212500000>;
+                       opp-microvolt = <800000>;
+                       clock-latency-ns = <300000>;
+                       opp-suspend;
+               };
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       compatible = "arm,cortex-a55";
+                       reg = <0>;
+                       device_type = "cpu";
+                       next-level-cache = <&L3_CA55>;
+                       enable-method = "psci";
+                       clocks = <&cpg CPG_CORE R9A09G056_CA55_0_CORE_CLK0>;
+                       operating-points-v2 = <&cluster0_opp>;
+               };
+
+               cpu1: cpu@100 {
+                       compatible = "arm,cortex-a55";
+                       reg = <0x100>;
+                       device_type = "cpu";
+                       next-level-cache = <&L3_CA55>;
+                       enable-method = "psci";
+                       clocks = <&cpg CPG_CORE R9A09G056_CA55_0_CORE_CLK1>;
+                       operating-points-v2 = <&cluster0_opp>;
+               };
+
+               cpu2: cpu@200 {
+                       compatible = "arm,cortex-a55";
+                       reg = <0x200>;
+                       device_type = "cpu";
+                       next-level-cache = <&L3_CA55>;
+                       enable-method = "psci";
+                       clocks = <&cpg CPG_CORE R9A09G056_CA55_0_CORE_CLK2>;
+                       operating-points-v2 = <&cluster0_opp>;
+               };
+
+               cpu3: cpu@300 {
+                       compatible = "arm,cortex-a55";
+                       reg = <0x300>;
+                       device_type = "cpu";
+                       next-level-cache = <&L3_CA55>;
+                       enable-method = "psci";
+                       clocks = <&cpg CPG_CORE R9A09G056_CA55_0_CORE_CLK3>;
+                       operating-points-v2 = <&cluster0_opp>;
+               };
+
+               L3_CA55: cache-controller-0 {
+                       compatible = "cache";
+                       cache-unified;
+                       cache-size = <0x100000>;
+                       cache-level = <3>;
+               };
+       };
+
+       psci {
+               compatible = "arm,psci-1.0", "arm,psci-0.2";
+               method = "smc";
+       };
+
+       qextal_clk: qextal-clk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by the board */
+               clock-frequency = <0>;
+       };
+
+       rtxin_clk: rtxin-clk {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               /* This value must be overridden by the board */
+               clock-frequency = <0>;
+       };
+
+       soc: soc {
+               compatible = "simple-bus";
+               interrupt-parent = <&gic>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               pinctrl: pinctrl@10410000 {
+                       compatible = "renesas,r9a09g056-pinctrl";
+                       reg = <0 0x10410000 0 0x10000>;
+                       clocks = <&cpg CPG_CORE R9A09G056_IOTOP_0_SHCLK>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl 0 0 96>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0xa5>, <&cpg 0xa6>;
+               };
+
+               cpg: clock-controller@10420000 {
+                       compatible = "renesas,r9a09g056-cpg";
+                       reg = <0 0x10420000 0 0x10000>;
+                       clocks = <&audio_extal_clk>, <&rtxin_clk>, <&qextal_clk>;
+                       clock-names = "audio_extal", "rtxin", "qextal";
+                       #clock-cells = <2>;
+                       #reset-cells = <1>;
+                       #power-domain-cells = <0>;
+               };
+
+               sys: system-controller@10430000 {
+                       compatible = "renesas,r9a09g056-sys";
+                       reg = <0 0x10430000 0 0x10000>;
+                       clocks = <&cpg CPG_CORE R9A09G056_SYS_0_PCLK>;
+                       resets = <&cpg 0x30>;
+               };
+
+               scif: serial@11c01400 {
+                       compatible = "renesas,scif-r9a09g056",
+                                    "renesas,scif-r9a09g057";
+                       reg = <0 0x11c01400 0 0x400>;
+                       interrupts = <GIC_SPI 529 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 532 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 533 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 530 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 534 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 531 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 535 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 536 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 537 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "eri", "rxi", "txi", "bri", "dri",
+                                         "tei", "tei-dri", "rxi-edge", "txi-edge";
+                       clocks = <&cpg CPG_MOD 0x8f>;
+                       clock-names = "fck";
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0x95>;
+                       status = "disabled";
+               };
+
+               gic: interrupt-controller@14900000 {
+                       compatible = "arm,gic-v3";
+                       reg = <0x0 0x14900000 0 0x20000>,
+                             <0x0 0x14940000 0 0x80000>;
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_LOW>;
+               };
+
+               sdhi0: mmc@15c00000  {
+                       compatible = "renesas,sdhi-r9a09g056", "renesas,sdhi-r9a09g057";
+                       reg = <0x0 0x15c00000 0 0x10000>;
+                       interrupts = <GIC_SPI 735 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 736 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xa3>, <&cpg CPG_MOD 0xa5>,
+                                <&cpg CPG_MOD 0xa4>, <&cpg CPG_MOD 0xa6>;
+                       clock-names = "core", "clkh", "cd", "aclk";
+                       resets = <&cpg 0xa7>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       sdhi0_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI0-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
+               };
+
+               sdhi1: mmc@15c10000 {
+                       compatible = "renesas,sdhi-r9a09g056", "renesas,sdhi-r9a09g057";
+                       reg = <0x0 0x15c10000 0 0x10000>;
+                       interrupts = <GIC_SPI 737 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 738 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xa7>, <&cpg CPG_MOD 0xa9>,
+                                <&cpg CPG_MOD 0xa8>, <&cpg CPG_MOD 0xaa>;
+                       clock-names = "core", "clkh", "cd", "aclk";
+                       resets = <&cpg 0xa8>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       sdhi1_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI1-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
+               };
+
+               sdhi2: mmc@15c20000 {
+                       compatible = "renesas,sdhi-r9a09g056", "renesas,sdhi-r9a09g057";
+                       reg = <0x0 0x15c20000 0 0x10000>;
+                       interrupts = <GIC_SPI 739 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 740 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cpg CPG_MOD 0xab>, <&cpg CPG_MOD 0xad>,
+                                <&cpg CPG_MOD 0xac>, <&cpg CPG_MOD 0xae>;
+                       clock-names = "core", "clkh", "cd", "aclk";
+                       resets = <&cpg 0xa9>;
+                       power-domains = <&cpg>;
+                       status = "disabled";
+
+                       sdhi2_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI2-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts-extended = <&gic GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
+                                     <&gic GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
+                                     <&gic GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
+                                     <&gic GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>,
+                                     <&gic GIC_PPI 12 IRQ_TYPE_LEVEL_LOW>;
+               interrupt-names = "sec-phys", "phys", "virt", "hyp-phys", "hyp-virt";
+       };
+};
diff --git a/src/arm64/renesas/r9a09g056n48-rzv2n-evk.dts b/src/arm64/renesas/r9a09g056n48-rzv2n-evk.dts
new file mode 100644 (file)
index 0000000..24343fc
--- /dev/null
@@ -0,0 +1,114 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/*
+ * Device Tree Source for the RZ/V2N EVK board
+ *
+ * Copyright (C) 2025 Renesas Electronics Corp.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "r9a09g056.dtsi"
+
+/ {
+       model = "Renesas RZ/V2N EVK Board based on r9a09g056n48";
+       compatible = "renesas,rzv2n-evk", "renesas,r9a09g056n48", "renesas,r9a09g056";
+
+       aliases {
+               mmc1 = &sdhi1;
+               serial0 = &scif;
+       };
+
+       chosen {
+               bootargs = "ignore_loglevel";
+               stdout-path = "serial0:115200n8";
+       };
+
+       memory@48000000 {
+               device_type = "memory";
+               /* first 128MB is reserved for secure area. */
+               reg = <0x0 0x48000000 0x1 0xf8000000>;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vqmmc_sdhi1: regulator-vqmmc-sdhi1 {
+               compatible = "regulator-gpio";
+               regulator-name = "SDHI1 VqmmC";
+               gpios = <&pinctrl RZV2N_GPIO(A, 2) GPIO_ACTIVE_HIGH>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               gpios-states = <0>;
+               states = <3300000 0>, <1800000 1>;
+       };
+};
+
+&audio_extal_clk {
+       clock-frequency = <22579200>;
+};
+
+&pinctrl {
+       scif_pins: scif {
+               pins = "SCIF_TXD", "SCIF_RXD";
+               renesas,output-impedance = <1>;
+       };
+
+       sd1-pwr-en-hog {
+               gpio-hog;
+               gpios = <RZV2N_GPIO(A, 3) GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "sd1_pwr_en";
+       };
+
+       sdhi1_pins: sd1 {
+               sd1-cd {
+                       pinmux = <RZV2N_PORT_PINMUX(9, 4, 14)>; /* SD1_CD */
+               };
+
+               sd1-clk {
+                       pins = "SD1CLK";
+                       renesas,output-impedance = <3>;
+                       slew-rate = <0>;
+               };
+
+               sd1-dat-cmd {
+                       pins = "SD1DAT0", "SD1DAT1", "SD1DAT2", "SD1DAT3", "SD1CMD";
+                       input-enable;
+                       renesas,output-impedance = <3>;
+                       slew-rate = <0>;
+               };
+       };
+};
+
+&qextal_clk {
+       clock-frequency = <24000000>;
+};
+
+&rtxin_clk {
+       clock-frequency = <32768>;
+};
+
+&scif {
+       pinctrl-0 = <&scif_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&sdhi1 {
+       pinctrl-0 = <&sdhi1_pins>;
+       pinctrl-1 = <&sdhi1_pins>;
+       pinctrl-names = "default", "state_uhs";
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&vqmmc_sdhi1>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       status = "okay";
+};
index 0cd00bb05191c3efa945d13233899d950e7544f8..0f3501951409f19d7767e465340508119520ebaa 100644 (file)
                        resets = <&cpg 0x30>;
                };
 
+               dmac0: dma-controller@11400000 {
+                       compatible = "renesas,r9a09g057-dmac";
+                       reg = <0 0x11400000 0 0x10000>;
+                       interrupts = <GIC_SPI 499 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 89  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 90  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 91  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 92  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 93  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 94  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 95  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 96  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 97  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 98  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 99  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 100 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 101 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 102 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 103 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 104 IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "error",
+                                         "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 0x0>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0x31>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       renesas,icu = <&icu 4>;
+               };
+
+               dmac1: dma-controller@14830000 {
+                       compatible = "renesas,r9a09g057-dmac";
+                       reg = <0 0x14830000 0 0x10000>;
+                       interrupts = <GIC_SPI 495 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 25  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 26  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 27  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 28  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 29  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 30  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 31  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 32  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 33  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 34  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 35  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 36  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 37  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 38  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 39  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 40  IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "error",
+                                         "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 0x1>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0x32>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       renesas,icu = <&icu 0>;
+               };
+
+               dmac2: dma-controller@14840000 {
+                       compatible = "renesas,r9a09g057-dmac";
+                       reg = <0 0x14840000 0 0x10000>;
+                       interrupts = <GIC_SPI 496 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 41  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 42  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 43  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 44  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 45  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 46  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 47  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 48  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 49  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 50  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 51  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 52  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 53  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 54  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 55  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 56  IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "error",
+                                         "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 0x2>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0x33>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       renesas,icu = <&icu 1>;
+               };
+
+               dmac3: dma-controller@12000000 {
+                       compatible = "renesas,r9a09g057-dmac";
+                       reg = <0 0x12000000 0 0x10000>;
+                       interrupts = <GIC_SPI 497 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 57  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 58  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 59  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 60  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 61  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 62  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 63  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 64  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 65  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 66  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 67  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 68  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 69  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 70  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 71  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 72  IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "error",
+                                         "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 0x3>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0x34>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       renesas,icu = <&icu 2>;
+               };
+
+               dmac4: dma-controller@12010000 {
+                       compatible = "renesas,r9a09g057-dmac";
+                       reg = <0 0x12010000 0 0x10000>;
+                       interrupts = <GIC_SPI 498 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 73  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 74  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 75  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 76  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 77  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 78  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 79  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 80  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 81  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 82  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 83  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 84  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 85  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 86  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 87  IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 88  IRQ_TYPE_EDGE_RISING>;
+                       interrupt-names = "error",
+                                         "ch0", "ch1", "ch2", "ch3",
+                                         "ch4", "ch5", "ch6", "ch7",
+                                         "ch8", "ch9", "ch10", "ch11",
+                                         "ch12", "ch13", "ch14", "ch15";
+                       clocks = <&cpg CPG_MOD 0x4>;
+                       power-domains = <&cpg>;
+                       resets = <&cpg 0x35>;
+                       #dma-cells = <1>;
+                       dma-channels = <16>;
+                       renesas,icu = <&icu 3>;
+               };
+
                ostm0: timer@11800000 {
                        compatible = "renesas,r9a09g057-ostm", "renesas,ostm";
                        reg = <0x0 0x11800000 0x0 0x1000>;
                        resets = <&cpg 0xa7>;
                        power-domains = <&cpg>;
                        status = "disabled";
+
+                       sdhi0_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI0-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
                };
 
                sdhi1: mmc@15c10000 {
                        resets = <&cpg 0xa8>;
                        power-domains = <&cpg>;
                        status = "disabled";
+
+                       sdhi1_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI1-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
                };
 
                sdhi2: mmc@15c20000 {
                        resets = <&cpg 0xa9>;
                        power-domains = <&cpg>;
                        status = "disabled";
+
+                       sdhi2_vqmmc: vqmmc-regulator {
+                               regulator-name = "SDHI2-VQMMC";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               status = "disabled";
+                       };
                };
        };
 
index e378d55e6e9bc62e693df580c0b8a81f05fafd95..afdc1940e24abb903e93d252cf6e558abce518c8 100644 (file)
@@ -5,6 +5,26 @@
  * Copyright (C) 2024 Renesas Electronics Corp.
  */
 
+/*
+ * Please set the switch position SW_OPT_MUX.1 on the carrier board and the
+ * corresponding macro SW_SDIO_M2E on the board DTS:
+ *
+ * SW_SDIO_M2E:
+ *     0 - SMARC SDIO signal is connected to uSD1
+ *     1 - SMARC SDIO signal is connected to M.2 Key E connector
+ *
+ * Please set the switch position SW_GPIO_CAN_PMOD on the carrier board and the
+ * corresponding macro SW_GPIO8_CAN0_STB/SW_GPIO8_CAN0_STB on the board DTS:
+ *
+ * SW_GPIO8_CAN0_STB:
+ *     0 - Connect to GPIO8 PMOD (default)
+ *     1 - Connect to CAN0 transceiver STB pin
+ *
+ * SW_GPIO9_CAN1_STB:
+ *     0 - Connect to GPIO9 PMOD (default)
+ *     1 - Connect to CAN1 transceiver STB pin
+ */
+
 / {
        model = "Renesas RZ SMARC Carrier-II Board";
        compatible = "renesas,smarc2-evk";
 
        aliases {
                serial3 = &scif0;
+               mmc1 = &sdhi1;
+       };
+
+       can_transceiver0: can-phy0 {
+               compatible = "ti,tcan1042";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+               status = "disabled";
        };
+
+       can_transceiver1: can-phy1 {
+               compatible = "ti,tcan1042";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+               status = "disabled";
+       };
+};
+
+&canfd {
+       status = "okay";
 };
 
 &scif0 {
        status = "okay";
 };
+
+&sdhi1 {
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+
+       status = "okay";
+};
index e9f244c33d558e63467c9ca44b3951a5ac8e51ba..2616dbde4dd597dd129159f94d9326be71413eda 100644 (file)
                line-name = "can1_stb";
        };
 
+       gpt_pins: gpt {
+               pinmux = <RZG2L_PORT_PINMUX(43, 0, 2)>, /* GTIOC4A */
+                        <RZG2L_PORT_PINMUX(43, 1, 2)>; /* GTIOC4B */
+       };
+
        i2c0_pins: i2c0 {
                pins = "RIIC0_SDA", "RIIC0_SCL";
                input-enable;
index 21cf198b3c1717f9e30ce24c5ea4974bf65f2915..d511e152d7c6c4bc9dfa1c685b6894f310cfdcf4 100644 (file)
        status = "okay";
 
        flash@0 {
-               compatible = "micron,mt25qu512a", "jedec,spi-nor";
+               compatible = "jedec,spi-nor";
                reg = <0>;
                m25p,fast-read;
                spi-max-frequency = <50000000>;
index 789f7b0b5ebcadc775f8b59897b3c0feb0b3525a..b76b55e7f09dfb66304a1b686639976685d7800f 100644 (file)
        };
 };
 
+#if PMOD0_GPT
+&gpt {
+       pinctrl-0 = <&gpt_pins>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+#endif /* PMOD0_GPT */
+
 &i2c3 {
        pinctrl-0 = <&i2c3_pins>;
        pinctrl-names = "default";
index 9aa729fbdce0995aded38639fde1edb9c9a076d2..3e8909a872e334026ef79469331cee1b25d4844e 100644 (file)
        status = "okay";
 
        flash@0 {
-               compatible = "micron,mt25qu512a", "jedec,spi-nor";
+               compatible = "jedec,spi-nor";
                reg = <0>;
                m25p,fast-read;
                spi-max-frequency = <50000000>;
index f4ba050beb0dcee772f7ea30116dc2ea39ded19a..ecea29a76b144ef6869e8a92a1b395e09cc8ac83 100644 (file)
  * Copyright (C) 2024 Renesas Electronics Corp.
  */
 
+/*
+ * Please set the below switch position on the SoM and the corresponding macro
+ * on the board DTS:
+ *
+ * Switch position SYS.1, Macro SW_SD0_DEV_SEL:
+ *      0 - SD0 is connected to eMMC (default)
+ *      1 - SD0 is connected to uSD0 card
+ *
+ * Switch position SYS.5, Macro SW_LCD_EN:
+ *      0 - Select Misc. Signals routing
+ *      1 - Select LCD
+ *
+ * Switch position BOOT.6, Macro SW_PDM_EN:
+ *      0 - Select CAN routing
+ *      1 - Select PDM
+ */
+
 / {
        compatible = "renesas,rzg3e-smarcm", "renesas,r9a09g047e57", "renesas,r9a09g047";
 
+       aliases {
+               i2c2 = &i2c2;
+               mmc0 = &sdhi0;
+               mmc2 = &sdhi2;
+       };
+
        memory@48000000 {
                device_type = "memory";
                /* First 128MB is reserved for secure area. */
                reg = <0x0 0x48000000 0x0 0xf8000000>;
        };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-1.8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       reg_vdd0p8v_others: regulator-vdd0p8v-others {
+               compatible = "regulator-fixed";
+
+               regulator-name = "fixed-0.8V";
+               regulator-min-microvolt = <800000>;
+               regulator-max-microvolt = <800000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       /* 32.768kHz crystal */
+       x3: x3-clock {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+       };
 };
 
 &audio_extal_clk {
        clock-frequency = <48000000>;
 };
 
+&gpu {
+       status = "okay";
+       mali-supply = <&reg_vdd0p8v_others>;
+};
+
+&i2c2 {
+       pinctrl-0 = <&i2c2_pins>;
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       status = "okay";
+
+       raa215300: pmic@12 {
+               compatible = "renesas,raa215300";
+               reg = <0x12>, <0x6f>;
+               reg-names = "main", "rtc";
+               clocks = <&x3>;
+               clock-names = "xin";
+
+               pinctrl-0 = <&rtc_irq_pin>;
+               pinctrl-names = "default";
+
+               interrupts-extended = <&pinctrl RZG3E_GPIO(S, 1) IRQ_TYPE_EDGE_FALLING>;
+       };
+};
+
+&pinctrl {
+       i2c2_pins: i2c {
+               pinmux = <RZG3E_PORT_PINMUX(3, 4, 1)>, /* SCL2 */
+                        <RZG3E_PORT_PINMUX(3, 5, 1)>; /* SDA2 */
+       };
+
+       rtc_irq_pin: rtc-irq {
+               pins = "PS1";
+               bias-pull-up;
+       };
+
+       sdhi0_emmc_pins: sd0-emmc {
+               sd0-ctrl {
+                       pins = "SD0CLK", "SD0CMD";
+                       renesas,output-impedance = <3>;
+               };
+
+               sd0-data {
+                       pins = "SD0DAT0", "SD0DAT1", "SD0DAT2", "SD0DAT3",
+                              "SD0DAT4", "SD0DAT5", "SD0DAT6", "SD0DAT7";
+                       renesas,output-impedance = <3>;
+               };
+
+               sd0-rst {
+                       pins = "SD0RSTN";
+                       renesas,output-impedance = <3>;
+               };
+       };
+
+       sdhi0_usd_pins: sd0-usd {
+               sd0-cd {
+                       pinmux = <RZG3E_PORT_PINMUX(5, 0, 8)>;
+               };
+
+               sd0-ctrl {
+                       pins = "SD0CLK", "SD0CMD";
+                       renesas,output-impedance = <3>;
+               };
+
+               sd0-data {
+                       pins = "SD0DAT0", "SD0DAT1", "SD0DAT2", "SD0DAT3";
+                       renesas,output-impedance = <3>;
+               };
+
+               sd0-iovs {
+                       pins = "SD0IOVS";
+                       renesas,output-impedance = <3>;
+               };
+
+               sd0-pwen {
+                       pins = "SD0PWEN";
+                       renesas,output-impedance = <3>;
+               };
+       };
+
+       sdhi2_pins: sd2 {
+               sd2-cd {
+                       pinmux = <RZG3E_PORT_PINMUX(K, 0, 1)>; /* SD2CD */
+               };
+
+               sd2-ctrl {
+                       pinmux = <RZG3E_PORT_PINMUX(H, 0, 1)>, /* SD2CLK */
+                                <RZG3E_PORT_PINMUX(H, 1, 1)>; /* SD2CMD */
+               };
+
+               sd2-data {
+                       pinmux = <RZG3E_PORT_PINMUX(H, 2, 1)>, /* SD2DAT0 */
+                                <RZG3E_PORT_PINMUX(H, 3, 1)>, /* SD2DAT1 */
+                                <RZG3E_PORT_PINMUX(H, 4, 1)>, /* SD2DAT2 */
+                                <RZG3E_PORT_PINMUX(H, 5, 1)>; /* SD2DAT3 */
+               };
+
+               sd2-iovs {
+                       pinmux = <RZG3E_PORT_PINMUX(K, 1, 1)>; /* SD2IOVS */
+               };
+
+               sd2-pwen {
+                       pinmux = <RZG3E_PORT_PINMUX(K, 2, 1)>; /* SD2PWEN */
+               };
+       };
+};
+
 &qextal_clk {
        clock-frequency = <24000000>;
 };
        clock-frequency = <32768>;
 };
 
+#if (SW_SD0_DEV_SEL)
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_usd_pins>;
+       pinctrl-1 = <&sdhi0_usd_pins>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&sdhi0_vqmmc>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       status = "okay";
+};
+
+&sdhi0_vqmmc {
+       status = "okay";
+};
+#else
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_emmc_pins>;
+       pinctrl-1 = <&sdhi0_emmc_pins>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&reg_1p8v>;
+       bus-width = <8>;
+       mmc-hs200-1_8v;
+       non-removable;
+       fixed-emmc-driver-type = <1>;
+       status = "okay";
+};
+#endif
+
+&sdhi2 {
+       pinctrl-0 = <&sdhi2_pins>;
+       pinctrl-1 = <&sdhi2_pins>;
+       pinctrl-names = "default", "state_uhs";
+
+       vmmc-supply = <&reg_3p3v>;
+       vqmmc-supply = <&sdhi2_vqmmc>;
+       bus-width = <4>;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       status = "okay";
+};
+
+&sdhi2_vqmmc {
+       status = "okay";
+};
+
 &wdt1 {
        status = "okay";
 };
index c27b9b3d4e5f4a09cec0ee52c2884e666012245f..f2d53e958da1162581fc80e0ca7a783df7a75e93 100644 (file)
        };
 
        tpu0_pins: tpu0 {
-               groups = "tpu_to0_a";
+               groups = "tpu_to0_b";
                function = "tpu";
        };
 };
index 20e8232f2f3234e2d889623ed43bbef3b95f4ca5..976a3ab44e5a523e97008abb33a4506868a18058 100644 (file)
 / {
        model = "Renesas White Hawk Single board";
        compatible = "renesas,white-hawk-single";
+
+       aliases {
+               ethernet3 = &tsn0;
+       };
 };
 
 &hscif0 {
@@ -53,7 +57,7 @@
        pinctrl-0 = <&tsn0_pins>;
        pinctrl-names = "default";
        phy-mode = "rgmii";
-       phy-handle = <&phy3>;
+       phy-handle = <&tsn0_phy>;
        status = "okay";
 
        mdio {
@@ -63,7 +67,7 @@
                reset-gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;
                reset-post-delay-us = <4000>;
 
-               phy3: ethernet-phy@0 {
+               tsn0_phy: ethernet-phy@0 {
                        compatible = "ethernet-phy-id002b.0980",
                                     "ethernet-phy-ieee802.3-c22";
                        reg = <0>;
diff --git a/src/arm64/rockchip/px30-cobra-ltk050h3146w-a2.dts b/src/arm64/rockchip/px30-cobra-ltk050h3146w-a2.dts
new file mode 100644 (file)
index 0000000..1d26164
--- /dev/null
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ */
+
+/dts-v1/;
+#include "px30-cobra.dtsi"
+
+/ {
+       model = "Theobroma Systems Cobra with LTK050H3146W-A2 Display";
+       compatible = "tsd,px30-cobra-ltk050h3146w-a2", "tsd,px30-cobra", "rockchip,px30";
+};
+
+&dsi {
+       status = "okay";
+
+       panel@0 {
+               compatible = "leadtek,ltk050h3146w-a2";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc_1v8>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsp_rst>;
+               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+               vci-supply = <&vcc_2v8>;
+
+               port {
+                       mipi_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
diff --git a/src/arm64/rockchip/px30-cobra-ltk050h3146w.dts b/src/arm64/rockchip/px30-cobra-ltk050h3146w.dts
new file mode 100644 (file)
index 0000000..82c6acd
--- /dev/null
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ */
+
+/dts-v1/;
+#include "px30-cobra.dtsi"
+
+/ {
+       model = "Theobroma Systems Cobra with LTK050H3146W Display";
+       compatible = "tsd,px30-cobra-ltk050h3146w", "tsd,px30-cobra", "rockchip,px30";
+};
+
+&dsi {
+       status = "okay";
+
+       panel@0 {
+               compatible = "leadtek,ltk050h3146w";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc_1v8>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsp_rst>;
+               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+               vci-supply = <&vcc_2v8>;
+
+               port {
+                       mipi_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
diff --git a/src/arm64/rockchip/px30-cobra-ltk050h3148w.dts b/src/arm64/rockchip/px30-cobra-ltk050h3148w.dts
new file mode 100644 (file)
index 0000000..9444913
--- /dev/null
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ */
+
+/dts-v1/;
+#include "px30-cobra.dtsi"
+
+/ {
+       model = "Theobroma Systems Cobra with ltk050h3148w Display";
+       compatible = "tsd,px30-cobra-ltk050h3148w", "tsd,px30-cobra", "rockchip,px30";
+};
+
+&dsi {
+       status = "okay";
+
+       panel@0 {
+               compatible = "leadtek,ltk050h3148w";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc_1v8>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsp_rst>;
+               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+               vci-supply = <&vcc_2v8>;
+
+               port {
+                       mipi_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
diff --git a/src/arm64/rockchip/px30-cobra-ltk500hd1829.dts b/src/arm64/rockchip/px30-cobra-ltk500hd1829.dts
new file mode 100644 (file)
index 0000000..d7b639e
--- /dev/null
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ */
+
+/dts-v1/;
+#include "px30-cobra.dtsi"
+
+/ {
+       model = "Theobroma Systems Cobra prototype with LTK500HD1829 Display";
+       compatible = "tsd,px30-cobra-ltk500hd1829", "tsd,px30-cobra", "rockchip,px30";
+
+       aliases {
+               mmc1 = &sdmmc;
+       };
+};
+
+&dsi {
+       status = "okay";
+
+       panel@0 {
+               compatible = "leadtek,ltk500hd1829";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc_1v8>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsp_rst>;
+               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+               vcc-supply = <&vcc_2v8>;
+
+               port {
+                       mipi_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&cobra_pin_hog>, <&cobra_proto_hog>;
+
+       hog {
+               cobra_proto_hog: cobra-proto-hog {
+                       rockchip,pins =
+                               /* STUSB4500 open drain outout POWER_OK2, needs pull-up */
+                               <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up>,
+                               /* STUSB4500 open drain outout POWER_OK3, needs pull-up */
+                               <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&sdmmc {
+       bus-width = <4>;
+       broken-cd;
+       cap-sd-highspeed;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vccio_sd>;
+       vqmmc-supply = <&vccio_sd>;
+       status = "okay";
+};
diff --git a/src/arm64/rockchip/px30-cobra.dtsi b/src/arm64/rockchip/px30-cobra.dtsi
new file mode 100644 (file)
index 0000000..b7e669d
--- /dev/null
@@ -0,0 +1,566 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ */
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include "px30.dtsi"
+
+/ {
+       aliases {
+               ethernet0 = &gmac;
+               mmc0 = &emmc;
+       };
+
+       chosen {
+               stdout-path = "serial5:115200n8";
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               power-supply = <&vcc5v0_sys>;
+               pwms = <&pwm0 0 25000 0>;
+       };
+
+       beeper {
+               compatible = "pwm-beeper";
+               pwms = <&pwm1 0 1000 0>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               pinctrl-0 = <&emmc_reset>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&heartbeat_led_pin>;
+
+               /*
+                * LED14 on the PCB. Typically NOT populated.
+                */
+               led-0 {
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
+                       label = "heartbeat";
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       pwm-leds {
+               compatible = "pwm-leds";
+
+               ring_red: led-0 {
+                       color = <LED_COLOR_ID_RED>;
+                       default-state = "off";
+                       label = "ring_red";
+                       pwms = <&pwm5 0 1000000 0>;
+                       max-brightness = <255>;
+               };
+
+               ring_green: led-1 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       label = "ring_green";
+                       pwms = <&pwm6 0 1000000 0>;
+                       max-brightness = <255>;
+               };
+
+               ring_blue: led-2 {
+                       color = <LED_COLOR_ID_BLUE>;
+                       default-state = "off";
+                       label = "ring_blue";
+                       pwms = <&pwm7 0 1000000 0>;
+                       max-brightness = <255>;
+               };
+       };
+
+       /* also named 5V_Q7 in schematics */
+       vcc5v0_sys: regulator-vccsys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu1 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu2 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu3 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&display_subsystem {
+       status = "okay";
+};
+
+&dsi_dphy {
+       status = "okay";
+};
+
+&emmc {
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       /*
+        * For hs200 support, U-Boot would have to set the RK809 DCDC4
+        * rail to 1.8V from the default of 3.0V. It doesn't do that on
+        * devices out in the field, so disable hs200.
+        * mmc-hs200-1_8v;
+        */
+       mmc-pwrseq = <&emmc_pwrseq>;
+       non-removable;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vcc_emmc>;
+       status = "okay";
+};
+
+&gmac {
+       clock_in_out = "output";
+       phy-handle = <&dp83825>;
+       phy-supply = <&vcc_3v3>;
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&vdd_log>;
+       status = "okay";
+};
+
+/* I2C0 = PMIC, STUSB4500, RTC */
+&i2c0 {
+       status = "okay";
+
+       rk809: pmic@20 {
+               compatible = "rockchip,rk809";
+               reg = <0x20>;
+               #clock-cells = <0>;
+               clock-output-names = "xin32k";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA7 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int>;
+               system-power-controller;
+               wakeup-source;
+
+               vcc1-supply = <&vcc5v0_sys>;
+               vcc2-supply = <&vcc5v0_sys>;
+               vcc3-supply = <&vcc5v0_sys>;
+               vcc4-supply = <&vcc5v0_sys>;
+               vcc5-supply = <&vcc_3v3>;
+               vcc6-supply = <&vcc_3v3>;
+               vcc7-supply = <&vcc_3v3>;
+               vcc9-supply = <&vcc5v0_sys>;
+
+               regulators {
+                       vdd_log: DCDC_REG1 {
+                               regulator-name = "vdd_log";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <950000>;
+                               };
+                       };
+
+                       vdd_arm: DCDC_REG2 {
+                               regulator-name = "vdd_arm";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <950000>;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-name = "vcc_ddr";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_3v0_1v8: vcc_emmc: DCDC_REG4 {
+                               regulator-name = "vcc_3v0_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vcc_3v3: DCDC_REG5 {
+                               regulator-name = "vcc_3v3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc_1v8: LDO_REG2 {
+                               regulator-name = "vcc_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc_1v0: LDO_REG3 {
+                               regulator-name = "vcc_1v0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vcc_2v8: LDO_REG4 {
+                               regulator-name = "vcc_2v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <2800000>;
+                               };
+                       };
+
+                       /*
+                        * vccio_sd also supplies the vmmc supply on prototypes
+                        * with sd-slots, so needs to stay single voltage for
+                        * those. Production models don't have sd-slots anymore
+                        * and only supply vccio2 from this regulator.
+                        */
+                       vccio_sd: LDO_REG5 {
+                               regulator-name = "vccio_sd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       /* vcc_sdio also supplies the pull-up resistors for i2c1 */
+                       vcc_sdio: LDO_REG6 {
+                               regulator-name = "vcc_sdio";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc_lcd: LDO_REG7 {
+                               regulator-name = "vcc_lcd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vcc_1v8_lcd: LDO_REG8 {
+                               regulator-name = "vcc_1v8_lcd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcca_1v8: LDO_REG9 {
+                               regulator-name = "vcca_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+&i2c2 {
+       clock-frequency = <100000>;
+       i2c-scl-falling-time-ns = <50>;
+       i2c-scl-rising-time-ns = <300>;
+       status = "okay";
+
+       touchscreen@14 {
+               compatible = "goodix,gt911";
+               reg = <0x14>;
+               AVDD28-supply = <&vcc_2v8>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA1 IRQ_TYPE_LEVEL_LOW>;
+               irq-gpios = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tch_int &tch_rst>;
+               reset-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
+               touchscreen-inverted-x;
+               VDDIO-supply = <&vcc_3v3>;
+       };
+};
+
+/*
+ * Enable pull-ups to prevent floating pins when the touch
+ * panel is not connected.
+ */
+&i2c2_xfer {
+       rockchip,pins =
+               <2 RK_PB7 2 &pcfg_pull_up>,
+               <2 RK_PC0 2 &pcfg_pull_up>;
+};
+
+&io_domains {
+       vccio1-supply = <&vcc_sdio>;
+       vccio2-supply = <&vccio_sd>;
+       vccio3-supply = <&vcc_3v3>;
+       vccio4-supply = <&vcc_3v3>;
+       vccio5-supply = <&vcc_1v8>;
+       vccio6-supply = <&vcc_emmc>;
+       status = "okay";
+};
+
+&mdio {
+       dp83825: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&phy_rst>;
+               reset-assert-us = <50000>;
+               reset-deassert-us = <50000>;
+               reset-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&cobra_pin_hog>;
+
+       hog {
+               cobra_pin_hog: cobra-pin-hog {
+                       rockchip,pins =
+                               /* USB_HUB2_RESET */
+                               <0 RK_PA5 RK_FUNC_GPIO &pcfg_output_high>,
+                               /* USB_HUB1_RESET */
+                               <0 RK_PB4 RK_FUNC_GPIO &pcfg_output_high>,
+                               /* The default pull-down can keep the IC in reset. */
+                               <3 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>,
+                               /* USB-A 5V enable */
+                               <3 RK_PC0 RK_FUNC_GPIO &pcfg_output_high>,
+                               /* USB-A data enable */
+                               <3 RK_PD3 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       emmc {
+               emmc_reset: emmc-reset {
+                       rockchip,pins =
+                               <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       ethernet {
+               phy_rst: phy-rst {
+                       rockchip,pins =
+                               <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       leds {
+               heartbeat_led_pin: heartbeat-led-pin {
+                       rockchip,pins =
+                               <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       panel {
+               dsp_rst: dsp-rst {
+                       rockchip,pins =
+                               <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               tch_int: tch-int {
+                       rockchip,pins =
+                               <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               tch_rst: tch-rst {
+                       rockchip,pins =
+                               <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               pmic_int: pmic-int {
+                       rockchip,pins =
+                               <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&pmu_io_domains {
+       pmuio1-supply = <&vcc_3v3>;
+       pmuio2-supply = <&vcc_3v3>;
+       status = "okay";
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&pwm5 {
+       status = "okay";
+};
+
+&pwm6 {
+       status = "okay";
+};
+
+&pwm7 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcc_1v8>;
+       status = "okay";
+};
+
+&tsadc {
+       status = "okay";
+};
+
+&u2phy {
+       status = "okay";
+};
+
+&u2phy_host {
+       status = "okay";
+};
+
+&u2phy_otg {
+       status = "okay";
+};
+
+&uart1 {
+       /delete-property/ dmas;
+       /delete-property/ dma-names;
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_xfer>;
+       status = "okay";
+};
+
+&uart5 {
+       pinctrl-0 = <&uart5_xfer>;
+       status = "okay";
+};
+
+&usb20_otg {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "disabled";
+};
+
+&vopl_mmu {
+       status = "disabled";
+};
+
+&wdt {
+       status = "okay";
+};
diff --git a/src/arm64/rockchip/px30-pp1516-ltk050h3146w-a2.dts b/src/arm64/rockchip/px30-pp1516-ltk050h3146w-a2.dts
new file mode 100644 (file)
index 0000000..b71929b
--- /dev/null
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ */
+
+/dts-v1/;
+#include "px30-pp1516.dtsi"
+
+/ {
+       model = "Theobroma Systems PP-1516 with LTK050H3146W-A2 Display";
+       compatible = "tsd,px30-pp1516-ltk050h3146w-a2", "tsd,px30-pp1516", "rockchip,px30";
+};
+
+&dsi {
+       status = "okay";
+
+       panel@0 {
+               compatible = "leadtek,ltk050h3146w-a2";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc_1v8>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsp_rst>;
+               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+               vci-supply = <&vcc_2v8>;
+
+               port {
+                       mipi_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
diff --git a/src/arm64/rockchip/px30-pp1516-ltk050h3148w.dts b/src/arm64/rockchip/px30-pp1516-ltk050h3148w.dts
new file mode 100644 (file)
index 0000000..a9bd593
--- /dev/null
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ */
+
+/dts-v1/;
+#include "px30-pp1516.dtsi"
+
+/ {
+       model = "Theobroma Systems PP-1516 with LTK050H3148W Display";
+       compatible = "tsd,px30-pp1516-ltk050h3148w", "tsd,px30-pp1516", "rockchip,px30";
+};
+
+&dsi {
+       status = "okay";
+
+       panel@0 {
+               compatible = "leadtek,ltk050h3148w";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc_1v8>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&dsp_rst>;
+               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+               vci-supply = <&vcc_2v8>;
+
+               port {
+                       mipi_in_panel: endpoint {
+                               remote-endpoint = <&mipi_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi_out {
+       mipi_out_panel: endpoint {
+               remote-endpoint = <&mipi_in_panel>;
+       };
+};
diff --git a/src/arm64/rockchip/px30-pp1516.dtsi b/src/arm64/rockchip/px30-pp1516.dtsi
new file mode 100644 (file)
index 0000000..3f9a133
--- /dev/null
@@ -0,0 +1,602 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Cherry Embedded Solutions GmbH
+ */
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include "px30.dtsi"
+
+/ {
+       aliases {
+               mmc0 = &emmc;
+       };
+
+       chosen {
+               stdout-path = "serial5:115200n8";
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               power-supply = <&vcc5v0_sys>;
+               pwms = <&pwm0 0 25000 0>;
+       };
+
+       beeper {
+               compatible = "pwm-beeper";
+               pwms = <&pwm1 0 1000 0>;
+       };
+
+       emmc_pwrseq: emmc-pwrseq {
+               compatible = "mmc-pwrseq-emmc";
+               pinctrl-0 = <&emmc_reset>;
+               pinctrl-names = "default";
+               reset-gpios = <&gpio1 RK_PB3 GPIO_ACTIVE_HIGH>;
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&debug_led_pin>, <&heartbeat_led_pin>;
+
+               /*
+                * LED2 on the PCB, left of the USB-C connector.
+                * Typically NOT populated.
+                */
+               debug: led-0 {
+                       label = "debug";
+                       gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "none";
+               };
+
+               /*
+                * LED14 on the PCB, left of the PX30 SoC.
+                * Typically NOT populated.
+                */
+               heartbeat: led-1 {
+                       label = "heartbeat";
+                       gpios = <&gpio0 RK_PA0 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       vcc5v0_sys: regulator-vccsys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       vcc_cam_avdd: regulator-vcc-cam-avdd {
+               compatible  = "regulator-fixed";
+               regulator-name = "vcc_cam_avdd";
+               gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cam_avdd_en>;
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vcc_2v8>;
+       };
+
+       vcc_cam_dovdd: regulator-vcc-cam-dovdd {
+               compatible  = "regulator-fixed";
+               regulator-name = "vcc_cam_dovdd";
+               gpio = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cam_dovdd_en>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_1v8>;
+       };
+
+       vcc_cam_dvdd: regulator-vcc-cam-dvdd {
+               compatible  = "regulator-fixed";
+               regulator-name = "vcc_cam_dvdd";
+               gpio = <&gpio3 RK_PC5 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cam_dvdd_en>;
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               vin-supply = <&vcc_3v3>;
+       };
+
+       vcc_lens_afvdd: regulator-vcc-lens-afvdd {
+               compatible  = "regulator-fixed";
+               regulator-name = "vcc_lens_afvdd";
+               gpio = <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cam_afvdd_en>;
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vcc_2v8>;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu1 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu2 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu3 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&csi_dphy {
+       status = "okay";
+};
+
+&display_subsystem {
+       status = "okay";
+};
+
+&dsi_dphy {
+       status = "okay";
+};
+
+&emmc {
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       /*
+        * For hs200 support, U-Boot would have to set the RK809 DCDC4
+        * rail to 1.8V from the default of 3.0V. It doesn't do that on
+        * devices out in the field, so disable hs200.
+        * mmc-hs200-1_8v;
+        */
+       mmc-pwrseq = <&emmc_pwrseq>;
+       non-removable;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vcc_emmc>;
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&vdd_log>;
+       status = "okay";
+};
+
+/* I2C0 = PMIC, Touchscreen */
+&i2c0 {
+       status = "okay";
+
+       touchscreen@14 {
+               compatible = "goodix,gt911";
+               reg = <0x14>;
+               AVDD28-supply = <&vcc_2v8>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA1 IRQ_TYPE_LEVEL_LOW>;
+               irq-gpios = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tch_int &tch_rst>;
+               reset-gpios = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;
+               VDDIO-supply = <&vcc_3v3>;
+       };
+
+       rk809: pmic@20 {
+               compatible = "rockchip,rk809";
+               reg = <0x20>;
+               #clock-cells = <0>;
+               clock-output-names = "xin32k";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA7 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int>;
+               system-power-controller;
+               wakeup-source;
+
+               vcc1-supply = <&vcc5v0_sys>;
+               vcc2-supply = <&vcc5v0_sys>;
+               vcc3-supply = <&vcc5v0_sys>;
+               vcc4-supply = <&vcc5v0_sys>;
+               vcc5-supply = <&vcc_3v3>;
+               vcc6-supply = <&vcc_3v3>;
+               vcc7-supply = <&vcc_3v3>;
+               vcc9-supply = <&vcc5v0_sys>;
+
+               regulators {
+                       vdd_log: DCDC_REG1 {
+                               regulator-name = "vdd_log";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <950000>;
+                               };
+                       };
+
+                       vdd_arm: DCDC_REG2 {
+                               regulator-name = "vdd_arm";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <950000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <950000>;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-name = "vcc_ddr";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_3v0_1v8: vcc_emmc: DCDC_REG4 {
+                               regulator-name = "vcc_3v0_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vcc_3v3: DCDC_REG5 {
+                               regulator-name = "vcc_3v3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc_1v8: LDO_REG2 {
+                               regulator-name = "vcc_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc_1v0: LDO_REG3 {
+                               regulator-name = "vcc_1v0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vcc_2v8: LDO_REG4 {
+                               regulator-name = "vcc_2v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <2800000>;
+                               };
+                       };
+
+                       vccio_sd: LDO_REG5 {
+                               regulator-name = "vccio_sd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vcc_sdio: LDO_REG6 {
+                               regulator-name = "vcc_sdio";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc_lcd: LDO_REG7 {
+                               regulator-name = "vcc_lcd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <1000000>;
+                               };
+                       };
+
+                       vcc_1v8_lcd: LDO_REG8 {
+                               regulator-name = "vcc_1v8_lcd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcca_1v8: LDO_REG9 {
+                               regulator-name = "vcca_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       clock-frequency = <100000>;
+       status = "okay";
+};
+
+/* I2C2 = Accelerometer + Camera */
+&i2c2 {
+       /* MEMSIC MXC4005 accelerometer is rated for I2C Fast Mode (<=400KHz) */
+       /* OmniVision OV5675 camera is rated for I2C Fast Mode (<=400KHz) */
+       clock-frequency = <400000>;
+       status = "okay";
+
+       focus: focus@c {
+               compatible = "dongwoon,dw9714";
+               reg = <0xc>;
+               vcc-supply = <&vcc_lens_afvdd>;
+       };
+
+       accel@15 {
+               compatible = "memsic,mxc4005";
+               reg = <0x15>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <RK_PB4 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&accel_int>;
+       };
+
+       camera@36 {
+               compatible = "ovti,ov5675";
+               reg = <0x36>;
+               clocks = <&cru SCLK_CIF_OUT>;
+               assigned-clocks = <&cru SCLK_CIF_OUT>;
+               assigned-clock-rates = <19200000>;
+               avdd-supply = <&vcc_cam_avdd>;
+               dvdd-supply = <&vcc_cam_dvdd>;
+               dovdd-supply = <&vcc_cam_dovdd>;
+               lens-focus = <&focus>;
+               orientation = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&cif_clkout_m0 &cam_pwdn>;
+               reset-gpios = <&gpio2 RK_PB0 GPIO_ACTIVE_LOW>;
+               rotation = <0>;
+
+               port {
+                       ucam_out: endpoint {
+                               remote-endpoint = <&mipi_in_ucam>;
+                               data-lanes = <1 2>;
+                               link-frequencies = /bits/ 64 <450000000>;
+                       };
+               };
+       };
+};
+
+&io_domains {
+       vccio1-supply = <&vcc_sdio>;
+       vccio2-supply = <&vccio_sd>;
+       vccio3-supply = <&vcc_1v8>;
+       vccio4-supply = <&vcc_3v3>;
+       vccio5-supply = <&vcc_3v3>;
+       vccio6-supply = <&vcc_emmc>;
+       status = "okay";
+};
+
+&isp {
+       status = "okay";
+
+       ports {
+               port@0 {
+                       mipi_in_ucam: endpoint@0 {
+                               reg = <0>;
+                               data-lanes = <1 2>;
+                               remote-endpoint = <&ucam_out>;
+                       };
+               };
+       };
+};
+
+&isp_mmu {
+       status = "okay";
+};
+
+&pinctrl {
+       accel {
+               accel_int: accel-int {
+                       rockchip,pins =
+                               <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       camera {
+               cam_afvdd_en: cam-afvdd-en {
+                       rockchip,pins =
+                               <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               cam_avdd_en: cam-avdd-en {
+                       rockchip,pins =
+                               <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               cam_dovdd_en: cam-dovdd-en {
+                       rockchip,pins =
+                               <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               cam_dvdd_en: cam-dvdd-en {
+                       rockchip,pins =
+                               <3 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               cam_pwdn: cam-pwdn {
+                       rockchip,pins =
+                               <2 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       emmc {
+               emmc_reset: emmc-reset {
+                       rockchip,pins =
+                               <1 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       leds {
+               debug_led_pin: debug-led-pin {
+                       rockchip,pins =
+                               <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               heartbeat_led_pin: heartbeat-led-pin {
+                       rockchip,pins =
+                               <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       panel {
+               dsp_rst: dsp-rst {
+                       rockchip,pins =
+                               <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               tch_int: tch-int {
+                       rockchip,pins =
+                               <0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               tch_rst: tch-rst {
+                       rockchip,pins =
+                               <0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               pmic_int: pmic-int {
+                       rockchip,pins =
+                               <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&pmu_io_domains {
+       pmuio1-supply = <&vcc_3v3>;
+       pmuio2-supply = <&vcc_3v3>;
+       status = "okay";
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcc_1v8>;
+       status = "okay";
+};
+
+&tsadc {
+       status = "okay";
+};
+
+&u2phy {
+       status = "okay";
+};
+
+&u2phy_host {
+       status = "okay";
+};
+
+&u2phy_otg {
+       status = "okay";
+};
+
+&uart5 {
+       pinctrl-0 = <&uart5_xfer>;
+       status = "okay";
+};
+
+&usb20_otg {
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&wdt {
+       status = "okay";
+};
index 142244d5270608050c3da0e58db167f16b40174b..4203b335a2633eee62dc6166abaa794b2fd4e78f 100644 (file)
@@ -83,9 +83,7 @@
 
 /* On-module TI DP83825I PHY but no connector, enable in carrierboard */
 &gmac {
-       snps,reset-gpio = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
-       snps,reset-active-low;
-       snps,reset-delays-us = <0 50000 50000>;
+       phy-handle = <&dp83825>;
        phy-supply = <&vcc_3v3>;
        clock_in_out = "output";
 };
        status = "okay";
 };
 
+&mdio {
+       dp83825: ethernet-phy@0 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&phy_rst>;
+               reset-assert-us = <50000>;
+               reset-deassert-us = <50000>;
+               reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
+       };
+};
+
 &pinctrl {
        emmc {
                emmc_reset: emmc-reset {
                };
        };
 
+       ethernet {
+               phy_rst: phy-rst {
+                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        leds {
                module_led_pin: module-led-pin {
                        rockchip,pins = <1 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
                                <0 RK_PA7 RK_FUNC_GPIO &pcfg_pull_up>;
                };
        };
+
+       spi1 {
+               spi1_csn0_gpio_pin: spi1-csn0-gpio-pin {
+                       rockchip,pins =
+                               <3 RK_PB1 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
+               };
+
+               spi1_csn1_gpio_pin: spi1-csn1-gpio-pin {
+                       rockchip,pins =
+                               <3 RK_PB2 RK_FUNC_GPIO &pcfg_pull_up_4ma>;
+               };
+       };
 };
 
 &pmu_io_domains {
        vqmmc-supply = <&vccio_sd>;
 };
 
+&spi1 {
+       /*
+        * Hardware CS has a very slow rise time of about 6us,
+        * causing transmission errors.
+        * With cs-gpios we have a rise time of about 20ns.
+        */
+       cs-gpios = <&gpio3 RK_PB1 GPIO_ACTIVE_LOW>, <&gpio3 RK_PB2 GPIO_ACTIVE_LOW>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi1_clk &spi1_csn0_gpio_pin &spi1_csn1_gpio_pin &spi1_miso &spi1_mosi>;
+};
+
 &tsadc {
        status = "okay";
 };
index 9137dd76e72cedb0cfbf1995032e5852cab80f96..feabdadfa440f96c0134a0bb05e64a0c7b5adf2e 100644 (file)
                resets = <&cru SRST_GMAC_A>;
                reset-names = "stmmaceth";
                status = "disabled";
+
+               mdio: mdio {
+                       compatible = "snps,dwmac-mdio";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
        };
 
        sdmmc: mmc@ff370000 {
index e550b6eeeff314c67fc9f122bd66697209c71bf2..5367e5fa92328f7cf7e4f295aa6fb4b66859bd5a 100644 (file)
 
                /* maximum speed for Rockchip SPI */
                spi-max-frequency = <50000000>;
+               vcc-supply = <&vcc_io>;
        };
 };
 
diff --git a/src/arm64/rockchip/rk3399-evb-ind.dts b/src/arm64/rockchip/rk3399-evb-ind.dts
new file mode 100644 (file)
index 0000000..70aee1a
--- /dev/null
@@ -0,0 +1,494 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Rockchip Electronics Co., Ltd.
+ */
+
+/dts-v1/;
+#include "rk3399.dtsi"
+
+/ {
+       model = "Rockchip RK3399 EVB IND LPDDR4 Board";
+       compatible = "rockchip,rk3399-evb-ind", "rockchip,rk3399";
+
+       aliases {
+               mmc0 = &sdhci;
+               mmc1 = &sdmmc;
+       };
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       vcc5v0_sys: regulator-vcc5v0-sys {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+       };
+};
+
+&cpu_b0 {
+       cpu-supply = <&vdd_cpu_b>;
+};
+
+&cpu_b1 {
+       cpu-supply = <&vdd_cpu_b>;
+};
+
+&cpu_l0 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l1 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l2 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l3 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&emmc_phy {
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu>;
+       status = "okay";
+};
+
+&hdmi {
+       pinctrl-names = "default";
+       pinctrl-0 = <&hdmi_i2c_xfer>, <&hdmi_cec>;
+       status = "okay";
+};
+
+&hdmi_sound {
+       status = "okay";
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <4>;
+       i2c-scl-rising-time-ns = <168>;
+       status = "okay";
+
+       vdd_gpu: regulator@10 {
+               compatible = "tcs,tcs4525";
+               reg = <0x10>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vsel2_gpio>;
+               regulator-name = "vdd_gpu";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <1500000>;
+               regulator-min-microvolt = <712500>;
+               regulator-ramp-delay = <1000>;
+               vin-supply = <&vcc5v0_sys>;
+               vsel-gpios = <&gpio1 RK_PB6 GPIO_ACTIVE_HIGH>;
+               fcs,suspend-voltage-selector = <1>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       vdd_cpu_b: regulator@1c {
+               compatible = "tcs,tcs4525";
+               reg = <0x1c>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vsel1_gpio>;
+               regulator-name = "vdd_cpu_b";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-max-microvolt = <1500000>;
+               regulator-min-microvolt = <712500>;
+               regulator-ramp-delay = <1000>;
+               vin-supply = <&vcc5v0_sys>;
+               vsel-gpios = <&gpio1 RK_PC1 GPIO_ACTIVE_HIGH>;
+               fcs,suspend-voltage-selector = <1>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       rk809: pmic@20 {
+               compatible = "rockchip,rk809";
+               reg = <0x20>;
+               #clock-cells = <1>;
+               clock-output-names = "xin32k", "rk808-clkout2";
+               interrupt-parent = <&gpio1>;
+               interrupts = <RK_PC5 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int_l>;
+               wakeup-source;
+
+               vcc1-supply = <&vcc5v0_sys>;
+               vcc2-supply = <&vcc5v0_sys>;
+               vcc3-supply = <&vcc5v0_sys>;
+               vcc4-supply = <&vcc5v0_sys>;
+               vcc5-supply = <&vcc_buck5>;
+               vcc6-supply = <&vcc_buck5>;
+               vcc7-supply = <&vcc5v0_sys>;
+               vcc8-supply = <&vcc3v3_sys>;
+               vcc9-supply = <&vcc5v0_sys>;
+
+               regulators {
+                       vdd_center: DCDC_REG1 {
+                               regulator-name = "vdd_center";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-initial-mode = <0x2>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-min-microvolt = <750000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_l: DCDC_REG2 {
+                               regulator-name = "vdd_cpu_l";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-initial-mode = <0x2>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-min-microvolt = <750000>;
+                               regulator-ramp-delay = <6001>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-name = "vcc_ddr";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-initial-mode = <0x2>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc3v3_sys: DCDC_REG4 {
+                               regulator-name = "vcc3v3_sys";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-initial-mode = <0x2>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <3300000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcc_buck5: DCDC_REG5 {
+                               regulator-name = "vcc_buck5";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <2200000>;
+                               regulator-min-microvolt = <2200000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <2200000>;
+                               };
+                       };
+
+                       vcca_0v9: LDO_REG1 {
+                               regulator-name = "vcca_0v9";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <900000>;
+                               regulator-min-microvolt = <900000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8: LDO_REG2 {
+                               regulator-name = "vcc_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc0v9_soc: LDO_REG3 {
+                               regulator-name = "vcc0v9_soc";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <900000>;
+                               regulator-min-microvolt = <900000>;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <900000>;
+                               };
+                       };
+
+                       vcca_1v8: LDO_REG4 {
+                               regulator-name = "vcca_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd1v5_dvp: LDO_REG5 {
+                               regulator-name = "vdd1v5_dvp";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-min-microvolt = <1500000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v5: LDO_REG6 {
+                               regulator-name = "vcc_1v5";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-min-microvolt = <1500000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v0: LDO_REG7 {
+                               regulator-name = "vcc_3v0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-min-microvolt = <3000000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vccio_sd: LDO_REG8 {
+                               regulator-name = "vccio_sd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <1800000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_sd: LDO_REG9 {
+                               regulator-name = "vcc_sd";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <3300000>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc5v0_usb: SWITCH_REG1 {
+                               regulator-name = "vcc5v0_usb";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vccio_3v3: SWITCH_REG2 {
+                               regulator-name = "vccio_3v3";
+                               regulator-always-on;
+                               regulator-boot-on;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&i2s2 {
+       status = "okay";
+};
+
+&io_domains {
+       audio-supply = <&vcca_1v8>;
+       bt656-supply = <&vcc_3v0>;
+       gpio1830-supply = <&vcc_3v0>;
+       sdmmc-supply = <&vccio_sd>;
+       status = "okay";
+};
+
+&pinctrl {
+       pmic {
+               pmic_int_l: pmic-int-l {
+                       rockchip,pins = <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               vsel1_gpio: vsel1 {
+                       rockchip,pins = <1 RK_PC1 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               vsel2_gpio: vsel2 {
+                       rockchip,pins = <1 RK_PB6 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+};
+
+&pmu_io_domains {
+       pmu1830-supply = <&vcc_1v8>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       keep-power-in-suspend;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       no-sdio;
+       no-sd;
+       non-removable;
+       status = "okay";
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       no-sdio;
+       no-mmc;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_sd>;
+       vqmmc-supply = <&vccio_sd>;
+       status = "okay";
+};
+
+&tcphy0 {
+       status = "okay";
+};
+
+&tcphy1 {
+       status = "okay";
+};
+
+&tsadc {
+       /* tshut mode 0:CRU 1:GPIO */
+       rockchip,hw-tshut-mode = <1>;
+       /* tshut polarity 0:LOW 1:HIGH */
+       rockchip,hw-tshut-polarity = <1>;
+       status = "okay";
+};
+
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_host {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_host {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&usb_host1_ehci {
+       status = "okay";
+};
+
+&usb_host1_ohci {
+       status = "okay";
+};
+
+&usbdrd_dwc3_0 {
+       status = "okay";
+};
+
+&usbdrd3_0 {
+       status = "okay";
+};
+
+&usbdrd3_1 {
+       status = "okay";
+};
+
+&usbdrd_dwc3_1 {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
index 9e4b12ed62cbed9f1bc8e1970c4d3b57d253ac32..be3ae473e56264aaf743c7177fa36d6896be70b5 100644 (file)
@@ -36,6 +36,6 @@
                compatible = "qcom,ath10k";
                reg = <0x00000000 0x0 0x00000000 0x0 0x00000000>,
                      <0x03000010 0x0 0x00000000 0x0 0x00200000>;
-               qcom,ath10k-calibration-variant = "GO_DUMO";
+               qcom,calibration-variant = "GO_DUMO";
        };
 };
index f2234dabd66411ccf6d0a59e970b00cad0a266f0..70979079923c103a701b380da6cac20435fac7e4 100644 (file)
        status = "okay";
 };
 
-&usb_host0_ehci {
-       status = "okay";
-};
-
-&usb_host0_ohci {
-       status = "okay";
-};
-
 &vopb {
        status = "okay";
 };
index e00fbaa8acc1685af46495c0dfc9bdac7e6e991c..587e89d7fc5e4267b877cbf8c9474bbf97b7b7af 100644 (file)
                vin-supply = <&vcc5v0_sys>;
        };
 
-       vcc5v0_host: regulator-vcc5v0-host {
-               compatible = "regulator-fixed";
-               gpio = <&gpio4 RK_PA3 GPIO_ACTIVE_LOW>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&vcc5v0_host_en>;
-               regulator-name = "vcc5v0_host";
-               regulator-always-on;
-               vin-supply = <&vcc5v0_sys>;
-       };
-
        vcc5v0_sys: regulator-vcc5v0-sys {
                compatible = "regulator-fixed";
                regulator-name = "vcc5v0_sys";
                };
        };
 
-       usb2 {
-               vcc5v0_host_en: vcc5v0-host-en {
+       usb {
+               cy3304_reset: cy3304-reset {
                        rockchip,pins =
-                         <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+                         <4 RK_PA3 RK_FUNC_GPIO &pcfg_output_high>;
                };
        };
 
        u2phy1_otg: otg-port {
                status = "okay";
        };
-
-       u2phy1_host: host-port {
-               phy-supply = <&vcc5v0_host>;
-               status = "okay";
-       };
 };
 
 &usbdrd3_1 {
 &usbdrd_dwc3_1 {
        status = "okay";
        dr_mode = "host";
-};
+       pinctrl-names = "default";
+       pinctrl-0 = <&cy3304_reset>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       hub_2_0: hub@1 {
+               compatible = "usb4b4,6502", "usb4b4,6506";
+               reg = <1>;
+               peer-hub = <&hub_3_0>;
+               reset-gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
+               vdd-supply = <&vcc1v2_phy>;
+               vdd2-supply = <&vcc3v3_sys>;
 
-&usb_host1_ehci {
-       status = "okay";
-};
+       };
 
-&usb_host1_ohci {
-       status = "okay";
+       hub_3_0: hub@2 {
+               compatible = "usb4b4,6500", "usb4b4,6504";
+               reg = <2>;
+               peer-hub = <&hub_2_0>;
+               reset-gpios = <&gpio4 RK_PA3 GPIO_ACTIVE_HIGH>;
+               vdd-supply = <&vcc1v2_phy>;
+               vdd2-supply = <&vcc3v3_sys>;
+       };
 };
index 0393da25cdfb11b18f83c1fe144e294856b8e748..fc9279627ef6921c5700eb77c8770b9daecb0a28 100644 (file)
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <30000000>;
+               vcc-supply = <&vcc3v3_sys>;
        };
 };
 
index 51c6aa26d8285edb6a17086b0a5031ba5944ea71..a7e4adf87e7a12945097d09715c373d8f5a15b3e 100644 (file)
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <10000000>;
+               vcc-supply = <&vcc_3v0>;
        };
 };
 
index 57a446b5cbd6c61d4c90f36bc54c8c03c915f4cc..9f6ccd9dd1f7aafe90af635fca3088da934b742e 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/leds/common.h>
+#include <dt-bindings/pwm/pwm.h>
 #include "rk3528.dtsi"
 
 / {
        compatible = "radxa,e20c", "rockchip,rk3528";
 
        aliases {
+               ethernet0 = &gmac1;
+               i2c1 = &i2c1;
                mmc0 = &sdhci;
+               mmc1 = &sdmmc;
+               serial0 = &uart0;
        };
 
        chosen {
                };
        };
 
+       vdd_0v9: regulator-0v9-vdd {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_0v9";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <900000>;
+               regulator-max-microvolt = <900000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc_ddr: regulator-1v1-vcc-ddr {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_ddr";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
        vcc_1v8: regulator-1v8-vcc {
                compatible = "regulator-fixed";
                regulator-name = "vcc_1v8";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
        };
+
+       vccio_sd: regulator-vccio-sd {
+               compatible = "regulator-gpio";
+               gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sdmmc_vol_ctrl_h>;
+               regulator-name = "vccio_sd";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               states = <1800000 0x0>, <3300000 0x1>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vdd_arm: regulator-vdd-arm {
+               compatible = "pwm-regulator";
+               pwms = <&pwm1 0 5000 PWM_POLARITY_INVERTED>;
+               pwm-supply = <&vcc5v0_sys>;
+               regulator-name = "vdd_arm";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <746000>;
+               regulator-max-microvolt = <1201000>;
+               regulator-settling-time-up-us = <250>;
+       };
+
+       vdd_logic: regulator-vdd-logic {
+               compatible = "pwm-regulator";
+               pwms = <&pwm2 0 5000 PWM_POLARITY_INVERTED>;
+               pwm-supply = <&vcc5v0_sys>;
+               regulator-name = "vdd_logic";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <705000>;
+               regulator-max-microvolt = <1006000>;
+               regulator-settling-time-up-us = <250>;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu1 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu2 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&cpu3 {
+       cpu-supply = <&vdd_arm>;
+};
+
+&gmac1 {
+       clock_in_out = "output";
+       phy-handle = <&rgmii_phy>;
+       phy-mode = "rgmii-id";
+       phy-supply = <&vcc_3v3>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmii_miim>, <&rgmii_tx_bus2>, <&rgmii_rx_bus2>,
+                   <&rgmii_rgmii_clk>, <&rgmii_rgmii_bus>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1m0_xfer>;
+       status = "okay";
+
+       eeprom@50 {
+               compatible = "belling,bl24c16a", "atmel,24c16";
+               reg = <0x50>;
+               pagesize = <16>;
+               read-only;
+               vcc-supply = <&vcc_3v3>;
+       };
+};
+
+&mdio1 {
+       rgmii_phy: ethernet-phy@1 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <0x1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gmac1_rstn_l>;
+               reset-assert-us = <20000>;
+               reset-deassert-us = <100000>;
+               reset-gpios = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &pinctrl {
+       ethernet {
+               gmac1_rstn_l: gmac1-rstn-l {
+                       rockchip,pins = <4 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
        gpio-keys {
                user_key: user-key {
                        rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
                        rockchip,pins = <4 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
+
+       sdmmc {
+               sdmmc_vol_ctrl_h: sdmmc-vol-ctrl-h {
+                       rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm1m0_pins>;
+       status = "okay";
+};
+
+&pwm2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm2m0_pins>;
+       status = "okay";
 };
 
 &saradc {
        status = "okay";
 };
 
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vccio_sd>;
+       status = "okay";
+};
+
 &uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart0m0_xfer>;
index 26c3559d6a6deb35391310911b5cb3d4139b1be3..d1c72b52aa4e66c2c20c35a6be847c711959d954 100644 (file)
                gpio2 = &gpio2;
                gpio3 = &gpio3;
                gpio4 = &gpio4;
-               serial0 = &uart0;
-               serial1 = &uart1;
-               serial2 = &uart2;
-               serial3 = &uart3;
-               serial4 = &uart4;
-               serial5 = &uart5;
-               serial6 = &uart6;
-               serial7 = &uart7;
        };
 
        cpus {
                };
        };
 
+       pinctrl: pinctrl {
+               compatible = "rockchip,rk3528-pinctrl";
+               rockchip,grf = <&ioc_grf>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gpio0: gpio@ff610000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff610000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
+                       interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl 0 0 32>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio1: gpio@ffaf0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xffaf0000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
+                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl 0 32 32>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio2: gpio@ffb00000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xffb00000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
+                       interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl 0 64 32>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio3: gpio@ffb10000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xffb10000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
+                       interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl 0 96 32>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio4: gpio@ffb20000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xffb20000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
+                       interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl 0 128 32>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+       };
+
        psci {
                compatible = "arm,psci-1.0", "arm,psci-0.2";
                method = "smc";
                        reg = <0x0 0xff280400 0x0 0x20>;
                };
 
+               vpu_grf: syscon@ff340000 {
+                       compatible = "rockchip,rk3528-vpu-grf", "syscon";
+                       reg = <0x0 0xff340000 0x0 0x8000>;
+               };
+
+               vo_grf: syscon@ff360000 {
+                       compatible = "rockchip,rk3528-vo-grf", "syscon";
+                       reg = <0x0 0xff360000 0x0 0x10000>;
+               };
+
                cru: clock-controller@ff4a0000 {
                        compatible = "rockchip,rk3528-cru";
                        reg = <0x0 0xff4a0000 0x0 0x30000>;
                        clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 8>, <&dmac 9>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 10>, <&dmac 11>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 12>, <&dmac 13>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
 
                uart3: serial@ffa08000 {
                        compatible = "rockchip,rk3528-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xffa08000 0x0 0x100>;
                        clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
                        clock-names = "baudclk", "apb_pclk";
-                       reg = <0x0 0xffa08000 0x0 0x100>;
+                       interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 14>, <&dmac 15>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 16>, <&dmac 17>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 18>, <&dmac 19>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 20>, <&dmac 21>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                        clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
                        clock-names = "baudclk", "apb_pclk";
                        interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&dmac 22>, <&dmac 23>;
                        reg-io-width = <4>;
                        reg-shift = <2>;
                        status = "disabled";
                };
 
+               i2c0: i2c@ffa50000 {
+                       compatible = "rockchip,rk3528-i2c",
+                                    "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa50000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C0>, <&cru PCLK_I2C0>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@ffa58000 {
+                       compatible = "rockchip,rk3528-i2c",
+                                    "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa58000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@ffa60000 {
+                       compatible = "rockchip,rk3528-i2c",
+                                    "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa60000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c2m1_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@ffa68000 {
+                       compatible = "rockchip,rk3528-i2c",
+                                    "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa68000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c@ffa70000 {
+                       compatible = "rockchip,rk3528-i2c",
+                                    "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa70000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c4_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c5: i2c@ffa78000 {
+                       compatible = "rockchip,rk3528-i2c",
+                                    "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa78000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c6: i2c@ffa80000 {
+                       compatible = "rockchip,rk3528-i2c",
+                                    "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa80000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C6>, <&cru PCLK_I2C6>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c7: i2c@ffa88000 {
+                       compatible = "rockchip,rk3528-i2c",
+                                    "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa88000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C7>, <&cru PCLK_I2C7>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c7_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               pwm0: pwm@ffa90000 {
+                       compatible = "rockchip,rk3528-pwm",
+                                    "rockchip,rk3328-pwm";
+                       reg = <0x0 0xffa90000 0x0 0x10>;
+                       clocks = <&cru CLK_PWM0>, <&cru PCLK_PWM0>;
+                       clock-names = "pwm", "pclk";
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm1: pwm@ffa90010 {
+                       compatible = "rockchip,rk3528-pwm",
+                                    "rockchip,rk3328-pwm";
+                       reg = <0x0 0xffa90010 0x0 0x10>;
+                       clocks = <&cru CLK_PWM0>, <&cru PCLK_PWM0>;
+                       clock-names = "pwm", "pclk";
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm2: pwm@ffa90020 {
+                       compatible = "rockchip,rk3528-pwm",
+                                    "rockchip,rk3328-pwm";
+                       reg = <0x0 0xffa90020 0x0 0x10>;
+                       clocks = <&cru CLK_PWM0>, <&cru PCLK_PWM0>;
+                       clock-names = "pwm", "pclk";
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm3: pwm@ffa90030 {
+                       compatible = "rockchip,rk3528-pwm",
+                                    "rockchip,rk3328-pwm";
+                       reg = <0x0 0xffa90030 0x0 0x10>;
+                       clocks = <&cru CLK_PWM0>, <&cru PCLK_PWM0>;
+                       clock-names = "pwm", "pclk";
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm4: pwm@ffa98000 {
+                       compatible = "rockchip,rk3528-pwm",
+                                    "rockchip,rk3328-pwm";
+                       reg = <0x0 0xffa98000 0x0 0x10>;
+                       clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+                       clock-names = "pwm", "pclk";
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm5: pwm@ffa98010 {
+                       compatible = "rockchip,rk3528-pwm",
+                                    "rockchip,rk3328-pwm";
+                       reg = <0x0 0xffa98010 0x0 0x10>;
+                       clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+                       clock-names = "pwm", "pclk";
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm6: pwm@ffa98020 {
+                       compatible = "rockchip,rk3528-pwm",
+                                    "rockchip,rk3328-pwm";
+                       reg = <0x0 0xffa98020 0x0 0x10>;
+                       clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+                       clock-names = "pwm", "pclk";
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm7: pwm@ffa98030 {
+                       compatible = "rockchip,rk3528-pwm",
+                                    "rockchip,rk3328-pwm";
+                       reg = <0x0 0xffa98030 0x0 0x10>;
+                       clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
+                       clock-names = "pwm", "pclk";
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
                saradc: adc@ffae0000 {
                        compatible = "rockchip,rk3528-saradc";
                        reg = <0x0 0xffae0000 0x0 0x10000>;
                        status = "disabled";
                };
 
+               gmac0: ethernet@ffbd0000 {
+                       compatible = "rockchip,rk3528-gmac", "snps,dwmac-4.20a";
+                       reg = <0x0 0xffbd0000 0x0 0x10000>;
+                       clocks = <&cru CLK_GMAC0_SRC>, <&cru CLK_GMAC0_RMII_50M>,
+                                <&cru CLK_GMAC0_RX>, <&cru CLK_GMAC0_TX>,
+                                <&cru PCLK_MAC_VO>, <&cru ACLK_MAC_VO>;
+                       clock-names = "stmmaceth", "clk_mac_ref",
+                                     "mac_clk_rx", "mac_clk_tx",
+                                     "pclk_mac", "aclk_mac";
+                       interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq", "eth_wake_irq";
+                       phy-handle = <&rmii0_phy>;
+                       phy-mode = "rmii";
+                       resets = <&cru SRST_A_MAC_VO>;
+                       reset-names = "stmmaceth";
+                       rockchip,grf = <&vo_grf>;
+                       snps,axi-config = <&gmac0_stmmac_axi_setup>;
+                       snps,mixed-burst;
+                       snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
+                       snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
+                       snps,tso;
+                       status = "disabled";
+
+                       mdio0: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <0x1>;
+                               #size-cells = <0x0>;
+
+                               rmii0_phy: ethernet-phy@2 {
+                                       compatible = "ethernet-phy-ieee802.3-c22";
+                                       reg = <0x2>;
+                                       clocks = <&cru CLK_MACPHY>;
+                                       phy-is-integrated;
+                                       pinctrl-names = "default";
+                                       pinctrl-0 = <&fephym0_led_link>,
+                                                   <&fephym0_led_spd>;
+                                       resets = <&cru SRST_MACPHY>;
+                               };
+                       };
+
+                       gmac0_stmmac_axi_setup: stmmac-axi-config {
+                               snps,blen = <0 0 0 0 16 8 4>;
+                               snps,rd_osr_lmt = <8>;
+                               snps,wr_osr_lmt = <4>;
+                       };
+
+                       gmac0_mtl_rx_setup: rx-queues-config {
+                               snps,rx-queues-to-use = <1>;
+                               queue0 {};
+                       };
+
+                       gmac0_mtl_tx_setup: tx-queues-config {
+                               snps,tx-queues-to-use = <1>;
+                               queue0 {};
+                       };
+               };
+
+               gmac1: ethernet@ffbe0000 {
+                       compatible = "rockchip,rk3528-gmac", "snps,dwmac-4.20a";
+                       reg = <0x0 0xffbe0000 0x0 0x10000>;
+                       clocks = <&cru CLK_GMAC1_SRC_VPU>,
+                                <&cru CLK_GMAC1_RMII_VPU>,
+                                <&cru PCLK_MAC_VPU>,
+                                <&cru ACLK_MAC_VPU>;
+                       clock-names = "stmmaceth",
+                                     "clk_mac_ref",
+                                     "pclk_mac",
+                                     "aclk_mac";
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq", "eth_wake_irq";
+                       resets = <&cru SRST_A_MAC>;
+                       reset-names = "stmmaceth";
+                       rockchip,grf = <&vpu_grf>;
+                       snps,axi-config = <&gmac1_stmmac_axi_setup>;
+                       snps,mixed-burst;
+                       snps,mtl-rx-config = <&gmac1_mtl_rx_setup>;
+                       snps,mtl-tx-config = <&gmac1_mtl_tx_setup>;
+                       snps,tso;
+                       status = "disabled";
+
+                       mdio1: mdio {
+                               compatible = "snps,dwmac-mdio";
+                               #address-cells = <0x1>;
+                               #size-cells = <0x0>;
+                       };
+
+                       gmac1_stmmac_axi_setup: stmmac-axi-config {
+                               snps,blen = <0 0 0 0 16 8 4>;
+                               snps,rd_osr_lmt = <8>;
+                               snps,wr_osr_lmt = <4>;
+                       };
+
+                       gmac1_mtl_rx_setup: rx-queues-config {
+                               snps,rx-queues-to-use = <1>;
+                               queue0 {};
+                       };
+
+                       gmac1_mtl_tx_setup: tx-queues-config {
+                               snps,tx-queues-to-use = <1>;
+                               queue0 {};
+                       };
+               };
+
                sdhci: mmc@ffbf0000 {
                        compatible = "rockchip,rk3528-dwcmshc",
                                     "rockchip,rk3588-dwcmshc";
                        status = "disabled";
                };
 
-               pinctrl: pinctrl {
-                       compatible = "rockchip,rk3528-pinctrl";
-                       rockchip,grf = <&ioc_grf>;
-                       #address-cells = <2>;
-                       #size-cells = <2>;
-                       ranges;
-
-                       gpio0: gpio@ff610000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0xff610000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
-                               interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&pinctrl 0 0 32>;
-                               interrupt-controller;
-                               #interrupt-cells = <2>;
-                       };
-
-                       gpio1: gpio@ffaf0000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0xffaf0000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
-                               interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&pinctrl 0 32 32>;
-                               interrupt-controller;
-                               #interrupt-cells = <2>;
-                       };
+               sdio0: mmc@ffc10000 {
+                       compatible = "rockchip,rk3528-dw-mshc",
+                                    "rockchip,rk3288-dw-mshc";
+                       reg = <0x0 0xffc10000 0x0 0x4000>;
+                       clocks = <&cru HCLK_SDIO0>,
+                                <&cru CCLK_SRC_SDIO0>,
+                                <&cru SCLK_SDIO0_DRV>,
+                                <&cru SCLK_SDIO0_SAMPLE>;
+                       clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+                       fifo-depth = <0x100>;
+                       interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
+                       max-frequency = <200000000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sdio0_bus4>, <&sdio0_clk>, <&sdio0_cmd>;
+                       resets = <&cru SRST_H_SDIO0>;
+                       reset-names = "reset";
+                       status = "disabled";
+               };
 
-                       gpio2: gpio@ffb00000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0xffb00000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
-                               interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&pinctrl 0 64 32>;
-                               interrupt-controller;
-                               #interrupt-cells = <2>;
-                       };
+               sdio1: mmc@ffc20000 {
+                       compatible = "rockchip,rk3528-dw-mshc",
+                                    "rockchip,rk3288-dw-mshc";
+                       reg = <0x0 0xffc20000 0x0 0x4000>;
+                       clocks = <&cru HCLK_SDIO1>,
+                                <&cru CCLK_SRC_SDIO1>,
+                                <&cru SCLK_SDIO1_DRV>,
+                                <&cru SCLK_SDIO1_SAMPLE>;
+                       clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+                       fifo-depth = <0x100>;
+                       interrupts = <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
+                       max-frequency = <200000000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sdio1_bus4>, <&sdio1_clk>, <&sdio1_cmd>;
+                       resets = <&cru SRST_H_SDIO1>;
+                       reset-names = "reset";
+                       status = "disabled";
+               };
 
-                       gpio3: gpio@ffb10000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0xffb10000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
-                               interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&pinctrl 0 96 32>;
-                               interrupt-controller;
-                               #interrupt-cells = <2>;
-                       };
+               sdmmc: mmc@ffc30000 {
+                       compatible = "rockchip,rk3528-dw-mshc",
+                                    "rockchip,rk3288-dw-mshc";
+                       reg = <0x0 0xffc30000 0x0 0x4000>;
+                       clocks = <&cru HCLK_SDMMC0>,
+                                <&cru CCLK_SRC_SDMMC0>,
+                                <&cru SCLK_SDMMC_DRV>,
+                                <&cru SCLK_SDMMC_SAMPLE>;
+                       clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+                       fifo-depth = <0x100>;
+                       interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       max-frequency = <150000000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sdmmc_bus4>, <&sdmmc_clk>, <&sdmmc_cmd>,
+                                   <&sdmmc_det>;
+                       resets = <&cru SRST_H_SDMMC0>;
+                       reset-names = "reset";
+                       rockchip,default-sample-phase = <90>;
+                       status = "disabled";
+               };
 
-                       gpio4: gpio@ffb20000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0xffb20000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
-                               interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
-                               gpio-controller;
-                               #gpio-cells = <2>;
-                               gpio-ranges = <&pinctrl 0 128 32>;
-                               interrupt-controller;
-                               #interrupt-cells = <2>;
-                       };
+               dmac: dma-controller@ffd60000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       reg = <0x0 0xffd60000 0x0 0x4000>;
+                       clocks = <&cru ACLK_DMAC>;
+                       clock-names = "apb_pclk";
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       arm,pl330-periph-burst;
                };
        };
 };
diff --git a/src/arm64/rockchip/rk3562-evb2-v10.dts b/src/arm64/rockchip/rk3562-evb2-v10.dts
new file mode 100644 (file)
index 0000000..6a84db1
--- /dev/null
@@ -0,0 +1,456 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2024-2025 Rockchip Electronics Co., Ltd.
+ *
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include "rk3562.dtsi"
+
+/ {
+       model = "Rockchip RK3562 EVB V20 Board";
+       compatible = "rockchip,rk3562-evb2-v10", "rockchip,rk3562";
+
+       chosen: chosen {
+               stdout-path = "serial0:1500000n8";
+       };
+
+       adc_keys: adc-keys {
+               compatible = "adc-keys";
+               io-channels = <&saradc0 1>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <1800000>;
+               poll-interval = <100>;
+
+               button-vol-up {
+                       linux,code = <KEY_VOLUMEUP>;
+                       label = "volume up";
+                       press-threshold-microvolt = <17000>;
+               };
+
+               button-vol-down {
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       label = "volume down";
+                       press-threshold-microvolt = <414000>;
+               };
+
+               button-menu {
+                       linux,code = <KEY_MENU>;
+                       label = "menu";
+                       press-threshold-microvolt = <800000>;
+               };
+
+               button-back {
+                       linux,code = <KEY_BACK>;
+                       label = "back";
+                       press-threshold-microvolt = <1200000>;
+               };
+       };
+
+       leds: leds {
+               compatible = "gpio-leds";
+
+               work_led: led-0 {
+                       gpios = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&rk809 1>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_enable_h>;
+
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card populated):
+                * - SDIO_RESET_L_WL_REG_ON
+                * - PDN (power down when low)
+                */
+               post-power-on-delay-ms = <200>;
+               reset-gpios = <&gpio0 RK_PB3 GPIO_ACTIVE_LOW>;
+       };
+
+       vcc12v_dcin: regulator-vcc12v-dcin {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc12v_dcin";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+       };
+
+       vcc3v3_pcie20: regulator-vcc3v3-pcie20 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_pcie20";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               enable-active-high;
+               gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_sys: regulator-vcc5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_usb: regulator-vcc5v0-usb {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_usb";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_usb_host: regulator-vcc5v0-usb-host {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_usb_host";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
+               vin-supply = <&vcc5v0_usb>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_host_pwren>;
+       };
+
+       vcc5v0_usb_otg: regulator-vcc5v0-usb-otg {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_usb_otg";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
+               vin-supply = <&vcc5v0_usb>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usb_otg_pwren>;
+       };
+
+       vcc3v3_clk: regulator-vcc3v3-clk {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_clk";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc3v3_sys: regulator-vcc-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+};
+
+&combphy {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       rk809: pmic@20 {
+               compatible = "rockchip,rk809";
+               reg = <0x20>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-names = "default", "pmic-sleep",
+                       "pmic-power-off", "pmic-reset";
+               pinctrl-0 = <&pmic_int>;
+               rockchip,system-power-controller;
+               wakeup-source;
+               #clock-cells = <1>;
+               clock-output-names = "rk808-clkout1", "rk808-clkout2";
+
+               vcc1-supply = <&vcc3v3_sys>;
+               vcc2-supply = <&vcc3v3_sys>;
+               vcc3-supply = <&vcc3v3_sys>;
+               vcc4-supply = <&vcc3v3_sys>;
+               vcc5-supply = <&vcc3v3_sys>;
+               vcc6-supply = <&vcc3v3_sys>;
+               vcc7-supply = <&vcc3v3_sys>;
+               vcc8-supply = <&vcc3v3_sys>;
+               vcc9-supply = <&vcc3v3_sys>;
+
+               regulators {
+                       vdd_logic: DCDC_REG1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vdd_logic";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu: DCDC_REG2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vdd_cpu";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vcc_ddr";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vdd_gpu: DCDC_REG4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <500000>;
+                               regulator-max-microvolt = <1350000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-initial-mode = <0x2>;
+                               regulator-name = "vdd_gpu";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc2v8_dvp: LDO_REG1 {
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-name = "vcc2v8_dvp";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda_0v9: LDO_REG2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdda_0v9";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdda0v9_pmu: LDO_REG3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdda0v9_pmu";
+                               regulator-state-mem {
+                               regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <900000>;
+                               };
+                       };
+
+                       vccio_acodec: LDO_REG4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3000000>;
+                               regulator-max-microvolt = <3000000>;
+                               regulator-name = "vccio_acodec";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vccio_sd: LDO_REG5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vccio_sd";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc3v3_pmu: LDO_REG6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc3v3_pmu";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vcca_1v8: LDO_REG7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca_1v8";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcca1v8_pmu: LDO_REG8 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcca1v8_pmu";
+                               regulator-state-mem {
+                               regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc1v8_dvp: LDO_REG9 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc1v8_dvp";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8: DCDC_REG5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc_1v8";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3: SWITCH_REG1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vcc_3v3";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc3v3_sd: SWITCH_REG2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vcc3v3_sd";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&pcie2x1 {
+       reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie20>;
+       status = "okay";
+};
+
+&pinctrl {
+       sdio-pwrseq {
+               wifi_enable_h: wifi-enable-h {
+                       rockchip,pins = <0 RK_PB3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               usb_host_pwren: usb-host-pwren {
+                       rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usb_otg_pwren: usb-otg-pwren {
+                       rockchip,pins = <0 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&saradc0 {
+       vref-supply = <&vcc_1v8>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       full-pwr-cycle-in-suspend;
+       status = "okay";
+};
+
+&sdmmc0 {
+       no-sdio;
+       no-mmc;
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       disable-wp;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc3v3_sd>;
+       vqmmc-supply = <&vccio_sd>;
+       status = "okay";
+};
+
+&sdmmc1 {
+       no-sd;
+       no-mmc;
+       bus-width = <4>;
+       disable-wp;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>;
+       sd-uhs-sdr104;
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>;
+       status = "okay";
+};
diff --git a/src/arm64/rockchip/rk3562-pinctrl.dtsi b/src/arm64/rockchip/rk3562-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..b311448
--- /dev/null
@@ -0,0 +1,2352 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
+ */
+
+#include <dt-bindings/pinctrl/rockchip.h>
+#include "rockchip-pinconf.dtsi"
+
+/*
+ * This file is auto generated by pin2dts tool, please keep these code
+ * by adding changes at end of this file.
+ */
+&pinctrl {
+       cam {
+               /omit-if-no-ref/
+               camm0_clk0_out: camm0-clk0-out {
+                       rockchip,pins =
+                               /* camm0_clk0_out */
+                               <3 RK_PB2 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               camm0_clk1_out: camm0-clk1-out {
+                       rockchip,pins =
+                               /* camm0_clk1_out */
+                               <3 RK_PB3 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               camm1_clk0_out: camm1-clk0-out {
+                       rockchip,pins =
+                               /* camm1_clk0_out */
+                               <4 RK_PB1 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               camm1_clk1_out: camm1-clk1-out {
+                       rockchip,pins =
+                               /* camm1_clk1_out */
+                               <4 RK_PB7 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               cam_clk2_out: cam-clk2-out {
+                       rockchip,pins =
+                               /* cam_clk2_out */
+                               <3 RK_PB4 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               cam_clk3_out: cam-clk3-out {
+                       rockchip,pins =
+                               /* cam_clk3_out */
+                               <3 RK_PB5 2 &pcfg_pull_none>;
+               };
+       };
+
+       can0 {
+               /omit-if-no-ref/
+               can0m0_pins: can0m0-pins {
+                       rockchip,pins =
+                               /* can0_rx_m0 */
+                               <3 RK_PA1 4 &pcfg_pull_none>,
+                               /* can0_tx_m0 */
+                               <3 RK_PA0 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               can0m1_pins: can0m1-pins {
+                       rockchip,pins =
+                               /* can0_rx_m1 */
+                               <3 RK_PB7 6 &pcfg_pull_none>,
+                               /* can0_tx_m1 */
+                               <3 RK_PB6 6 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               can0m2_pins: can0m2-pins {
+                       rockchip,pins =
+                               /* can0_rx_m2 */
+                               <0 RK_PC7 2 &pcfg_pull_none>,
+                               /* can0_tx_m2 */
+                               <0 RK_PC6 2 &pcfg_pull_none>;
+               };
+       };
+
+       can1 {
+               /omit-if-no-ref/
+               can1m0_pins: can1m0-pins {
+                       rockchip,pins =
+                               /* can1_rx_m0 */
+                               <1 RK_PB7 4 &pcfg_pull_none>,
+                               /* can1_tx_m0 */
+                               <1 RK_PC0 5 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               can1m1_pins: can1m1-pins {
+                       rockchip,pins =
+                               /* can1_rx_m1 */
+                               <0 RK_PC1 4 &pcfg_pull_none>,
+                               /* can1_tx_m1 */
+                               <0 RK_PC0 4 &pcfg_pull_none>;
+               };
+       };
+
+       clk {
+               /omit-if-no-ref/
+               clk_32k_in: clk-32k-in {
+                       rockchip,pins =
+                               /* clk_32k_in */
+                               <0 RK_PB0 1 &pcfg_pull_none>;
+               };
+       };
+
+       clk0 {
+               /omit-if-no-ref/
+               clk0_32k_out: clk0-32k-out {
+                       rockchip,pins =
+                               /* clk0_32k_out */
+                               <0 RK_PB0 2 &pcfg_pull_none>;
+               };
+       };
+
+       clk1 {
+               /omit-if-no-ref/
+               clk1_32k_out: clk1-32k-out {
+                       rockchip,pins =
+                               /* clk1_32k_out */
+                               <2 RK_PA1 3 &pcfg_pull_none>;
+               };
+       };
+
+       cpu {
+               /omit-if-no-ref/
+               cpu_pins: cpu-pins {
+                       rockchip,pins =
+                               /* cpu_avs */
+                               <0 RK_PB7 3 &pcfg_pull_none>;
+               };
+       };
+
+       dsm {
+               /omit-if-no-ref/
+               dsm_pins: dsm-pins {
+                       rockchip,pins =
+                               /* dsm_aud_ln */
+                               <1 RK_PB4 5 &pcfg_pull_none>,
+                               /* dsm_aud_lp */
+                               <1 RK_PB3 5 &pcfg_pull_none>,
+                               /* dsm_aud_rn */
+                               <1 RK_PB6 6 &pcfg_pull_none>,
+                               /* dsm_aud_rp */
+                               <1 RK_PB5 6 &pcfg_pull_none>;
+               };
+       };
+
+       emmc {
+               /omit-if-no-ref/
+               emmc_bus8: emmc-bus8 {
+                       rockchip,pins =
+                               /* emmc_d0 */
+                               <1 RK_PA0 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d1 */
+                               <1 RK_PA1 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d2 */
+                               <1 RK_PA2 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d3 */
+                               <1 RK_PA3 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d4 */
+                               <1 RK_PA4 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d5 */
+                               <1 RK_PA5 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d6 */
+                               <1 RK_PA6 1 &pcfg_pull_up_drv_level_2>,
+                               /* emmc_d7 */
+                               <1 RK_PA7 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               emmc_clk: emmc-clk {
+                       rockchip,pins =
+                               /* emmc_clk */
+                               <1 RK_PB1 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               emmc_cmd: emmc-cmd {
+                       rockchip,pins =
+                               /* emmc_cmd */
+                               <1 RK_PB0 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               emmc_strb: emmc-strb {
+                       rockchip,pins =
+                               /* emmc_strb */
+                               <1 RK_PB2 1 &pcfg_pull_none>;
+               };
+       };
+
+       eth {
+               /omit-if-no-ref/
+               ethm0_pins: ethm0-pins {
+                       rockchip,pins =
+                               /* eth_clk_25m_out_m0 */
+                               <4 RK_PB1 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               ethm1_pins: ethm1-pins {
+                       rockchip,pins =
+                               /* eth_clk_25m_out_m1 */
+                               <2 RK_PA1 2 &pcfg_pull_none>;
+               };
+       };
+
+       fspi {
+               /omit-if-no-ref/
+               fspi_pins: fspi-pins {
+                       rockchip,pins =
+                               /* fspi_clk */
+                               <1 RK_PB1 2 &pcfg_pull_none>,
+                               /* fspi_d0 */
+                               <1 RK_PA0 2 &pcfg_pull_none>,
+                               /* fspi_d1 */
+                               <1 RK_PA1 2 &pcfg_pull_none>,
+                               /* fspi_d2 */
+                               <1 RK_PA2 2 &pcfg_pull_none>,
+                               /* fspi_d3 */
+                               <1 RK_PA3 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               fspi_csn0: fspi-csn0 {
+                       rockchip,pins =
+                               /* fspi_csn0 */
+                               <1 RK_PB0 2 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               fspi_csn1: fspi-csn1 {
+                       rockchip,pins =
+                               /* fspi_csn1 */
+                               <1 RK_PB2 2 &pcfg_pull_none>;
+               };
+       };
+
+       gpu {
+               /omit-if-no-ref/
+               gpu_pins: gpu-pins {
+                       rockchip,pins =
+                               /* gpu_avs */
+                               <0 RK_PC0 3 &pcfg_pull_none>;
+               };
+       };
+
+       i2c0 {
+               /omit-if-no-ref/
+               i2c0_xfer: i2c0-xfer {
+                       rockchip,pins =
+                               /* i2c0_scl */
+                               <0 RK_PB1 1 &pcfg_pull_none_smt>,
+                               /* i2c0_sda */
+                               <0 RK_PB2 1 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c1 {
+               /omit-if-no-ref/
+               i2c1m0_xfer: i2c1m0-xfer {
+                       rockchip,pins =
+                               /* i2c1_scl_m0 */
+                               <0 RK_PB3 1 &pcfg_pull_none_smt>,
+                               /* i2c1_sda_m0 */
+                               <0 RK_PB4 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c1m1_xfer: i2c1m1-xfer {
+                       rockchip,pins =
+                               /* i2c1_scl_m1 */
+                               <4 RK_PB4 5 &pcfg_pull_none_smt>,
+                               /* i2c1_sda_m1 */
+                               <4 RK_PB5 5 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c2 {
+               /omit-if-no-ref/
+               i2c2m0_xfer: i2c2m0-xfer {
+                       rockchip,pins =
+                               /* i2c2_scl_m0 */
+                               <0 RK_PB5 1 &pcfg_pull_none_smt>,
+                               /* i2c2_sda_m0 */
+                               <0 RK_PB6 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c2m1_xfer: i2c2m1-xfer {
+                       rockchip,pins =
+                               /* i2c2_scl_m1 */
+                               <3 RK_PD2 5 &pcfg_pull_none_smt>,
+                               /* i2c2_sda_m1 */
+                               <3 RK_PD3 5 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c3 {
+               /omit-if-no-ref/
+               i2c3m0_xfer: i2c3m0-xfer {
+                       rockchip,pins =
+                               /* i2c3_scl_m0 */
+                               <3 RK_PA0 1 &pcfg_pull_none_smt>,
+                               /* i2c3_sda_m0 */
+                               <3 RK_PA1 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c3m1_xfer: i2c3m1-xfer {
+                       rockchip,pins =
+                               /* i2c3_scl_m1 */
+                               <4 RK_PA5 5 &pcfg_pull_none_smt>,
+                               /* i2c3_sda_m1 */
+                               <4 RK_PA6 5 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c4 {
+               /omit-if-no-ref/
+               i2c4m0_xfer: i2c4m0-xfer {
+                       rockchip,pins =
+                               /* i2c4_scl_m0 */
+                               <3 RK_PB6 5 &pcfg_pull_none_smt>,
+                               /* i2c4_sda_m0 */
+                               <3 RK_PB7 5 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c4m1_xfer: i2c4m1-xfer {
+                       rockchip,pins =
+                               /* i2c4_scl_m1 */
+                               <0 RK_PA5 2 &pcfg_pull_none_smt>,
+                               /* i2c4_sda_m1 */
+                               <0 RK_PA4 2 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2c5 {
+               /omit-if-no-ref/
+               i2c5m0_xfer: i2c5m0-xfer {
+                       rockchip,pins =
+                               /* i2c5_scl_m0 */
+                               <3 RK_PC2 1 &pcfg_pull_none_smt>,
+                               /* i2c5_sda_m0 */
+                               <3 RK_PC3 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2c5m1_xfer: i2c5m1-xfer {
+                       rockchip,pins =
+                               /* i2c5_scl_m1 */
+                               <1 RK_PC7 4 &pcfg_pull_none_smt>,
+                               /* i2c5_sda_m1 */
+                               <1 RK_PD0 4 &pcfg_pull_none_smt>;
+               };
+       };
+
+       i2s0 {
+               /omit-if-no-ref/
+               i2s0m0_lrck: i2s0m0-lrck {
+                       rockchip,pins =
+                               /* i2s0_lrck_m0 */
+                               <3 RK_PA4 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_mclk: i2s0m0-mclk {
+                       rockchip,pins =
+                               /* i2s0_mclk_m0 */
+                               <3 RK_PA2 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sclk: i2s0m0-sclk {
+                       rockchip,pins =
+                               /* i2s0_sclk_m0 */
+                               <3 RK_PA3 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdi0: i2s0m0-sdi0 {
+                       rockchip,pins =
+                               /* i2s0_sdi0_m0 */
+                               <3 RK_PB1 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdi1: i2s0m0-sdi1 {
+                       rockchip,pins =
+                               /* i2s0_sdi1_m0 */
+                               <3 RK_PB0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdi2: i2s0m0-sdi2 {
+                       rockchip,pins =
+                               /* i2s0_sdi2_m0 */
+                               <3 RK_PA7 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdi3: i2s0m0-sdi3 {
+                       rockchip,pins =
+                               /* i2s0_sdi3_m0 */
+                               <3 RK_PA6 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdo0: i2s0m0-sdo0 {
+                       rockchip,pins =
+                               /* i2s0_sdo0_m0 */
+                               <3 RK_PA5 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdo1: i2s0m0-sdo1 {
+                       rockchip,pins =
+                               /* i2s0_sdo1_m0 */
+                               <3 RK_PA6 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdo2: i2s0m0-sdo2 {
+                       rockchip,pins =
+                               /* i2s0_sdo2_m0 */
+                               <3 RK_PA7 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m0_sdo3: i2s0m0-sdo3 {
+                       rockchip,pins =
+                               /* i2s0_sdo3_m0 */
+                               <3 RK_PB0 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_lrck: i2s0m1-lrck {
+                       rockchip,pins =
+                               /* i2s0_lrck_m1 */
+                               <1 RK_PC4 3 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_mclk: i2s0m1-mclk {
+                       rockchip,pins =
+                               /* i2s0_mclk_m1 */
+                               <1 RK_PC6 3 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sclk: i2s0m1-sclk {
+                       rockchip,pins =
+                               /* i2s0_sclk_m1 */
+                               <1 RK_PC5 3 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdi0: i2s0m1-sdi0 {
+                       rockchip,pins =
+                               /* i2s0_sdi0_m1 */
+                               <1 RK_PC1 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdi1: i2s0m1-sdi1 {
+                       rockchip,pins =
+                               /* i2s0_sdi1_m1 */
+                               <1 RK_PC2 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdi2: i2s0m1-sdi2 {
+                       rockchip,pins =
+                               /* i2s0_sdi2_m1 */
+                               <1 RK_PD3 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdi3: i2s0m1-sdi3 {
+                       rockchip,pins =
+                               /* i2s0_sdi3_m1 */
+                               <1 RK_PD4 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdo0: i2s0m1-sdo0 {
+                       rockchip,pins =
+                               /* i2s0_sdo0_m1 */
+                               <1 RK_PC3 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdo1: i2s0m1-sdo1 {
+                       rockchip,pins =
+                               /* i2s0_sdo1_m1 */
+                               <1 RK_PD1 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdo2: i2s0m1-sdo2 {
+                       rockchip,pins =
+                               /* i2s0_sdo2_m1 */
+                               <1 RK_PD2 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s0m1_sdo3: i2s0m1-sdo3 {
+                       rockchip,pins =
+                               /* i2s0_sdo3_m1 */
+                               <2 RK_PA1 5 &pcfg_pull_none>;
+               };
+       };
+
+       i2s1 {
+               /omit-if-no-ref/
+               i2s1m0_lrck: i2s1m0-lrck {
+                       rockchip,pins =
+                               /* i2s1_lrck_m0 */
+                               <3 RK_PC6 2 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_mclk: i2s1m0-mclk {
+                       rockchip,pins =
+                               /* i2s1_mclk_m0 */
+                               <3 RK_PC4 2 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sclk: i2s1m0-sclk {
+                       rockchip,pins =
+                               /* i2s1_sclk_m0 */
+                               <3 RK_PC5 2 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sdi0: i2s1m0-sdi0 {
+                       rockchip,pins =
+                               /* i2s1_sdi0_m0 */
+                               <3 RK_PD0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sdi1: i2s1m0-sdi1 {
+                       rockchip,pins =
+                               /* i2s1_sdi1_m0 */
+                               <3 RK_PD1 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sdi2: i2s1m0-sdi2 {
+                       rockchip,pins =
+                               /* i2s1_sdi2_m0 */
+                               <3 RK_PD2 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sdi3: i2s1m0-sdi3 {
+                       rockchip,pins =
+                               /* i2s1_sdi3_m0 */
+                               <3 RK_PD3 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sdo0: i2s1m0-sdo0 {
+                       rockchip,pins =
+                               /* i2s1_sdo0_m0 */
+                               <3 RK_PC7 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sdo1: i2s1m0-sdo1 {
+                       rockchip,pins =
+                               /* i2s1_sdo1_m0 */
+                               <4 RK_PB4 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sdo2: i2s1m0-sdo2 {
+                       rockchip,pins =
+                               /* i2s1_sdo2_m0 */
+                               <4 RK_PB5 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m0_sdo3: i2s1m0-sdo3 {
+                       rockchip,pins =
+                               /* i2s1_sdo3_m0 */
+                               <4 RK_PB6 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_lrck: i2s1m1-lrck {
+                       rockchip,pins =
+                               /* i2s1_lrck_m1 */
+                               <3 RK_PB4 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_mclk: i2s1m1-mclk {
+                       rockchip,pins =
+                               /* i2s1_mclk_m1 */
+                               <3 RK_PB2 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sclk: i2s1m1-sclk {
+                       rockchip,pins =
+                               /* i2s1_sclk_m1 */
+                               <3 RK_PB3 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sdi0: i2s1m1-sdi0 {
+                       rockchip,pins =
+                               /* i2s1_sdi0_m1 */
+                               <3 RK_PC1 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sdi1: i2s1m1-sdi1 {
+                       rockchip,pins =
+                               /* i2s1_sdi1_m1 */
+                               <3 RK_PC0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sdi2: i2s1m1-sdi2 {
+                       rockchip,pins =
+                               /* i2s1_sdi2_m1 */
+                               <3 RK_PB7 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sdi3: i2s1m1-sdi3 {
+                       rockchip,pins =
+                               /* i2s1_sdi3_m1 */
+                               <3 RK_PB6 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sdo0: i2s1m1-sdo0 {
+                       rockchip,pins =
+                               /* i2s1_sdo0_m1 */
+                               <3 RK_PB5 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sdo1: i2s1m1-sdo1 {
+                       rockchip,pins =
+                               /* i2s1_sdo1_m1 */
+                               <3 RK_PB6 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sdo2: i2s1m1-sdo2 {
+                       rockchip,pins =
+                               /* i2s1_sdo2_m1 */
+                               <3 RK_PB7 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s1m1_sdo3: i2s1m1-sdo3 {
+                       rockchip,pins =
+                               /* i2s1_sdo3_m1 */
+                               <3 RK_PC0 1 &pcfg_pull_none>;
+               };
+       };
+
+       i2s2 {
+               /omit-if-no-ref/
+               i2s2m0_lrck: i2s2m0-lrck {
+                       rockchip,pins =
+                               /* i2s2_lrck_m0 */
+                               <1 RK_PD6 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m0_mclk: i2s2m0-mclk {
+                       rockchip,pins =
+                               /* i2s2_mclk_m0 */
+                               <2 RK_PA1 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m0_sclk: i2s2m0-sclk {
+                       rockchip,pins =
+                               /* i2s2_sclk_m0 */
+                               <1 RK_PD5 1 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m0_sdi: i2s2m0-sdi {
+                       rockchip,pins =
+                               /* i2s2_sdi_m0 */
+                               <2 RK_PA0 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m0_sdo: i2s2m0-sdo {
+                       rockchip,pins =
+                               /* i2s2_sdo_m0 */
+                               <1 RK_PD7 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m1_lrck: i2s2m1-lrck {
+                       rockchip,pins =
+                               /* i2s2_lrck_m1 */
+                               <4 RK_PA1 3 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m1_mclk: i2s2m1-mclk {
+                       rockchip,pins =
+                               /* i2s2_mclk_m1 */
+                               <3 RK_PD6 3 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m1_sclk: i2s2m1-sclk {
+                       rockchip,pins =
+                               /* i2s2_sclk_m1 */
+                               <4 RK_PB1 4 &pcfg_pull_none_smt>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m1_sdi: i2s2m1-sdi {
+                       rockchip,pins =
+                               /* i2s2_sdi_m1 */
+                               <3 RK_PD4 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               i2s2m1_sdo: i2s2m1-sdo {
+                       rockchip,pins =
+                               /* i2s2_sdo_m1 */
+                               <3 RK_PD5 4 &pcfg_pull_none>;
+               };
+       };
+
+       isp {
+               /omit-if-no-ref/
+               isp_pins: isp-pins {
+                       rockchip,pins =
+                               /* isp_flash_trigin */
+                               <3 RK_PC1 2 &pcfg_pull_none>,
+                               /* isp_flash_trigout */
+                               <3 RK_PC3 2 &pcfg_pull_none>,
+                               /* isp_prelight_trigout */
+                               <3 RK_PC2 2 &pcfg_pull_none>;
+               };
+       };
+
+       jtag {
+               /omit-if-no-ref/
+               jtagm0_pins: jtagm0-pins {
+                       rockchip,pins =
+                               /* jtag_cpu_mcu_tck_m0 */
+                               <0 RK_PD1 2 &pcfg_pull_none>,
+                               /* jtag_cpu_mcu_tms_m0 */
+                               <0 RK_PD0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               jtagm1_pins: jtagm1-pins {
+                       rockchip,pins =
+                               /* jtag_cpu_mcu_tck_m1 */
+                               <1 RK_PB5 2 &pcfg_pull_none>,
+                               /* jtag_cpu_mcu_tms_m1 */
+                               <1 RK_PB6 2 &pcfg_pull_none>;
+               };
+       };
+
+       npu {
+               /omit-if-no-ref/
+               npu_pins: npu-pins {
+                       rockchip,pins =
+                               /* npu_avs */
+                               <0 RK_PC1 3 &pcfg_pull_none>;
+               };
+       };
+
+       pcie20 {
+               /omit-if-no-ref/
+               pcie20m0_pins: pcie20m0-pins {
+                       rockchip,pins =
+                               /* pcie20_clkreqn_m0 */
+                               <0 RK_PA6 1 &pcfg_pull_none>,
+                               /* pcie20_perstn_m0 */
+                               <0 RK_PB5 2 &pcfg_pull_none>,
+                               /* pcie20_waken_m0 */
+                               <0 RK_PB6 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pcie20m1_pins: pcie20m1-pins {
+                       rockchip,pins =
+                               /* pcie20_clkreqn_m1 */
+                               <3 RK_PA6 4 &pcfg_pull_none>,
+                               /* pcie20_perstn_m1 */
+                               <3 RK_PB0 4 &pcfg_pull_none>,
+                               /* pcie20_waken_m1 */
+                               <3 RK_PA7 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pcie20_buttonrstn: pcie20-buttonrstn {
+                       rockchip,pins =
+                               /* pcie20_buttonrstn */
+                               <0 RK_PB0 3 &pcfg_pull_none>;
+               };
+       };
+
+       pdm {
+               /omit-if-no-ref/
+               pdmm0_clk0: pdmm0-clk0 {
+                       rockchip,pins =
+                               /* pdm_clk0_m0 */
+                               <3 RK_PA6 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm0_clk1: pdmm0-clk1 {
+                       rockchip,pins =
+                               /* pdm_clk1_m0 */
+                               <3 RK_PA2 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm0_sdi0: pdmm0-sdi0 {
+                       rockchip,pins =
+                               /* pdm_sdi0_m0 */
+                               <3 RK_PB1 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm0_sdi1: pdmm0-sdi1 {
+                       rockchip,pins =
+                               /* pdm_sdi1_m0 */
+                               <3 RK_PB0 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm0_sdi2: pdmm0-sdi2 {
+                       rockchip,pins =
+                               /* pdm_sdi2_m0 */
+                               <3 RK_PA7 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm0_sdi3: pdmm0-sdi3 {
+                       rockchip,pins =
+                               /* pdm_sdi3_m0 */
+                               <3 RK_PA0 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm1_clk0: pdmm1-clk0 {
+                       rockchip,pins =
+                               /* pdm_clk0_m1 */
+                               <4 RK_PB7 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm1_clk1: pdmm1-clk1 {
+                       rockchip,pins =
+                               /* pdm_clk1_m1 */
+                               <4 RK_PB1 5 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm1_sdi0: pdmm1-sdi0 {
+                       rockchip,pins =
+                               /* pdm_sdi0_m1 */
+                               <4 RK_PA7 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm1_sdi1: pdmm1-sdi1 {
+                       rockchip,pins =
+                               /* pdm_sdi1_m1 */
+                               <4 RK_PB0 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm1_sdi2: pdmm1-sdi2 {
+                       rockchip,pins =
+                               /* pdm_sdi2_m1 */
+                               <4 RK_PA5 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               pdmm1_sdi3: pdmm1-sdi3 {
+                       rockchip,pins =
+                               /* pdm_sdi3_m1 */
+                               <4 RK_PA6 4 &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               /omit-if-no-ref/
+               pmic_int: pmic-int {
+                       rockchip,pins =
+                               <0 RK_PA3 0 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               soc_slppin_gpio: soc-slppin-gpio {
+                       rockchip,pins =
+                               <0 RK_PA2 0 &pcfg_output_low>;
+               };
+
+               /omit-if-no-ref/
+               soc_slppin_slp: soc-slppin-slp {
+                       rockchip,pins =
+                               <0 RK_PA2 1 &pcfg_pull_none>;
+               };
+       };
+
+       pmu {
+               /omit-if-no-ref/
+               pmu_pins: pmu-pins {
+                       rockchip,pins =
+                               /* pmu_debug */
+                               <0 RK_PA5 3 &pcfg_pull_none>;
+               };
+       };
+
+       pwm0 {
+               /omit-if-no-ref/
+               pwm0m0_pins: pwm0m0-pins {
+                       rockchip,pins =
+                               /* pwm0_m0 */
+                               <0 RK_PC3 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm0m1_pins: pwm0m1-pins {
+                       rockchip,pins =
+                               /* pwm0_m1 */
+                               <1 RK_PC5 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm1 {
+               /omit-if-no-ref/
+               pwm1m0_pins: pwm1m0-pins {
+                       rockchip,pins =
+                               /* pwm1_m0 */
+                               <0 RK_PC4 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm1m1_pins: pwm1m1-pins {
+                       rockchip,pins =
+                               /* pwm1_m1 */
+                               <1 RK_PC6 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm2 {
+               /omit-if-no-ref/
+               pwm2m0_pins: pwm2m0-pins {
+                       rockchip,pins =
+                               /* pwm2_m0 */
+                               <0 RK_PC5 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm2m1_pins: pwm2m1-pins {
+                       rockchip,pins =
+                               /* pwm2_m1 */
+                               <1 RK_PC7 3 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm3 {
+               /omit-if-no-ref/
+               pwm3m0_pins: pwm3m0-pins {
+                       rockchip,pins =
+                               /* pwm3_m0 */
+                               <0 RK_PA7 1 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm3m1_pins: pwm3m1-pins {
+                       rockchip,pins =
+                               /* pwm3_m1 */
+                               <1 RK_PD0 3 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm4 {
+               /omit-if-no-ref/
+               pwm4m0_pins: pwm4m0-pins {
+                       rockchip,pins =
+                               /* pwm4_m0 */
+                               <0 RK_PB7 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm4m1_pins: pwm4m1-pins {
+                       rockchip,pins =
+                               /* pwm4_m1 */
+                               <1 RK_PD1 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm5 {
+               /omit-if-no-ref/
+               pwm5m0_pins: pwm5m0-pins {
+                       rockchip,pins =
+                               /* pwm5_m0 */
+                               <0 RK_PC2 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm5m1_pins: pwm5m1-pins {
+                       rockchip,pins =
+                               /* pwm5_m1 */
+                               <1 RK_PD2 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm6 {
+               /omit-if-no-ref/
+               pwm6m0_pins: pwm6m0-pins {
+                       rockchip,pins =
+                               /* pwm6_m0 */
+                               <0 RK_PC1 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm6m1_pins: pwm6m1-pins {
+                       rockchip,pins =
+                               /* pwm6_m1 */
+                               <1 RK_PD3 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm7 {
+               /omit-if-no-ref/
+               pwm7m0_pins: pwm7m0-pins {
+                       rockchip,pins =
+                               /* pwm7_m0 */
+                               <0 RK_PC0 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm7m1_pins: pwm7m1-pins {
+                       rockchip,pins =
+                               /* pwm7_m1 */
+                               <1 RK_PD4 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm8 {
+               /omit-if-no-ref/
+               pwm8m0_pins: pwm8m0-pins {
+                       rockchip,pins =
+                               /* pwm8_m0 */
+                               <3 RK_PA4 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm8m1_pins: pwm8m1-pins {
+                       rockchip,pins =
+                               /* pwm8_m1 */
+                               <1 RK_PC1 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm9 {
+               /omit-if-no-ref/
+               pwm9m0_pins: pwm9m0-pins {
+                       rockchip,pins =
+                               /* pwm9_m0 */
+                               <3 RK_PA5 2 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm9m1_pins: pwm9m1-pins {
+                       rockchip,pins =
+                               /* pwm9_m1 */
+                               <1 RK_PC2 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm10 {
+               /omit-if-no-ref/
+               pwm10m0_pins: pwm10m0-pins {
+                       rockchip,pins =
+                               /* pwm10_m0 */
+                               <1 RK_PB5 5 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm10m1_pins: pwm10m1-pins {
+                       rockchip,pins =
+                               /* pwm10_m1 */
+                               <1 RK_PC3 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm11 {
+               /omit-if-no-ref/
+               pwm11m0_pins: pwm11m0-pins {
+                       rockchip,pins =
+                               /* pwm11_m0 */
+                               <1 RK_PB6 5 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm11m1_pins: pwm11m1-pins {
+                       rockchip,pins =
+                               /* pwm11_m1 */
+                               <1 RK_PC4 4 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm12 {
+               /omit-if-no-ref/
+               pwm12m0_pins: pwm12m0-pins {
+                       rockchip,pins =
+                               /* pwm12_m0 */
+                               <4 RK_PA1 4 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm12m1_pins: pwm12m1-pins {
+                       rockchip,pins =
+                               /* pwm12_m1 */
+                               <3 RK_PB4 5 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm13 {
+               /omit-if-no-ref/
+               pwm13m0_pins: pwm13m0-pins {
+                       rockchip,pins =
+                               /* pwm13_m0 */
+                               <4 RK_PA4 3 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm13m1_pins: pwm13m1-pins {
+                       rockchip,pins =
+                               /* pwm13_m1 */
+                               <3 RK_PB5 5 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm14 {
+               /omit-if-no-ref/
+               pwm14m0_pins: pwm14m0-pins {
+                       rockchip,pins =
+                               /* pwm14_m0 */
+                               <3 RK_PC5 4 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm14m1_pins: pwm14m1-pins {
+                       rockchip,pins =
+                               /* pwm14_m1 */
+                               <1 RK_PD7 5 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwm15 {
+               /omit-if-no-ref/
+               pwm15m0_pins: pwm15m0-pins {
+                       rockchip,pins =
+                               /* pwm15_m0 */
+                               <3 RK_PC6 4 &pcfg_pull_none_drv_level_1>;
+               };
+
+               /omit-if-no-ref/
+               pwm15m1_pins: pwm15m1-pins {
+                       rockchip,pins =
+                               /* pwm15_m1 */
+                               <2 RK_PA0 5 &pcfg_pull_none_drv_level_1>;
+               };
+       };
+
+       pwr {
+               /omit-if-no-ref/
+               pwr_pins: pwr-pins {
+                       rockchip,pins =
+                               /* pwr_ctrl0 */
+                               <0 RK_PA2 1 &pcfg_pull_none>,
+                               /* pwr_ctrl1 */
+                               <0 RK_PA3 1 &pcfg_pull_none>;
+               };
+       };
+
+       ref {
+               /omit-if-no-ref/
+               ref_pins: ref-pins {
+                       rockchip,pins =
+                               /* ref_clk_out */
+                               <0 RK_PA0 1 &pcfg_pull_none>;
+               };
+       };
+
+       rgmii {
+               /omit-if-no-ref/
+               rgmiim0_miim: rgmiim0-miim {
+                       rockchip,pins =
+                               /* rgmii_mdc_m0 */
+                               <4 RK_PB2 2 &pcfg_pull_none>,
+                               /* rgmii_mdio_m0 */
+                               <4 RK_PB3 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim0_rx_er: rgmiim0-rx_er {
+                       rockchip,pins =
+                               /* rgmii_rxer_m0 */
+                               <4 RK_PB0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim0_rx_bus2: rgmiim0-rx_bus2 {
+                       rockchip,pins =
+                               /* rgmii_rxd0_m0 */
+                               <4 RK_PA5 2 &pcfg_pull_none>,
+                               /* rgmii_rxd1_m0 */
+                               <4 RK_PA6 2 &pcfg_pull_none>,
+                               /* rgmii_rxdv_m0 */
+                               <4 RK_PA7 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim0_tx_bus2: rgmiim0-tx_bus2 {
+                       rockchip,pins =
+                               /* rgmii_txd0_m0 */
+                               <4 RK_PA2 2 &pcfg_pull_none>,
+                               /* rgmii_txd1_m0 */
+                               <4 RK_PA3 2 &pcfg_pull_none>,
+                               /* rgmii_txen_m0 */
+                               <4 RK_PA4 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim0_rgmii_clk: rgmiim0-rgmii_clk {
+                       rockchip,pins =
+                               /* rgmii_rxclk_m0 */
+                               <4 RK_PA1 2 &pcfg_pull_none>,
+                               /* rgmii_txclk_m0 */
+                               <3 RK_PD6 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim0_rgmii_bus: rgmiim0-rgmii_bus {
+                       rockchip,pins =
+                               /* rgmii_rxd2_m0 */
+                               <3 RK_PD7 2 &pcfg_pull_none>,
+                               /* rgmii_rxd3_m0 */
+                               <4 RK_PA0 2 &pcfg_pull_none>,
+                               /* rgmii_txd2_m0 */
+                               <3 RK_PD4 2 &pcfg_pull_none>,
+                               /* rgmii_txd3_m0 */
+                               <3 RK_PD5 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim0_clk: rgmiim0-clk {
+                       rockchip,pins =
+                               /* rgmiim0_clk */
+                               <4 RK_PB7 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim1_miim: rgmiim1-miim {
+                       rockchip,pins =
+                               /* rgmii_mdc_m1 */
+                               <1 RK_PC7 2 &pcfg_pull_none>,
+                               /* rgmii_mdio_m1 */
+                               <1 RK_PD0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim1_rx_er: rgmiim1-rx_er {
+                       rockchip,pins =
+                               /* rgmii_rxer_m1 */
+                               <2 RK_PA0 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim1_rx_bus2: rgmiim1-rx_bus2 {
+                       rockchip,pins =
+                               /* rgmii_rxd0_m1 */
+                               <1 RK_PD4 2 &pcfg_pull_none>,
+                               /* rgmii_rxd1_m1 */
+                               <1 RK_PD7 2 &pcfg_pull_none>,
+                               /* rgmii_rxdv_m1 */
+                               <1 RK_PD6 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim1_tx_bus2: rgmiim1-tx_bus2 {
+                       rockchip,pins =
+                               /* rgmii_txd0_m1 */
+                               <1 RK_PD1 2 &pcfg_pull_none>,
+                               /* rgmii_txd1_m1 */
+                               <1 RK_PD2 2 &pcfg_pull_none>,
+                               /* rgmii_txen_m1 */
+                               <1 RK_PD3 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim1_rgmii_clk: rgmiim1-rgmii_clk {
+                       rockchip,pins =
+                               /* rgmii_rxclk_m1 */
+                               <1 RK_PC6 2 &pcfg_pull_none>,
+                               /* rgmii_txclk_m1 */
+                               <1 RK_PC3 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim1_rgmii_bus: rgmiim1-rgmii_bus {
+                       rockchip,pins =
+                               /* rgmii_rxd2_m1 */
+                               <1 RK_PC4 2 &pcfg_pull_none>,
+                               /* rgmii_rxd3_m1 */
+                               <1 RK_PC5 2 &pcfg_pull_none>,
+                               /* rgmii_txd2_m1 */
+                               <1 RK_PC1 2 &pcfg_pull_none>,
+                               /* rgmii_txd3_m1 */
+                               <1 RK_PC2 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               rgmiim1_clk: rgmiim1-clk {
+                       rockchip,pins =
+                               /* rgmiim1_clk */
+                               <1 RK_PD5 2 &pcfg_pull_none>;
+               };
+       };
+
+       rmii {
+               /omit-if-no-ref/
+               rmii_pins: rmii-pins {
+                       rockchip,pins =
+                               /* rmii_clk */
+                               <1 RK_PD5 5 &pcfg_pull_none>,
+                               /* rmii_mdc */
+                               <1 RK_PC7 5 &pcfg_pull_none>,
+                               /* rmii_mdio */
+                               <1 RK_PD0 5 &pcfg_pull_none>,
+                               /* rmii_rxd0 */
+                               <1 RK_PD4 5 &pcfg_pull_none>,
+                               /* rmii_rxd1 */
+                               <1 RK_PD7 6 &pcfg_pull_none>,
+                               /* rmii_rxdv_crs */
+                               <1 RK_PD6 5 &pcfg_pull_none>,
+                               /* rmii_rxer */
+                               <2 RK_PA0 6 &pcfg_pull_none>,
+                               /* rmii_txd0 */
+                               <1 RK_PD1 5 &pcfg_pull_none>,
+                               /* rmii_txd1 */
+                               <1 RK_PD2 5 &pcfg_pull_none>,
+                               /* rmii_txen */
+                               <1 RK_PD3 5 &pcfg_pull_none>;
+               };
+       };
+
+       sdmmc0 {
+               /omit-if-no-ref/
+               sdmmc0_bus4: sdmmc0-bus4 {
+                       rockchip,pins =
+                               /* sdmmc0_d0 */
+                               <1 RK_PB3 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc0_d1 */
+                               <1 RK_PB4 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc0_d2 */
+                               <1 RK_PB5 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc0_d3 */
+                               <1 RK_PB6 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc0_clk: sdmmc0-clk {
+                       rockchip,pins =
+                               /* sdmmc0_clk */
+                               <1 RK_PC0 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc0_cmd: sdmmc0-cmd {
+                       rockchip,pins =
+                               /* sdmmc0_cmd */
+                               <1 RK_PB7 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc0_det: sdmmc0-det {
+                       rockchip,pins =
+                               /* sdmmc0_detn */
+                               <0 RK_PA4 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc0_pwren: sdmmc0-pwren {
+                       rockchip,pins =
+                               /* sdmmc0_pwren */
+                               <0 RK_PA5 1 &pcfg_pull_none>;
+               };
+       };
+
+       sdmmc1 {
+               /omit-if-no-ref/
+               sdmmc1_bus4: sdmmc1-bus4 {
+                       rockchip,pins =
+                               /* sdmmc1_d0 */
+                               <1 RK_PC1 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc1_d1 */
+                               <1 RK_PC2 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc1_d2 */
+                               <1 RK_PC3 1 &pcfg_pull_up_drv_level_2>,
+                               /* sdmmc1_d3 */
+                               <1 RK_PC4 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc1_clk: sdmmc1-clk {
+                       rockchip,pins =
+                               /* sdmmc1_clk */
+                               <1 RK_PC6 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc1_cmd: sdmmc1-cmd {
+                       rockchip,pins =
+                               /* sdmmc1_cmd */
+                               <1 RK_PC5 1 &pcfg_pull_up_drv_level_2>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc1_det: sdmmc1-det {
+                       rockchip,pins =
+                               /* sdmmc1_detn */
+                               <1 RK_PD0 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               sdmmc1_pwren: sdmmc1-pwren {
+                       rockchip,pins =
+                               /* sdmmc1_pwren */
+                               <1 RK_PC7 1 &pcfg_pull_none>;
+               };
+       };
+
+       spdif {
+               /omit-if-no-ref/
+               spdifm0_pins: spdifm0-pins {
+                       rockchip,pins =
+                               /* spdif_tx_m0 */
+                               <3 RK_PA1 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               spdifm1_pins: spdifm1-pins {
+                       rockchip,pins =
+                               /* spdif_tx_m1 */
+                               <0 RK_PB7 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               spdifm2_pins: spdifm2-pins {
+                       rockchip,pins =
+                               /* spdif_tx_m2 */
+                               <1 RK_PB7 2 &pcfg_pull_none>;
+               };
+       };
+
+       spi0 {
+               /omit-if-no-ref/
+               spi0m0_pins: spi0m0-pins {
+                       rockchip,pins =
+                               /* spi0_clk_m0 */
+                               <0 RK_PC3 3 &pcfg_pull_none_drv_level_3>,
+                               /* spi0_miso_m0 */
+                               <0 RK_PC5 3 &pcfg_pull_none_drv_level_3>,
+                               /* spi0_mosi_m0 */
+                               <0 RK_PC4 3 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi0m0_csn0: spi0m0-csn0 {
+                       rockchip,pins =
+                               /* spi0m0_csn0 */
+                               <0 RK_PC2 3 &pcfg_pull_none_drv_level_3>;
+               };
+               /omit-if-no-ref/
+               spi0m0_csn1: spi0m0-csn1 {
+                       rockchip,pins =
+                               /* spi0m0_csn1 */
+                               <0 RK_PB7 1 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi0m1_pins: spi0m1-pins {
+                       rockchip,pins =
+                               /* spi0_clk_m1 */
+                               <3 RK_PB5 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi0_miso_m1 */
+                               <3 RK_PC0 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi0_mosi_m1 */
+                               <3 RK_PB4 4 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi0m1_csn0: spi0m1-csn0 {
+                       rockchip,pins =
+                               /* spi0m1_csn0 */
+                               <3 RK_PB7 4 &pcfg_pull_none_drv_level_3>;
+               };
+               /omit-if-no-ref/
+               spi0m1_csn1: spi0m1-csn1 {
+                       rockchip,pins =
+                               /* spi0m1_csn1 */
+                               <3 RK_PB6 4 &pcfg_pull_none_drv_level_3>;
+               };
+       };
+
+       spi1 {
+               /omit-if-no-ref/
+               spi1m0_pins: spi1m0-pins {
+                       rockchip,pins =
+                               /* spi1_clk_m0 */
+                               <3 RK_PD6 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi1_miso_m0 */
+                               <4 RK_PA3 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi1_mosi_m0 */
+                               <4 RK_PA2 4 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi1m0_csn0: spi1m0-csn0 {
+                       rockchip,pins =
+                               /* spi1m0_csn0 */
+                               <3 RK_PD7 4 &pcfg_pull_none_drv_level_3>;
+               };
+               /omit-if-no-ref/
+               spi1m0_csn1: spi1m0-csn1 {
+                       rockchip,pins =
+                               /* spi1m0_csn1 */
+                               <4 RK_PA0 4 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi1m1_pins: spi1m1-pins {
+                       rockchip,pins =
+                               /* spi1_clk_m1 */
+                               <1 RK_PC0 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi1_miso_m1 */
+                               <1 RK_PB4 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi1_mosi_m1 */
+                               <1 RK_PB3 4 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi1m1_csn0: spi1m1-csn0 {
+                       rockchip,pins =
+                               /* spi1m1_csn0 */
+                               <1 RK_PB6 4 &pcfg_pull_none_drv_level_3>;
+               };
+               /omit-if-no-ref/
+               spi1m1_csn1: spi1m1-csn1 {
+                       rockchip,pins =
+                               /* spi1m1_csn1 */
+                               <1 RK_PB5 4 &pcfg_pull_none_drv_level_3>;
+               };
+       };
+
+       spi2 {
+               /omit-if-no-ref/
+               spi2m0_pins: spi2m0-pins {
+                       rockchip,pins =
+                               /* spi2_clk_m0 */
+                               <4 RK_PB6 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi2_miso_m0 */
+                               <3 RK_PD2 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi2_mosi_m0 */
+                               <3 RK_PD3 4 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi2m0_csn0: spi2m0-csn0 {
+                       rockchip,pins =
+                               /* spi2m0_csn0 */
+                               <4 RK_PB5 4 &pcfg_pull_none_drv_level_3>;
+               };
+               /omit-if-no-ref/
+               spi2m0_csn1: spi2m0-csn1 {
+                       rockchip,pins =
+                               /* spi2m0_csn1 */
+                               <4 RK_PB4 4 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi2m1_pins: spi2m1-pins {
+                       rockchip,pins =
+                               /* spi2_clk_m1 */
+                               <2 RK_PA1 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi2_miso_m1 */
+                               <2 RK_PA0 4 &pcfg_pull_none_drv_level_3>,
+                               /* spi2_mosi_m1 */
+                               <1 RK_PD7 4 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               spi2m1_csn0: spi2m1-csn0 {
+                       rockchip,pins =
+                               /* spi2m1_csn0 */
+                               <1 RK_PD6 4 &pcfg_pull_none_drv_level_3>;
+               };
+               /omit-if-no-ref/
+               spi2m1_csn1: spi2m1-csn1 {
+                       rockchip,pins =
+                               /* spi2m1_csn1 */
+                               <1 RK_PD5 4 &pcfg_pull_none_drv_level_3>;
+               };
+       };
+
+       tsadc {
+               /omit-if-no-ref/
+               tsadcm0_pins: tsadcm0-pins {
+                       rockchip,pins =
+                               /* tsadc_shut_m0 */
+                               <0 RK_PA1 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               tsadcm1_pins: tsadcm1-pins {
+                       rockchip,pins =
+                               /* tsadc_shut_m1 */
+                               <0 RK_PA2 2 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               tsadc_shut_org: tsadc-shut-org {
+                       rockchip,pins =
+                               /* tsadc_shut_org */
+                               <0 RK_PA1 2 &pcfg_pull_none>;
+               };
+       };
+
+       uart0 {
+               /omit-if-no-ref/
+               uart0m0_xfer: uart0m0-xfer {
+                       rockchip,pins =
+                               /* uart0_rx_m0 */
+                               <0 RK_PD0 1 &pcfg_pull_up>,
+                               /* uart0_tx_m0 */
+                               <0 RK_PD1 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart0m1_xfer: uart0m1-xfer {
+                       rockchip,pins =
+                               /* uart0_rx_m1 */
+                               <1 RK_PB3 2 &pcfg_pull_up>,
+                               /* uart0_tx_m1 */
+                               <1 RK_PB4 2 &pcfg_pull_up>;
+               };
+       };
+
+       uart1 {
+               /omit-if-no-ref/
+               uart1m0_xfer: uart1m0-xfer {
+                       rockchip,pins =
+                               /* uart1_rx_m0 */
+                               <1 RK_PD1 1 &pcfg_pull_up>,
+                               /* uart1_tx_m0 */
+                               <1 RK_PD2 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart1m0_ctsn: uart1m0-ctsn {
+                       rockchip,pins =
+                               /* uart1m0_ctsn */
+                               <1 RK_PD4 1 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart1m0_rtsn: uart1m0-rtsn {
+                       rockchip,pins =
+                               /* uart1m0_rtsn */
+                               <1 RK_PD3 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart1m1_xfer: uart1m1-xfer {
+                       rockchip,pins =
+                               /* uart1_rx_m1 */
+                               <4 RK_PA6 3 &pcfg_pull_up>,
+                               /* uart1_tx_m1 */
+                               <4 RK_PA5 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart1m1_ctsn: uart1m1-ctsn {
+                       rockchip,pins =
+                               /* uart1m1_ctsn */
+                               <4 RK_PB0 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart1m1_rtsn: uart1m1-rtsn {
+                       rockchip,pins =
+                               /* uart1m1_rtsn */
+                               <4 RK_PA7 3 &pcfg_pull_none>;
+               };
+       };
+
+       uart2 {
+               /omit-if-no-ref/
+               uart2m0_xfer: uart2m0-xfer {
+                       rockchip,pins =
+                               /* uart2_rx_m0 */
+                               <0 RK_PC1 1 &pcfg_pull_up>,
+                               /* uart2_tx_m0 */
+                               <0 RK_PC0 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart2m0_ctsn: uart2m0-ctsn {
+                       rockchip,pins =
+                               /* uart2m0_ctsn */
+                               <0 RK_PC2 1 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart2m0_rtsn: uart2m0-rtsn {
+                       rockchip,pins =
+                               /* uart2m0_rtsn */
+                               <0 RK_PC3 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart2m1_xfer: uart2m1-xfer {
+                       rockchip,pins =
+                               /* uart2_rx_m1 */
+                               <3 RK_PA1 2 &pcfg_pull_up>,
+                               /* uart2_tx_m1 */
+                               <3 RK_PA0 2 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart2m1_ctsn: uart2m1-ctsn {
+                       rockchip,pins =
+                               /* uart2m1_ctsn */
+                               <3 RK_PA2 2 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart2m1_rtsn: uart2m1-rtsn {
+                       rockchip,pins =
+                               /* uart2m1_rtsn */
+                               <3 RK_PA3 2 &pcfg_pull_none>;
+               };
+       };
+
+       uart3 {
+               /omit-if-no-ref/
+               uart3m0_xfer: uart3m0-xfer {
+                       rockchip,pins =
+                               /* uart3_rx_m0 */
+                               <4 RK_PB5 6 &pcfg_pull_up>,
+                               /* uart3_tx_m0 */
+                               <4 RK_PB4 6 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart3m0_ctsn: uart3m0-ctsn {
+                       rockchip,pins =
+                               /* uart3m0_ctsn */
+                               <4 RK_PB6 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart3m0_rtsn: uart3m0-rtsn {
+                       rockchip,pins =
+                               /* uart3m0_rtsn */
+                               <3 RK_PD1 4 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart3m1_xfer: uart3m1-xfer {
+                       rockchip,pins =
+                               /* uart3_rx_m1 */
+                               <3 RK_PC0 3 &pcfg_pull_up>,
+                               /* uart3_tx_m1 */
+                               <3 RK_PB7 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart3m1_ctsn: uart3m1-ctsn {
+                       rockchip,pins =
+                               /* uart3m1_ctsn */
+                               <3 RK_PB6 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart3m1_rtsn: uart3m1-rtsn {
+                       rockchip,pins =
+                               /* uart3m1_rtsn */
+                               <3 RK_PC1 3 &pcfg_pull_none>;
+               };
+       };
+
+       uart4 {
+               /omit-if-no-ref/
+               uart4m0_xfer: uart4m0-xfer {
+                       rockchip,pins =
+                               /* uart4_rx_m0 */
+                               <3 RK_PD1 3 &pcfg_pull_up>,
+                               /* uart4_tx_m0 */
+                               <3 RK_PD0 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart4m0_ctsn: uart4m0-ctsn {
+                       rockchip,pins =
+                               /* uart4m0_ctsn */
+                               <3 RK_PC5 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart4m0_rtsn: uart4m0-rtsn {
+                       rockchip,pins =
+                               /* uart4m0_rtsn */
+                               <3 RK_PC6 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart4m1_xfer: uart4m1-xfer {
+                       rockchip,pins =
+                               /* uart4_rx_m1 */
+                               <1 RK_PD5 3 &pcfg_pull_up>,
+                               /* uart4_tx_m1 */
+                               <1 RK_PD6 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart4m1_ctsn: uart4m1-ctsn {
+                       rockchip,pins =
+                               /* uart4m1_ctsn */
+                               <2 RK_PA0 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart4m1_rtsn: uart4m1-rtsn {
+                       rockchip,pins =
+                               /* uart4m1_rtsn */
+                               <1 RK_PD7 3 &pcfg_pull_none>;
+               };
+       };
+
+       uart5 {
+               /omit-if-no-ref/
+               uart5m0_xfer: uart5m0-xfer {
+                       rockchip,pins =
+                               /* uart5_rx_m0 */
+                               <1 RK_PB7 3 &pcfg_pull_up>,
+                               /* uart5_tx_m0 */
+                               <1 RK_PC0 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart5m0_ctsn: uart5m0-ctsn {
+                       rockchip,pins =
+                               /* uart5m0_ctsn */
+                               <1 RK_PB5 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart5m0_rtsn: uart5m0-rtsn {
+                       rockchip,pins =
+                               /* uart5m0_rtsn */
+                               <1 RK_PB6 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart5m1_xfer: uart5m1-xfer {
+                       rockchip,pins =
+                               /* uart5_rx_m1 */
+                               <3 RK_PA7 5 &pcfg_pull_up>,
+                               /* uart5_tx_m1 */
+                               <3 RK_PA6 5 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart5m1_ctsn: uart5m1-ctsn {
+                       rockchip,pins =
+                               /* uart5m1_ctsn */
+                               <3 RK_PA0 5 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart5m1_rtsn: uart5m1-rtsn {
+                       rockchip,pins =
+                               /* uart5m1_rtsn */
+                               <3 RK_PA1 5 &pcfg_pull_none>;
+               };
+       };
+
+       uart6 {
+               /omit-if-no-ref/
+               uart6m0_xfer: uart6m0-xfer {
+                       rockchip,pins =
+                               /* uart6_rx_m0 */
+                               <0 RK_PC7 1 &pcfg_pull_up>,
+                               /* uart6_tx_m0 */
+                               <0 RK_PC6 1 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart6m0_ctsn: uart6m0-ctsn {
+                       rockchip,pins =
+                               /* uart6m0_ctsn */
+                               <0 RK_PC4 1 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart6m0_rtsn: uart6m0-rtsn {
+                       rockchip,pins =
+                               /* uart6m0_rtsn */
+                               <0 RK_PC5 1 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart6m1_xfer: uart6m1-xfer {
+                       rockchip,pins =
+                               /* uart6_rx_m1 */
+                               <4 RK_PB0 5 &pcfg_pull_up>,
+                               /* uart6_tx_m1 */
+                               <4 RK_PA7 5 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart6m1_ctsn: uart6m1-ctsn {
+                       rockchip,pins =
+                               /* uart6m1_ctsn */
+                               <4 RK_PA2 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart6m1_rtsn: uart6m1-rtsn {
+                       rockchip,pins =
+                               /* uart6m1_rtsn */
+                               <4 RK_PA3 3 &pcfg_pull_none>;
+               };
+       };
+
+       uart7 {
+               /omit-if-no-ref/
+               uart7m0_xfer: uart7m0-xfer {
+                       rockchip,pins =
+                               /* uart7_rx_m0 */
+                               <3 RK_PC7 3 &pcfg_pull_up>,
+                               /* uart7_tx_m0 */
+                               <3 RK_PC4 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart7m0_ctsn: uart7m0-ctsn {
+                       rockchip,pins =
+                               /* uart7m0_ctsn */
+                               <3 RK_PD2 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart7m0_rtsn: uart7m0-rtsn {
+                       rockchip,pins =
+                               /* uart7m0_rtsn */
+                               <3 RK_PD3 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart7m1_xfer: uart7m1-xfer {
+                       rockchip,pins =
+                               /* uart7_rx_m1 */
+                               <1 RK_PB3 3 &pcfg_pull_up>,
+                               /* uart7_tx_m1 */
+                               <1 RK_PB4 3 &pcfg_pull_up>;
+               };
+       };
+
+       uart8 {
+               /omit-if-no-ref/
+               uart8m0_xfer: uart8m0-xfer {
+                       rockchip,pins =
+                               /* uart8_rx_m0 */
+                               <3 RK_PB3 3 &pcfg_pull_up>,
+                               /* uart8_tx_m0 */
+                               <3 RK_PB2 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart8m0_ctsn: uart8m0-ctsn {
+                       rockchip,pins =
+                               /* uart8m0_ctsn */
+                               <3 RK_PB4 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart8m0_rtsn: uart8m0-rtsn {
+                       rockchip,pins =
+                               /* uart8m0_rtsn */
+                               <3 RK_PB5 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart8m1_xfer: uart8m1-xfer {
+                       rockchip,pins =
+                               /* uart8_rx_m1 */
+                               <3 RK_PD5 3 &pcfg_pull_up>,
+                               /* uart8_tx_m1 */
+                               <3 RK_PD4 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart8m1_ctsn: uart8m1-ctsn {
+                       rockchip,pins =
+                               /* uart8m1_ctsn */
+                               <3 RK_PD7 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart8m1_rtsn: uart8m1-rtsn {
+                       rockchip,pins =
+                               /* uart8m1_rtsn */
+                               <4 RK_PA0 3 &pcfg_pull_none>;
+               };
+       };
+
+       uart9 {
+               /omit-if-no-ref/
+               uart9m0_xfer: uart9m0-xfer {
+                       rockchip,pins =
+                               /* uart9_rx_m0 */
+                               <4 RK_PB3 3 &pcfg_pull_up>,
+                               /* uart9_tx_m0 */
+                               <4 RK_PB2 3 &pcfg_pull_up>;
+               };
+
+               /omit-if-no-ref/
+               uart9m0_ctsn: uart9m0-ctsn {
+                       rockchip,pins =
+                               /* uart9m0_ctsn */
+                               <4 RK_PB4 3 &pcfg_pull_none>;
+               };
+               /omit-if-no-ref/
+               uart9m0_rtsn: uart9m0-rtsn {
+                       rockchip,pins =
+                               /* uart9m0_rtsn */
+                               <4 RK_PB5 3 &pcfg_pull_none>;
+               };
+
+               /omit-if-no-ref/
+               uart9m1_xfer: uart9m1-xfer {
+                       rockchip,pins =
+                               /* uart9_rx_m1 */
+                               <3 RK_PC3 3 &pcfg_pull_up>,
+                               /* uart9_tx_m1 */
+                               <3 RK_PC2 3 &pcfg_pull_up>;
+               };
+       };
+
+       vo {
+               /omit-if-no-ref/
+               vo_pins: vo-pins {
+                       rockchip,pins =
+                               /* vo_lcdc_clk */
+                               <4 RK_PB7 1 &pcfg_pull_none_drv_level_4>,
+                               /* vo_lcdc_d0 */
+                               <4 RK_PA4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d1 */
+                               <4 RK_PA5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d2 */
+                               <4 RK_PB2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d3 */
+                               <3 RK_PC4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d4 */
+                               <3 RK_PC5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d5 */
+                               <3 RK_PC6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d6 */
+                               <3 RK_PC7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d7 */
+                               <3 RK_PD0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d8 */
+                               <4 RK_PA6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d9 */
+                               <4 RK_PA7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d10 */
+                               <3 RK_PD1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d11 */
+                               <3 RK_PD2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d12 */
+                               <3 RK_PD3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d13 */
+                               <3 RK_PD4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d14 */
+                               <3 RK_PD5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d15 */
+                               <3 RK_PD6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d16 */
+                               <4 RK_PB0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d17 */
+                               <4 RK_PB1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d18 */
+                               <4 RK_PB3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d19 */
+                               <3 RK_PD7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d20 */
+                               <4 RK_PA0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d21 */
+                               <4 RK_PA1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d22 */
+                               <4 RK_PA2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d23 */
+                               <4 RK_PA3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_den */
+                               <4 RK_PB6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_hsync */
+                               <4 RK_PB4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_vsync */
+                               <4 RK_PB5 1 &pcfg_pull_none_drv_level_3>;
+               };
+       };
+};
+
+/*
+ * This part is edited handly.
+ */
+&pinctrl {
+       vo {
+               /omit-if-no-ref/
+               bt1120_pins: bt1120-pins {
+                       rockchip,pins =
+                               /* vo_lcdc_clk */
+                               <4 RK_PB7 1 &pcfg_pull_none_drv_level_4>,
+                               /* vo_lcdc_d3 */
+                               <3 RK_PC4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d4 */
+                               <3 RK_PC5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d5 */
+                               <3 RK_PC6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d6 */
+                               <3 RK_PC7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d7 */
+                               <3 RK_PD0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d10 */
+                               <3 RK_PD1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d11 */
+                               <3 RK_PD2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d12 */
+                               <3 RK_PD3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d13 */
+                               <3 RK_PD4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d14 */
+                               <3 RK_PD5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d15 */
+                               <3 RK_PD6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d19 */
+                               <3 RK_PD7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d20 */
+                               <4 RK_PA0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d21 */
+                               <4 RK_PA1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d22 */
+                               <4 RK_PA2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d23 */
+                               <4 RK_PA3 1 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               bt656_pins: bt656-pins {
+                       rockchip,pins =
+                               /* vo_lcdc_clk */
+                               <4 RK_PB7 1 &pcfg_pull_none_drv_level_4>,
+                               /* vo_lcdc_d3 */
+                               <3 RK_PC4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d4 */
+                               <3 RK_PC5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d5 */
+                               <3 RK_PC6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d6 */
+                               <3 RK_PC7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d7 */
+                               <3 RK_PD0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d10 */
+                               <3 RK_PD1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d11 */
+                               <3 RK_PD2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d12 */
+                               <3 RK_PD3 1 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               rgb3x8_pins_m0: rgb3x8-pins-m0 {
+                       rockchip,pins =
+                               /* vo_lcdc_clk */
+                               <4 RK_PB7 1 &pcfg_pull_none_drv_level_4>,
+                               /* vo_lcdc_d3 */
+                               <3 RK_PC4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d4 */
+                               <3 RK_PC5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d5 */
+                               <3 RK_PC6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d6 */
+                               <3 RK_PC7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d7 */
+                               <3 RK_PD0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d10 */
+                               <3 RK_PD1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d11 */
+                               <3 RK_PD2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d12 */
+                               <3 RK_PD3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_den */
+                               <4 RK_PB6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_hsync */
+                               <4 RK_PB4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_vsync */
+                               <4 RK_PB5 1 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               rgb3x8_pins_m1: rgb3x8-pins-m1 {
+                       rockchip,pins =
+                               /* vo_lcdc_clk */
+                               <4 RK_PB7 1 &pcfg_pull_none_drv_level_4>,
+                               /* vo_lcdc_d13 */
+                               <3 RK_PD4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d14 */
+                               <3 RK_PD5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d15 */
+                               <3 RK_PD6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d19 */
+                               <3 RK_PD7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d20 */
+                               <4 RK_PA0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d21 */
+                               <4 RK_PA1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d22 */
+                               <4 RK_PA2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d23 */
+                               <4 RK_PA3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_den */
+                               <4 RK_PB6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_hsync */
+                               <4 RK_PB4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_vsync */
+                               <4 RK_PB5 1 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               rgb565_pins: rgb565-pins {
+                       rockchip,pins =
+                               /* vo_lcdc_clk */
+                               <4 RK_PB7 1 &pcfg_pull_none_drv_level_4>,
+                               /* vo_lcdc_d3 */
+                               <3 RK_PC4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d4 */
+                               <3 RK_PC5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d5 */
+                               <3 RK_PC6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d6 */
+                               <3 RK_PC7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d7 */
+                               <3 RK_PD0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d10 */
+                               <3 RK_PD1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d11 */
+                               <3 RK_PD2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d12 */
+                               <3 RK_PD3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d13 */
+                               <3 RK_PD4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d14 */
+                               <3 RK_PD5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d15 */
+                               <3 RK_PD6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d19 */
+                               <3 RK_PD7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d20 */
+                               <4 RK_PA0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d21 */
+                               <4 RK_PA1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d22 */
+                               <4 RK_PA2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d23 */
+                               <4 RK_PA3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_den */
+                               <4 RK_PB6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_hsync */
+                               <4 RK_PB4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_vsync */
+                               <4 RK_PB5 1 &pcfg_pull_none_drv_level_3>;
+               };
+
+               /omit-if-no-ref/
+               rgb666_pins: rgb666-pins {
+                       rockchip,pins =
+                               /* vo_lcdc_clk */
+                               <4 RK_PB7 1 &pcfg_pull_none_drv_level_4>,
+                               /* vo_lcdc_d2 */
+                               <4 RK_PB2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d3 */
+                               <3 RK_PC4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d4 */
+                               <3 RK_PC5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d5 */
+                               <3 RK_PC6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d6 */
+                               <3 RK_PC7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d7 */
+                               <3 RK_PD0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d10 */
+                               <3 RK_PD1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d11 */
+                               <3 RK_PD2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d12 */
+                               <3 RK_PD3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d13 */
+                               <3 RK_PD4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d14 */
+                               <3 RK_PD5 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d15 */
+                               <3 RK_PD6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d18 */
+                               <4 RK_PB3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d19 */
+                               <3 RK_PD7 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d20 */
+                               <4 RK_PA0 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d21 */
+                               <4 RK_PA1 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d22 */
+                               <4 RK_PA2 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_d23 */
+                               <4 RK_PA3 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_den */
+                               <4 RK_PB6 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_hsync */
+                               <4 RK_PB4 1 &pcfg_pull_none_drv_level_3>,
+                               /* vo_lcdc_vsync */
+                               <4 RK_PB5 1 &pcfg_pull_none_drv_level_3>;
+               };
+       };
+};
diff --git a/src/arm64/rockchip/rk3562.dtsi b/src/arm64/rockchip/rk3562.dtsi
new file mode 100644 (file)
index 0000000..def504f
--- /dev/null
@@ -0,0 +1,1185 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2022 Rockchip Electronics Co., Ltd.
+ */
+
+#include <dt-bindings/clock/rockchip,rk3562-cru.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/phy/phy.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/reset/rockchip,rk3562-cru.h>
+#include <dt-bindings/soc/rockchip,boot-mode.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+       compatible = "rockchip,rk3562";
+
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       aliases {
+               gpio0 = &gpio0;
+               gpio1 = &gpio1;
+               gpio2 = &gpio2;
+               gpio3 = &gpio3;
+               gpio4 = &gpio4;
+       };
+
+       xin32k: clock-xin32k {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               clock-output-names = "xin32k";
+       };
+
+       xin24m: clock-xin24m {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+               clock-output-names = "xin24m";
+       };
+
+       cpus {
+               #address-cells = <2>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x0>;
+                       enable-method = "psci";
+                       clocks = <&scmi_clk ARMCLK>;
+                       cpu-idle-states = <&CPU_SLEEP>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+                       dynamic-power-coefficient = <138>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x1>;
+                       enable-method = "psci";
+                       clocks = <&scmi_clk ARMCLK>;
+                       cpu-idle-states = <&CPU_SLEEP>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+                       dynamic-power-coefficient = <138>;
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x2>;
+                       enable-method = "psci";
+                       clocks = <&scmi_clk ARMCLK>;
+                       cpu-idle-states = <&CPU_SLEEP>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+                       dynamic-power-coefficient = <138>;
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a53";
+                       reg = <0x0 0x3>;
+                       enable-method = "psci";
+                       clocks = <&scmi_clk ARMCLK>;
+                       cpu-idle-states = <&CPU_SLEEP>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       #cooling-cells = <2>;
+                       dynamic-power-coefficient = <138>;
+               };
+
+               idle-states {
+                       entry-method = "psci";
+
+                       CPU_SLEEP: cpu-sleep {
+                               compatible = "arm,idle-state";
+                               local-timer-stop;
+                               arm,psci-suspend-param = <0x0010000>;
+                               entry-latency-us = <120>;
+                               exit-latency-us = <250>;
+                               min-residency-us = <900>;
+                       };
+               };
+       };
+
+       cpu0_opp_table: opp-table-cpu0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp-408000000 {
+                       opp-hz = /bits/ 64 <408000000>;
+                       opp-microvolt = <825000 825000 1150000>;
+                       clock-latency-ns = <40000>;
+                       opp-suspend;
+               };
+               opp-600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <825000 825000 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-816000000 {
+                       opp-hz = /bits/ 64 <816000000>;
+                       opp-microvolt = <825000 825000 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-1008000000 {
+                       opp-hz = /bits/ 64 <1008000000>;
+                       opp-microvolt = <850000 850000 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-1200000000 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <925000 925000 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-1416000000 {
+                       opp-hz = /bits/ 64 <1416000000>;
+                       opp-microvolt = <1000000 1000000 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-1608000000 {
+                       opp-supported-hw = <0xf9 0xffff>;
+                       opp-hz = /bits/ 64 <1608000000>;
+                       opp-microvolt = <1037500 1037500 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-1800000000 {
+                       opp-hz = /bits/ 64 <1800000000>;
+                       opp-microvolt = <1125000 1125000 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp-2016000000 {
+                       opp-hz = /bits/ 64 <2016000000>;
+                       opp-microvolt = <1150000 1150000 1150000>;
+                       clock-latency-ns = <40000>;
+               };
+
+       };
+
+       gpu_opp_table: opp-table-gpu {
+               compatible = "operating-points-v2";
+
+               opp-300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <825000 825000 1000000>;
+               };
+               opp-400000000 {
+                       opp-hz = /bits/ 64 <400000000>;
+                       opp-microvolt = <825000 825000 1000000>;
+               };
+               opp-500000000 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <825000 825000 1000000>;
+               };
+               opp-600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <825000 825000 1000000>;
+               };
+               opp-700000000 {
+                       opp-hz = /bits/ 64 <700000000>;
+                       opp-microvolt = <900000 900000 1000000>;
+               };
+               opp-800000000 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <950000 950000 1000000>;
+               };
+               opp-900000000 {
+                       opp-hz = /bits/ 64 <900000000>;
+                       opp-microvolt = <1000000 1000000 1000000>;
+               };
+       };
+
+       arm_pmu: arm-pmu {
+               compatible = "arm,cortex-a53-pmu";
+               interrupts = <GIC_SPI 228 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 229 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 230 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 231 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
+       };
+
+       firmware {
+               scmi: scmi {
+                       compatible = "arm,scmi-smc";
+                       shmem = <&scmi_shmem>;
+                       arm,smc-id = <0x82000010>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       scmi_clk: protocol@14 {
+                               reg = <0x14>;
+                               #clock-cells = <1>;
+                       };
+               };
+       };
+
+       pinctrl: pinctrl {
+               compatible = "rockchip,rk3562-pinctrl";
+               rockchip,grf = <&ioc_grf>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gpio0: gpio@ff260000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff260000 0x0 0x100>;
+                       clocks = <&cru PCLK_PMU0_GPIO0>, <&cru DBCLK_PMU0_GPIO0>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 0 32>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio1: gpio@ff620000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff620000 0x0 0x100>;
+                       clocks = <&cru PCLK_PERI_GPIO1>, <&cru DCLK_PERI_GPIO1>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 32 32>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio2: gpio@ff630000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xff630000 0x0 0x100>;
+                       clocks = <&cru PCLK_PERI_GPIO2>, <&cru DCLK_PERI_GPIO2>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 64 32>;
+                       interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio3: gpio@ffac0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xffac0000 0x0 0x100>;
+                       clocks = <&cru PCLK_GPIO3_VCCIO156>, <&cru DCLK_BUS_GPIO3>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 96 32>;
+                       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio4: gpio@ffad0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0xffad0000 0x0 0x100>;
+                       clocks = <&cru PCLK_GPIO4_VCCIO156>, <&cru DCLK_BUS_GPIO4>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 128 32>;
+                       interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+       };
+
+       psci {
+               compatible = "arm,psci-1.0";
+               method = "smc";
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               scmi_shmem: shmem@10f000 {
+                       compatible = "arm,scmi-shmem";
+                       reg = <0x0 0x0010f000 0x0 0x100>;
+                       no-map;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv8-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               pcie2x1: pcie@fe000000 {
+                       compatible = "rockchip,rk3562-pcie", "rockchip,rk3568-pcie";
+                       reg = <0x0 0xfe000000 0x0 0x400000>,
+                             <0x0 0xff500000 0x0 0x10000>,
+                             <0x0 0xfc000000 0x0 0x100000>;
+                       reg-names = "dbi", "apb", "config";
+                       bus-range = <0x0 0xff>;
+                       clocks = <&cru ACLK_PCIE20_MST>, <&cru ACLK_PCIE20_SLV>,
+                                <&cru ACLK_PCIE20_DBI>, <&cru PCLK_PCIE20>,
+                                <&cru CLK_PCIE20_AUX>;
+                       clock-names = "aclk_mst", "aclk_slv",
+                                     "aclk_dbi", "pclk", "aux";
+                       device_type = "pci";
+                       interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 142 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie2x1_intc 0>,
+                                       <0 0 0 2 &pcie2x1_intc 1>,
+                                       <0 0 0 3 &pcie2x1_intc 2>,
+                                       <0 0 0 4 &pcie2x1_intc 3>;
+                       linux,pci-domain = <0>;
+                       max-link-speed = <2>;
+                       num-ib-windows = <8>;
+                       num-viewport = <8>;
+                       num-ob-windows = <2>;
+                       num-lanes = <1>;
+                       phys = <&combphy PHY_TYPE_PCIE>;
+                       phy-names = "pcie-phy";
+                       power-domains = <&power 15>;
+                       ranges = <0x01000000 0x0 0xfc100000 0x0 0xfc100000 0x0 0x100000
+                                 0x02000000 0x0 0xfc200000 0x0 0xfc200000 0x0 0x1e00000
+                                 0x03000000 0x3 0x00000000 0x3 0x00000000 0x0 0x40000000>;
+                       resets = <&cru SRST_PCIE20_POWERUP>;
+                       reset-names = "pipe";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       status = "disabled";
+
+                       pcie2x1_intc: legacy-interrupt-controller {
+                               interrupt-controller;
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&gic>;
+                               interrupts = <GIC_SPI 143 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
+
+               gic: interrupt-controller@fe901000 {
+                       compatible = "arm,gic-400";
+                       #interrupt-cells = <3>;
+                       #address-cells = <0>;
+                       interrupt-controller;
+                       reg = <0x0 0xfe901000 0 0x1000>,
+                             <0x0 0xfe902000 0 0x2000>,
+                             <0x0 0xfe904000 0 0x2000>,
+                             <0x0 0xfe906000 0 0x2000>;
+                       interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+               };
+
+               qos_dma2ddr: qos@fee03800 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee03800 0x0 0x20>;
+               };
+
+               qos_mcu: qos@fee10000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee10000 0x0 0x20>;
+               };
+
+               qos_dft_apb: qos@fee10100 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee10100 0x0 0x20>;
+               };
+
+               qos_gmac: qos@fee10200 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee10200 0x0 0x20>;
+               };
+
+               qos_mac100: qos@fee10300 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee10300 0x0 0x20>;
+               };
+
+               qos_dcf: qos@fee10400 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee10400 0x0 0x20>;
+               };
+
+               qos_cpu: qos@fee20000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee20000 0x0 0x20>;
+               };
+
+               qos_gpu: qos@fee30000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee30000 0x0 0x20>;
+               };
+
+               qos_npu: qos@fee40000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee40000 0x0 0x20>;
+               };
+
+               qos_rkvdec: qos@fee50000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee50000 0x0 0x20>;
+               };
+
+               qos_vepu: qos@fee60000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee60000 0x0 0x20>;
+               };
+
+               qos_isp: qos@fee70000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee70000 0x0 0x20>;
+               };
+
+               qos_vicap: qos@fee70100 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee70100 0x0 0x20>;
+               };
+
+               qos_vop: qos@fee80000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee80000 0x0 0x20>;
+               };
+
+               qos_jpeg: qos@fee90000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee90000 0x0 0x20>;
+               };
+
+               qos_rga_rd: qos@fee90100 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee90100 0x0 0x20>;
+               };
+
+               qos_rga_wr: qos@fee90200 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfee90200 0x0 0x20>;
+               };
+
+               qos_pcie: qos@feea0000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeea0000 0x0 0x20>;
+               };
+
+               qos_usb3: qos@feea0100 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeea0100 0x0 0x20>;
+               };
+
+               qos_crypto_apb: qos@feeb0000 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0000 0x0 0x20>;
+               };
+
+               qos_crypto: qos@feeb0100 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0100 0x0 0x20>;
+               };
+
+               qos_dmac: qos@feeb0200 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0200 0x0 0x20>;
+               };
+
+               qos_emmc: qos@feeb0300 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0300 0x0 0x20>;
+               };
+
+               qos_fspi: qos@feeb0400 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0400 0x0 0x20>;
+               };
+
+               qos_rkdma: qos@feeb0500 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0500 0x0 0x20>;
+               };
+
+               qos_sdmmc0: qos@feeb0600 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0600 0x0 0x20>;
+               };
+
+               qos_sdmmc1: qos@feeb0700 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0700 0x0 0x20>;
+               };
+
+               qos_usb2: qos@feeb0800 {
+                       compatible = "rockchip,rk3562-qos", "syscon";
+                       reg = <0x0 0xfeeb0800 0x0 0x20>;
+               };
+
+               pmu_grf: syscon@ff010000 {
+                       compatible = "rockchip,rk3562-pmu-grf", "syscon", "simple-mfd";
+                       reg = <0x0 0xff010000 0x0 0x10000>;
+
+                       reboot_mode: reboot-mode {
+                               compatible = "syscon-reboot-mode";
+                               offset = <0x220>;
+                               mode-normal = <BOOT_NORMAL>;
+                               mode-loader = <BOOT_BL_DOWNLOAD>;
+                               mode-recovery = <BOOT_RECOVERY>;
+                               mode-bootloader = <BOOT_FASTBOOT>;
+                       };
+               };
+
+               sys_grf: syscon@ff030000 {
+                       compatible = "rockchip,rk3562-sys-grf", "syscon";
+                       reg = <0x0 0xff030000 0x0 0x10000>;
+               };
+
+               peri_grf: syscon@ff040000 {
+                       compatible = "rockchip,rk3562-peri-grf", "syscon";
+                       reg = <0x0 0xff040000 0x0 0x10000>;
+               };
+
+               ioc_grf: syscon@ff060000 {
+                       compatible = "rockchip,rk3562-ioc-grf", "syscon";
+                       reg = <0x0 0xff060000 0x0 0x30000>;
+               };
+
+               usbphy_grf: syscon@ff090000 {
+                       compatible = "rockchip,rk3562-usbphy-grf", "syscon";
+                       reg = <0x0 0xff090000 0x0 0x8000>;
+               };
+
+               pipephy_grf: syscon@ff098000 {
+                       compatible = "rockchip,rk3562-pipephy-grf", "syscon";
+                       reg = <0x0 0xff098000 0x0 0x8000>;
+               };
+
+               cru: clock-controller@ff100000 {
+                       compatible = "rockchip,rk3562-cru";
+                       reg = <0x0 0xff100000 0x0 0x40000>;
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+
+                       assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>,
+                                         <&cru PLL_HPLL>;
+                       assigned-clock-rates = <1188000000>, <1000000000>,
+                                              <983040000>;
+               };
+
+               i2c0: i2c@ff200000 {
+                       compatible = "rockchip,rk3562-i2c", "rockchip,rk3399-i2c";
+                       reg = <0x0 0xff200000 0x0 0x1000>;
+                       clocks = <&cru CLK_PMU0_I2C0>, <&cru PCLK_PMU0_I2C0>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c0_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               uart0: serial@ff210000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff210000 0x0 0x100>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_PMU1_UART0>, <&cru PCLK_PMU1_UART0>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               spi0: spi@ff220000 {
+                       compatible = "rockchip,rk3562-spi", "rockchip,rk3066-spi";
+                       reg = <0x0 0xff220000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru CLK_PMU1_SPI0>, <&cru PCLK_PMU1_SPI0>;
+                       clock-names = "spiclk", "apb_pclk";
+                       dmas = <&dmac 13>, <&dmac 12>;
+                       dma-names = "tx", "rx";
+                       num-cs = <2>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi0m0_csn0 &spi0m0_csn1 &spi0m0_pins>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               pwm0: pwm@ff230000 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff230000 0x0 0x10>;
+                       clocks = <&cru CLK_PMU1_PWM0>, <&cru PCLK_PMU1_PWM0>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm0m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm1: pwm@ff230010 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff230010 0x0 0x10>;
+                       clocks = <&cru CLK_PMU1_PWM0>, <&cru PCLK_PMU1_PWM0>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm1m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm2: pwm@ff230020 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff230020 0x0 0x10>;
+                       clocks = <&cru CLK_PMU1_PWM0>, <&cru PCLK_PMU1_PWM0>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm2m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm3: pwm@ff230030 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff230030 0x0 0x10>;
+                       clocks = <&cru CLK_PMU1_PWM0>, <&cru PCLK_PMU1_PWM0>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm3m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pmu: power-management@ff258000 {
+                       compatible = "rockchip,rk3562-pmu", "syscon", "simple-mfd";
+                       reg = <0x0 0xff258000 0x0 0x1000>;
+
+                       power: power-controller {
+                               compatible = "rockchip,rk3562-power-controller";
+                               #power-domain-cells = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               power-domain@8 {
+                                       reg = <8>;
+                                       pm_qos = <&qos_gpu>;
+                                       #power-domain-cells = <0>;
+                               };
+
+                               power-domain@7 {
+                                       reg = <7>;
+                                       pm_qos = <&qos_npu>;
+                                       #power-domain-cells = <0>;
+                               };
+
+                               power-domain@11 {
+                                       reg = <11>;
+                                       pm_qos = <&qos_rkvdec>;
+                                       #power-domain-cells = <0>;
+                               };
+
+                               power-domain@12 {
+                                       reg = <12>;
+                                       pm_qos = <&qos_isp>,
+                                                <&qos_vicap>;
+                                       #power-domain-cells = <1>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       power-domain@10 {
+                                               reg = <10>;
+                                               pm_qos = <&qos_vepu>;
+                                               #power-domain-cells = <0>;
+                                       };
+                               };
+
+                               power-domain@13 {
+                                       reg = <13>;
+                                       pm_qos = <&qos_vop>;
+                                       #power-domain-cells = <1>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       power-domain@14 {
+                                               reg = <14>;
+                                               pm_qos = <&qos_rga_rd>,
+                                                        <&qos_rga_wr>,
+                                                        <&qos_jpeg>;
+                                               #power-domain-cells = <0>;
+                                       };
+                               };
+
+                               power-domain@15 {
+                                       reg = <15>;
+                                       pm_qos = <&qos_pcie>,
+                                                <&qos_usb3>;
+                                       #power-domain-cells = <0>;
+                               };
+                       };
+               };
+
+               gpu: gpu@ff320000 {
+                       compatible = "rockchip,rk3562-mali", "arm,mali-bifrost";
+                       reg = <0x0 0xff320000 0x0 0x4000>;
+                       clocks = <&cru CLK_GPU>, <&cru CLK_GPU_BRG>,
+                                <&cru ACLK_GPU_PRE>;
+                       clock-names = "clk_gpu", "clk_gpu_brg", "aclk_gpu";
+                       dynamic-power-coefficient = <820>;
+                       interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "job", "mmu", "gpu";
+                       operating-points-v2 = <&gpu_opp_table>;
+                       power-domains = <&power 8>;
+                       #cooling-cells = <2>;
+                       status = "disabled";
+               };
+
+               spi1: spi@ff640000 {
+                       compatible = "rockchip,rk3066-spi";
+                       reg = <0x0 0xff640000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru CLK_SPI1>, <&cru PCLK_SPI1>;
+                       clock-names = "spiclk", "apb_pclk";
+                       dmas = <&dmac 15>, <&dmac 14>;
+                       dma-names = "tx", "rx";
+                       num-cs = <2>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi1m0_csn0 &spi1m0_csn1 &spi1m0_pins>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi2: spi@ff650000 {
+                       compatible = "rockchip,rk3066-spi";
+                       reg = <0x0 0xff650000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru CLK_SPI2>, <&cru PCLK_SPI2>;
+                       clock-names = "spiclk", "apb_pclk";
+                       dmas = <&dmac 17>, <&dmac 16>;
+                       dma-names = "tx", "rx";
+                       num-cs = <2>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&spi2m0_csn0 &spi2m0_csn1 &spi2m0_pins>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               uart1: serial@ff670000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff670000 0x0 0x100>;
+                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uart2: serial@ff680000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff680000 0x0 0x100>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uart3: serial@ff690000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff690000 0x0 0x100>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uart4: serial@ff6a0000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff6a0000 0x0 0x100>;
+                       interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uart5: serial@ff6b0000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff6b0000 0x0 0x100>;
+                       interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uart6: serial@ff6c0000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff6c0000 0x0 0x100>;
+                       interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uart7: serial@ff6d0000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff6d0000 0x0 0x100>;
+                       interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uart8: serial@ff6e0000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff6e0000 0x0 0x100>;
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART8>, <&cru PCLK_UART8>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               uart9: serial@ff6f0000 {
+                       compatible = "rockchip,rk3562-uart", "snps,dw-apb-uart";
+                       reg = <0x0 0xff6f0000 0x0 0x100>;
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_UART9>, <&cru PCLK_UART9>;
+                       clock-names = "baudclk", "apb_pclk";
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+
+               pwm4: pwm@ff700000 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff700000 0x0 0x10>;
+                       clocks = <&cru CLK_PWM1_PERI>, <&cru PCLK_PWM1_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm4m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm5: pwm@ff700010 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff700010 0x0 0x10>;
+                       clocks = <&cru CLK_PWM1_PERI>, <&cru PCLK_PWM1_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm5m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm6: pwm@ff700020 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff700020 0x0 0x10>;
+                       clocks = <&cru CLK_PWM1_PERI>, <&cru PCLK_PWM1_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm6m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm7: pwm@ff700030 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff700030 0x0 0x10>;
+                       clocks = <&cru CLK_PWM1_PERI>, <&cru PCLK_PWM1_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm7m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm8: pwm@ff710000 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff710000 0x0 0x10>;
+                       clocks = <&cru CLK_PWM2_PERI>, <&cru PCLK_PWM2_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm8m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm9: pwm@ff710010 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff710010 0x0 0x10>;
+                       clocks = <&cru CLK_PWM2_PERI>, <&cru PCLK_PWM2_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm9m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm10: pwm@ff710020 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff710020 0x0 0x10>;
+                       clocks = <&cru CLK_PWM2_PERI>, <&cru PCLK_PWM2_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm10m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm11: pwm@ff710030 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff710030 0x0 0x10>;
+                       clocks = <&cru CLK_PWM2_PERI>, <&cru PCLK_PWM2_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm11m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm12: pwm@ff720000 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff720000 0x0 0x10>;
+                       clocks = <&cru CLK_PWM3_PERI>, <&cru PCLK_PWM3_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm12m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm13: pwm@ff720010 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff720010 0x0 0x10>;
+                       clocks = <&cru CLK_PWM3_PERI>, <&cru PCLK_PWM3_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm13m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm14: pwm@ff720020 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff720020 0x0 0x10>;
+                       clocks = <&cru CLK_PWM3_PERI>, <&cru PCLK_PWM3_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm14m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm15: pwm@ff720030 {
+                       compatible = "rockchip,rk3562-pwm", "rockchip,rk3328-pwm";
+                       reg = <0x0 0xff720030 0x0 0x10>;
+                       clocks = <&cru CLK_PWM3_PERI>, <&cru PCLK_PWM3_PERI>;
+                       clock-names = "pwm", "pclk";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwm15m0_pins>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               saradc0: adc@ff730000 {
+                       compatible = "rockchip,rk3562-saradc";
+                       reg = <0x0 0xff730000 0x0 0x100>;
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
+                       clock-names = "saradc", "apb_pclk";
+                       resets = <&cru SRST_P_SARADC>;
+                       reset-names = "saradc-apb";
+                       #io-channel-cells = <1>;
+                       status = "disabled";
+               };
+
+               combphy: phy@ff750000 {
+                       compatible = "rockchip,rk3562-naneng-combphy";
+                       reg = <0x0 0xff750000 0x0 0x100>;
+                       #phy-cells = <1>;
+                       clocks = <&cru CLK_PIPEPHY_REF>, <&cru PCLK_PIPEPHY>,
+                                <&cru PCLK_PHP>;
+                       clock-names = "ref", "apb", "pipe";
+                       assigned-clocks = <&cru CLK_PIPEPHY_REF>;
+                       assigned-clock-rates = <100000000>;
+                       resets = <&cru SRST_PIPEPHY>;
+                       reset-names = "phy";
+                       rockchip,pipe-grf = <&peri_grf>;
+                       rockchip,pipe-phy-grf = <&pipephy_grf>;
+                       status = "disabled";
+               };
+
+               sfc: spi@ff860000 {
+                       compatible = "rockchip,sfc";
+                       reg = <0x0 0xff860000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 128 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru SCLK_SFC>, <&cru HCLK_SFC>;
+                       clock-names = "clk_sfc", "hclk_sfc";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               sdhci: mmc@ff870000 {
+                       compatible = "rockchip,rk3562-dwcmshc", "rockchip,rk3588-dwcmshc";
+                       reg = <0x0 0xff870000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       assigned-clocks = <&cru BCLK_EMMC>, <&cru CCLK_EMMC>;
+                       assigned-clock-rates = <200000000>, <200000000>;
+                       clocks = <&cru CCLK_EMMC>, <&cru HCLK_EMMC>,
+                                <&cru ACLK_EMMC>, <&cru BCLK_EMMC>,
+                                <&cru TMCLK_EMMC>;
+                       clock-names = "core", "bus", "axi", "block", "timer";
+                       resets = <&cru SRST_C_EMMC>, <&cru SRST_H_EMMC>,
+                                <&cru SRST_A_EMMC>, <&cru SRST_B_EMMC>,
+                                <&cru SRST_T_EMMC>;
+                       reset-names = "core", "bus", "axi", "block", "timer";
+                       max-frequency = <200000000>;
+                       status = "disabled";
+               };
+
+               sdmmc0: mmc@ff880000 {
+                       compatible = "rockchip,rk3562-dw-mshc",
+                                    "rockchip,rk3288-dw-mshc";
+                       reg = <0x0 0xff880000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru HCLK_SDMMC0>, <&cru CCLK_SDMMC0>,
+                                <&cru SCLK_SDMMC0_DRV>, <&cru SCLK_SDMMC0_SAMPLE>;
+                       clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+                       fifo-depth = <0x100>;
+                       max-frequency = <200000000>;
+                       resets = <&cru SRST_H_SDMMC0>;
+                       reset-names = "reset";
+                       status = "disabled";
+               };
+
+               sdmmc1: mmc@ff890000 {
+                       compatible = "rockchip,rk3562-dw-mshc",
+                                    "rockchip,rk3288-dw-mshc";
+                       reg = <0x0 0xff890000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru HCLK_SDMMC1>, <&cru CCLK_SDMMC1>,
+                                <&cru SCLK_SDMMC1_DRV>, <&cru SCLK_SDMMC1_SAMPLE>;
+                       clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
+                       fifo-depth = <0x100>;
+                       max-frequency = <200000000>;
+                       resets = <&cru SRST_H_SDMMC1>;
+                       reset-names = "reset";
+                       status = "disabled";
+               };
+
+               dmac: dma-controller@ff990000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       reg = <0x0 0xff990000 0x0 0x4000>;
+                       arm,pl330-periph-burst;
+                       clocks = <&cru ACLK_DMAC>;
+                       clock-names = "apb_pclk";
+                       interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+               };
+
+               i2c1: i2c@ffa00000 {
+                       compatible = "rockchip,rk3562-i2c", "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa00000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c1m0_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@ffa10000 {
+                       compatible = "rockchip,rk3562-i2c", "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa10000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c2m0_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@ffa20000 {
+                       compatible = "rockchip,rk3562-i2c", "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa20000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c3m0_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c@ffa30000 {
+                       compatible = "rockchip,rk3562-i2c", "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa30000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c4m0_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c5: i2c@ffa40000 {
+                       compatible = "rockchip,rk3562-i2c", "rockchip,rk3399-i2c";
+                       reg = <0x0 0xffa40000 0x0 0x1000>;
+                       clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>;
+                       clock-names = "i2c", "pclk";
+                       interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c5m0_xfer>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               saradc1: adc@ffaa0000 {
+                       compatible = "rockchip,rk3562-saradc";
+                       reg = <0x0 0xffaa0000 0x0 0x100>;
+                       interrupts = <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru CLK_SARADC_VCCIO156>, <&cru PCLK_SARADC_VCCIO156>;
+                       clock-names = "saradc", "apb_pclk";
+                       resets = <&cru SRST_P_SARADC_VCCIO156>;
+                       reset-names = "saradc-apb";
+                       #io-channel-cells = <1>;
+                       status = "disabled";
+               };
+       };
+};
+
+#include "rk3562-pinctrl.dtsi"
index 7d46809338239395196299167e7f51a42bdb0066..decc6deeef4e0d1ff05206f614d141dcbdb36cc8 100644 (file)
@@ -19,9 +19,9 @@
 
        aliases {
                ethernet0 = &gmac1;
-               mmc0 = &sdmmc0;
-               mmc1 = &sdmmc1;
-               mmc2 = &sdhci;
+               mmc0 = &sdhci;
+               mmc1 = &sdmmc0;
+               mmc2 = &sdmmc1;
        };
 
        chosen: chosen {
index 26cf765a72973a5f14e3d4deba1457997aadab83..3473b1eef5cdb8824294b09a4a6ea55c94b7fefa 100644 (file)
                spi-max-frequency = <100000000>;
                spi-rx-bus-width = <2>;
                spi-tx-bus-width = <1>;
+               vcc-supply = <&vcc_1v8>;
        };
 };
 
index 3c127c5c2607a5f6e971f4fed6d9673a19f40bed..a9021c524afbf8bfb697e8467761f4d66b556038 100644 (file)
@@ -30,6 +30,7 @@
 
        fan: gpio_fan {
                compatible = "gpio-fan";
+               fan-supply = <&vcc12v_dcin>;
                gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
                gpio-fan,speed-map =
                                <   0 0>,
index 5707321a1144fcca99ba61f7764e0d47daa38bd6..f8cf03380636563f9efc38b4641ba739660ec086 100644 (file)
                spi-max-frequency = <24000000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <1>;
+               vcc-supply = <&vcc_1v8>;
        };
 };
 
index 53e71528e4c4c7bf37e6a2adf6019a1f8f43aab5..6224d72813e593a1830a7a79723d82155428b55c 100644 (file)
                spi-max-frequency = <104000000>;
                spi-rx-bus-width = <4>;
                spi-tx-bus-width = <1>;
+               vcc-supply = <&vcc_1v8>;
        };
 };
 
index b6ad8328c7ebc4102552d6374ea548b5bcd8c9d5..539edc3c535fb9f82cdaedc58e22a0e874c45e40 100644 (file)
        gpio-leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
-               pinctrl-0 = <&lan1_led_pin>, <&lan2_led_pin>, <&power_led_pin>, <&wan_led_pin>;
+               pinctrl-0 = <&lan1_led_pin>, <&lan2_led_pin>, <&sys_led_pin>, <&wan_led_pin>;
 
                led-lan1 {
                        color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
                        function = LED_FUNCTION_LAN;
                        function-enumerator = <1>;
                        gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_HIGH>;
+                       label = "LAN-1";
                };
 
                led-lan2 {
                        color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
                        function = LED_FUNCTION_LAN;
                        function-enumerator = <2>;
                        gpios = <&gpio3 RK_PD7 GPIO_ACTIVE_HIGH>;
+                       label = "LAN-2";
                };
 
-               power_led: led-power {
+               power_led: led-sys {
                        color = <LED_COLOR_ID_RED>;
                        function = LED_FUNCTION_POWER;
-                       linux,default-trigger = "heartbeat";
                        gpios = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>;
+                       label = "SYS";
+                       linux,default-trigger = "heartbeat";
                };
 
                led-wan {
                        color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
                        function = LED_FUNCTION_WAN;
                        gpios = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>;
+                       label = "WAN";
                };
        };
 };
@@ -58,6 +65,7 @@
        clock_in_out = "output";
        phy-handle = <&rgmii_phy0>;
        phy-mode = "rgmii";
+       phy-supply = <&vcc_3v3>;
        pinctrl-names = "default";
        pinctrl-0 = <&gmac0_miim
                     &gmac0_tx_bus2
                        rockchip,pins = <3 RK_PD7 RK_FUNC_GPIO &pcfg_pull_none>;
                };
 
-               power_led_pin: power-led-pin {
+               sys_led_pin: sys-led-pin {
                        rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
                };
 
index 00c479aa18711a8382f1f707c3b6e9d91bdacd37..a28b4af10d13a2612f201743b9ed41fffde30ebf 100644 (file)
 &sdhci {
        bus-width = <8>;
        max-frequency = <200000000>;
+       mmc-hs200-1_8v;
        non-removable;
        pinctrl-names = "default";
-       pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>;
+       pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
+       vmmc-supply = <&vcc_3v3>;
+       vqmmc-supply = <&vcc_1v8>;
        status = "okay";
 };
 
index b80d628c426b7183693fc0b7356259f4a20739d2..6ae4316761c43911368037b2dfc4bbce74b34a58 100644 (file)
 };
 
 &mdio0 {
-       rgmii_phy0: ethernet-phy@0 {
+       rgmii_phy0: ethernet-phy@3 {
+               /* Motorcomm YT8521 phy */
                compatible = "ethernet-phy-ieee802.3-c22";
-               reg = <0x0>;
+               reg = <0x3>;
+               pinctrl-0 = <&eth_phy0_reset_pin>;
+               pinctrl-names = "default";
+               reset-assert-us = <10000>;
+               reset-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_LOW>;
        };
 };
 
 };
 
 &pinctrl {
+       gmac0 {
+               eth_phy0_reset_pin: eth-phy0-reset-pin {
+                       rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
        keys {
                copy_button_pin: copy-button-pin {
                        rockchip,pins = <0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>;
index 695cccbdab0f98e8af830d5849e2012a9da6a7dc..e719a3df126c59ce532d3e26cf358fd2160c1d9c 100644 (file)
                compatible = "rockchip,rk3568-pcie";
                #address-cells = <3>;
                #size-cells = <2>;
-               bus-range = <0x0 0xf>;
+               bus-range = <0x10 0x1f>;
                clocks = <&cru ACLK_PCIE30X1_MST>, <&cru ACLK_PCIE30X1_SLV>,
                         <&cru ACLK_PCIE30X1_DBI>, <&cru PCLK_PCIE30X1>,
                         <&cru CLK_PCIE30X1_AUX_NDFT>;
                num-ib-windows = <6>;
                num-ob-windows = <2>;
                max-link-speed = <3>;
-               msi-map = <0x0 &gic 0x1000 0x1000>;
+               msi-map = <0x1000 &its 0x1000 0x1000>;
                num-lanes = <1>;
                phys = <&pcie30phy>;
                phy-names = "pcie-phy";
                compatible = "rockchip,rk3568-pcie";
                #address-cells = <3>;
                #size-cells = <2>;
-               bus-range = <0x0 0xf>;
+               bus-range = <0x20 0x2f>;
                clocks = <&cru ACLK_PCIE30X2_MST>, <&cru ACLK_PCIE30X2_SLV>,
                         <&cru ACLK_PCIE30X2_DBI>, <&cru PCLK_PCIE30X2>,
                         <&cru CLK_PCIE30X2_AUX_NDFT>;
                num-ib-windows = <6>;
                num-ob-windows = <2>;
                max-link-speed = <3>;
-               msi-map = <0x0 &gic 0x2000 0x1000>;
+               msi-map = <0x2000 &its 0x2000 0x1000>;
                num-lanes = <2>;
                phys = <&pcie30phy>;
                phy-names = "pcie-phy";
index 314067ba6f3c4f725fdfff0442cd44d86b1293a4..801b40fea4e8808c3f889ddd3ed3aa875a377567 100644 (file)
                };
        };
 
+       es8388_sound: es8388-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,name = "On-board Analog ES8388";
+               simple-audio-card,widgets = "Microphone", "Headphone Mic",
+                                           "Microphone", "Mic Pads",
+                                           "Headphone", "Headphone",
+                                           "Line Out", "Line Out";
+               simple-audio-card,routing = "Headphone", "LOUT1",
+                                           "Headphone", "ROUT1",
+                                           "Line Out", "LOUT2",
+                                           "Line Out", "ROUT2",
+                                           "RINPUT1", "Headphone Mic",
+                                           "LINPUT2", "Mic Pads",
+                                           "RINPUT2", "Mic Pads";
+               simple-audio-card,pin-switches = "Headphone", "Line Out";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai1>;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&es8388>;
+                       system-clock-frequency = <12288000>;
+               };
+       };
+
        vcc_12v0_dcin: regulator-vcc-12v0-dcin {
                compatible = "regulator-fixed";
                regulator-name = "vcc_12v0_dcin";
 
        vcc_3v3_pcie: regulator-vcc-3v3-pcie {
                compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie_pwr_en>;
                regulator-name = "vcc_3v3_pcie";
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
        };
 };
 
+&combphy0_ps {
+       status = "okay";
+};
+
+&cpu_b0 {
+       cpu-supply = <&vdd_cpu_big_s0>;
+};
+
+&cpu_b1 {
+       cpu-supply = <&vdd_cpu_big_s0>;
+};
+
+&cpu_b2 {
+       cpu-supply = <&vdd_cpu_big_s0>;
+};
+
+&cpu_b3 {
+       cpu-supply = <&vdd_cpu_big_s0>;
+};
+
 &cpu_l0 {
        cpu-supply = <&vdd_cpu_lit_s0>;
 };
 
+&cpu_l1 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l2 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l3 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
 &gmac0 {
        phy-mode = "rgmii-id";
        clock_in_out = "output";
        };
 };
 
+&hdmi_sound {
+       status = "okay";
+};
+
 &hdptxphy {
        status = "okay";
 };
        };
 };
 
+&i2c3 {
+       status = "okay";
+
+       es8388: audio-codec@10 {
+               compatible = "everest,es8388", "everest,es8328";
+               reg = <0x10>;
+               clocks = <&cru CLK_SAI1_MCLKOUT_TO_IO>;
+               AVDD-supply = <&vcca_3v3_s0>;
+               DVDD-supply = <&vcc_3v3_s0>;
+               HPVDD-supply = <&vcca_3v3_s0>;
+               PVDD-supply = <&vcc_3v3_s0>;
+               assigned-clocks = <&cru CLK_SAI1_MCLKOUT_TO_IO>;
+               assigned-clock-rates = <12288000>;
+               #sound-dai-cells = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sai1m0_mclk>;
+       };
+};
+
 &mdio0 {
        rgmii_phy0: phy@1 {
                compatible = "ethernet-phy-ieee802.3-c22";
        };
 };
 
+&pcie0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie_reset>;
+       reset-gpios = <&gpio2 RK_PB4 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc_3v3_pcie>;
+       status = "okay";
+};
+
 &pinctrl {
        headphone {
                hp_det: hp-det {
                        rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
+
+       pcie {
+               pcie_pwr_en: pcie-pwr-en {
+                       rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+               pcie_reset: pcie-reset {
+                       rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&sai1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sai1m0_lrck
+                    &sai1m0_sclk
+                    &sai1m0_sdi0
+                    &sai1m0_sdo0>;
+       status = "okay";
+};
+
+&sai6 {
+       status = "okay";
 };
 
 &sdhci {
index e368691fd28ec099bff9c6f35265e52658886bf9..0902d694cef43a0c46ce62c490495e0a8b591a0a 100644 (file)
                vin-supply = <&vcc_3v3_s0>;
        };
 
-       vcc3v3_pcie0: regulator-vcc3v3-pcie0 {
+       vcc3v3_pcie1: regulator-vcc3v3-pcie1 {
                compatible = "regulator-fixed";
                regulator-name = "vcc3v3_pcie1";
                regulator-min-microvolt = <3300000>;
        };
 };
 
+&pcie1 {
+       reset-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie1>;
+
+       /*
+        * Disable usb_drd1_dwc3 if enabling pcie1 and set Dial_Switch_1
+        * to low state according to the schematic of page 17.
+        */
+       status = "disabled";
+};
+
 &pinctrl {
        usb {
                usb_host_pwren: usb-host-pwren {
        status = "okay";
 };
 
+&ufshc {
+       status = "okay";
+};
+
 &usbdp_phy {
        rockchip,dp-lane-mux = <2 3>;
        status = "okay";
index 612b7bb0b7493b453f2f2dc4e6931ef2287ed0a7..d4e437ea6cd8606f8d06639cb16d7257dc623aaf 100644 (file)
@@ -10,6 +10,7 @@
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/pinctrl/rockchip.h>
 #include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
 #include <dt-bindings/usb/pd.h>
 #include "rk3576.dtsi"
 
                };
        };
 
+       hdmi-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi_out_con>;
+                       };
+               };
+       };
+
        vbus5v0_typec: regulator-vbus5v0-typec {
                compatible = "regulator-fixed";
                enable-active-high;
        status = "okay";
 };
 
+&hdmi {
+       status = "okay";
+};
+
+&hdmi_in {
+       hdmi_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi>;
+       };
+};
+
+&hdmi_out {
+       hdmi_out_con: endpoint {
+               remote-endpoint = <&hdmi_con_in>;
+       };
+};
+
+&hdptxphy {
+       status = "okay";
+};
+
 &mdio0 {
        status = "okay";
 
        pinctrl-0 = <&uart6m3_xfer>;
        status = "okay";
 };
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi_in_vp0>;
+       };
+};
index ebb5fc8bb8b1363127b9d3782801c4a79b678a92..64812e3bcb613c2dfc6c0fd215408fb688293487 100644 (file)
                };
        };
 
+       hdmi_sound: hdmi-sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "HDMI";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,mclk-fs = <256>;
+               status = "disabled";
+
+               simple-audio-card,codec {
+                       sound-dai = <&hdmi>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai6>;
+               };
+       };
+
+       pinctrl: pinctrl {
+               compatible = "rockchip,rk3576-pinctrl";
+               rockchip,grf = <&ioc_grf>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               gpio0: gpio@27320000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0x27320000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 0 32>;
+                       interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio1: gpio@2ae10000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0x2ae10000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 32 32>;
+                       interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio2: gpio@2ae20000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0x2ae20000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 64 32>;
+                       interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio3: gpio@2ae30000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0x2ae30000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 96 32>;
+                       interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio4: gpio@2ae40000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x0 0x2ae40000 0x0 0x200>;
+                       clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
+                       gpio-controller;
+                       gpio-ranges = <&pinctrl 0 128 32>;
+                       interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #gpio-cells = <2>;
+                       #interrupt-cells = <2>;
+               };
+       };
+
        pmu_a53: pmu-a53 {
                compatible = "arm,cortex-a53-pmu";
                interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
                #size-cells = <2>;
                ranges;
 
+               pcie0: pcie@22000000 {
+                       compatible = "rockchip,rk3576-pcie", "rockchip,rk3568-pcie";
+                       reg = <0x0 0x22000000 0x0 0x00400000>,
+                             <0x0 0x2a200000 0x0 0x00010000>,
+                             <0x0 0x20000000 0x0 0x00100000>;
+                       reg-names = "dbi", "apb", "config";
+                       bus-range = <0x0 0xf>;
+                       clocks = <&cru ACLK_PCIE0_MST>, <&cru ACLK_PCIE0_SLV>,
+                                <&cru ACLK_PCIE0_DBI>, <&cru PCLK_PCIE0>,
+                                <&cru CLK_PCIE0_AUX>;
+                       clock-names = "aclk_mst", "aclk_slv",
+                                     "aclk_dbi", "pclk",
+                                     "aux";
+                       device_type = "pci";
+                       interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 282 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie0_intc 0>,
+                                       <0 0 0 2 &pcie0_intc 1>,
+                                       <0 0 0 3 &pcie0_intc 2>,
+                                       <0 0 0 4 &pcie0_intc 3>;
+                       linux,pci-domain = <0>;
+                       max-link-speed = <2>;
+                       num-ib-windows = <8>;
+                       num-viewport = <8>;
+                       num-ob-windows = <2>;
+                       num-lanes = <1>;
+                       phys = <&combphy0_ps PHY_TYPE_PCIE>;
+                       phy-names = "pcie-phy";
+                       power-domains = <&power RK3576_PD_PHP>;
+                       ranges = <0x01000000 0x0 0x20100000 0x0 0x20100000 0x0 0x00100000
+                                 0x02000000 0x0 0x20200000 0x0 0x20200000 0x0 0x00e00000
+                                 0x03000000 0x9 0x00000000 0x9 0x00000000 0x0 0x80000000>;
+                       resets = <&cru SRST_PCIE0_POWER_UP>, <&cru SRST_P_PCIE0>;
+                       reset-names = "pwr", "pipe";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       status = "disabled";
+
+                       pcie0_intc: legacy-interrupt-controller {
+                               interrupt-controller;
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&gic>;
+                               interrupts = <GIC_SPI 280 IRQ_TYPE_EDGE_RISING>;
+                       };
+               };
+
+               pcie1: pcie@22400000 {
+                       compatible = "rockchip,rk3576-pcie", "rockchip,rk3568-pcie";
+                       reg = <0x0 0x22400000 0x0 0x00400000>,
+                             <0x0 0x2a210000 0x0 0x00010000>,
+                             <0x0 0x21000000 0x0 0x00100000>;
+                       reg-names = "dbi", "apb", "config";
+                       bus-range = <0x20 0x2f>;
+                       clocks = <&cru ACLK_PCIE1_MST>, <&cru ACLK_PCIE1_SLV>,
+                                <&cru ACLK_PCIE1_DBI>, <&cru PCLK_PCIE1>,
+                                <&cru CLK_PCIE1_AUX>;
+                       clock-names = "aclk_mst", "aclk_slv",
+                                     "aclk_dbi", "pclk",
+                                     "aux";
+                       device_type = "pci";
+                       interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 264 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "sys", "pmc", "msg", "legacy", "err", "msi";
+                       #interrupt-cells = <1>;
+                       interrupt-map-mask = <0 0 0 7>;
+                       interrupt-map = <0 0 0 1 &pcie1_intc 0>,
+                                       <0 0 0 2 &pcie1_intc 1>,
+                                       <0 0 0 3 &pcie1_intc 2>,
+                                       <0 0 0 4 &pcie1_intc 3>;
+                       linux,pci-domain = <1>;
+                       max-link-speed = <2>;
+                       num-ib-windows = <8>;
+                       num-viewport = <8>;
+                       num-ob-windows = <2>;
+                       num-lanes = <1>;
+                       phys = <&combphy1_psu PHY_TYPE_PCIE>;
+                       phy-names = "pcie-phy";
+                       power-domains = <&power RK3576_PD_SUBPHP>;
+                       ranges = <0x01000000 0x0 0x21100000 0x0 0x21100000 0x0 0x00100000
+                                 0x02000000 0x0 0x21200000 0x0 0x21200000 0x0 0x00e00000
+                                 0x03000000 0x9 0x80000000 0x9 0x80000000 0x0 0x80000000>;
+                       resets = <&cru SRST_PCIE1_POWER_UP>, <&cru SRST_P_PCIE1>;
+                       reset-names = "pwr", "pipe";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       status = "disabled";
+
+                       pcie1_intc: legacy-interrupt-controller {
+                               interrupt-controller;
+                               #address-cells = <0>;
+                               #interrupt-cells = <1>;
+                               interrupt-parent = <&gic>;
+                               interrupts = <GIC_SPI 266 IRQ_TYPE_EDGE_RISING>;
+                       };
+               };
+
                usb_drd0_dwc3: usb@23000000 {
                        compatible = "rockchip,rk3576-dwc3", "snps,dwc3";
                        reg = <0x0 0x23000000 0x0 0x400000>;
                        status = "disabled";
                };
 
+               sai5: sai@27d40000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x27d40000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI5_8CH>, <&cru HCLK_SAI5_8CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac2 3>;
+                       dma-names = "rx";
+                       power-domains = <&power RK3576_PD_VO0>;
+                       resets = <&cru SRST_M_SAI5_8CH>, <&cru SRST_H_SAI5_8CH>;
+                       reset-names = "m", "h";
+                       rockchip,sai-rx-route = <0 1 2 3>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI5";
+                       status = "disabled";
+               };
+
+               sai6: sai@27d50000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x27d50000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI6_8CH>, <&cru HCLK_SAI6_8CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac2 4>, <&dmac2 5>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&power RK3576_PD_VO0>;
+                       resets = <&cru SRST_M_SAI6_8CH>, <&cru SRST_H_SAI6_8CH>;
+                       reset-names = "m", "h";
+                       rockchip,sai-rx-route = <0 1 2 3>;
+                       rockchip,sai-tx-route = <0 1 2 3>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI6";
+                       status = "disabled";
+               };
+
                hdmi: hdmi@27da0000 {
                        compatible = "rockchip,rk3576-dw-hdmi-qp";
                        reg = <0x0 0x27da0000 0x0 0x20000>;
                        reset-names = "ref", "hdp";
                        rockchip,grf = <&ioc_grf>;
                        rockchip,vo-grf = <&vo0_grf>;
+                       #sound-dai-cells = <0>;
                        status = "disabled";
 
                        ports {
                        };
                };
 
+               sai7: sai@27ed0000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x27ed0000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI7_8CH>, <&cru HCLK_SAI7_8CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac2 19>;
+                       dma-names = "tx";
+                       power-domains = <&power RK3576_PD_VO1>;
+                       resets = <&cru SRST_M_SAI7_8CH>, <&cru SRST_H_SAI7_8CH>;
+                       reset-names = "m", "h";
+                       rockchip,sai-tx-route = <0 1 2 3>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI7";
+                       status = "disabled";
+               };
+
+               sai8: sai@27ee0000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x27ee0000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 372 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI8_8CH>, <&cru HCLK_SAI8_8CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac1 7>;
+                       dma-names = "tx";
+                       power-domains = <&power RK3576_PD_VO1>;
+                       resets = <&cru SRST_M_SAI8_8CH>, <&cru SRST_H_SAI8_8CH>;
+                       reset-names = "m", "h";
+                       rockchip,sai-tx-route = <0 1 2 3>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI8";
+                       status = "disabled";
+               };
+
+               sai9: sai@27ef0000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x27ef0000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 373 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI9_8CH>, <&cru HCLK_SAI9_8CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac0 26>;
+                       dma-names = "tx";
+                       power-domains = <&power RK3576_PD_VO1>;
+                       resets = <&cru SRST_M_SAI9_8CH>, <&cru SRST_H_SAI9_8CH>;
+                       reset-names = "m", "h";
+                       rockchip,sai-tx-route = <0 1 2 3>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI9";
+                       status = "disabled";
+               };
+
                qos_hdcp1: qos@27f02000 {
                        compatible = "rockchip,rk3576-qos", "syscon";
                        reg = <0x0 0x27f02000 0x0 0x20>;
                        };
                };
 
+               sata0: sata@2a240000 {
+                       compatible = "rockchip,rk3576-dwc-ahci", "snps,dwc-ahci";
+                       reg = <0x0 0x2a240000 0x0 0x1000>;
+                       clocks = <&cru ACLK_SATA0>, <&cru CLK_PMALIVE0>,
+                                <&cru CLK_RXOOB0>;
+                       clock-names = "sata", "pmalive", "rxoob";
+                       interrupts = <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&power RK3576_PD_SUBPHP>;
+                       phys = <&combphy0_ps PHY_TYPE_SATA>;
+                       phy-names = "sata-phy";
+                       ports-implemented = <0x1>;
+                       dma-coherent;
+                       status = "disabled";
+               };
+
+               sata1: sata@2a250000 {
+                       compatible = "rockchip,rk3576-dwc-ahci", "snps,dwc-ahci";
+                       reg = <0x0 0x2a250000 0x0 0x1000>;
+                       clocks = <&cru ACLK_SATA1>, <&cru CLK_PMALIVE1>,
+                                <&cru CLK_RXOOB1>;
+                       clock-names = "sata", "pmalive", "rxoob";
+                       interrupts = <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH>;
+                       power-domains = <&power RK3576_PD_SUBPHP>;
+                       phys = <&combphy1_psu PHY_TYPE_SATA>;
+                       phy-names = "sata-phy";
+                       ports-implemented = <0x1>;
+                       dma-coherent;
+                       status = "disabled";
+               };
+
                ufshc: ufshc@2a2d0000 {
                        compatible = "rockchip,rk3576-ufshc";
                        reg = <0x0 0x2a2d0000 0x0 0x10000>,
                        interrupts = <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cru SCLK_FSPI1_X2>, <&cru HCLK_FSPI1>;
                        clock-names = "clk_sfc", "hclk_sfc";
+                       power-domains = <&power RK3576_PD_SDGMAC>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                        interrupts = <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&cru SCLK_FSPI_X2>, <&cru HCLK_FSPI>;
                        clock-names = "clk_sfc", "hclk_sfc";
+                       power-domains = <&power RK3576_PD_NVM>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                };
 
+               rng: rng@2a410000 {
+                       compatible = "rockchip,rk3576-rng";
+                       reg = <0x0 0x2a410000 0x0 0x200>;
+                       clocks = <&cru HCLK_TRNG_NS>;
+                       interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH>;
+                       resets = <&cru SRST_H_TRNG_NS>;
+               };
+
                otp: otp@2a580000 {
                        compatible = "rockchip,rk3576-otp";
                        reg = <0x0 0x2a580000 0x0 0x400>;
                        };
                };
 
+               sai0: sai@2a600000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x2a600000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI0_8CH>, <&cru HCLK_SAI0_8CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac0 0>, <&dmac0 1>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&power RK3576_PD_AUDIO>;
+                       resets = <&cru SRST_M_SAI0_8CH>, <&cru SRST_H_SAI0_8CH>;
+                       reset-names = "m", "h";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sai0m0_lrck
+                               &sai0m0_sclk
+                               &sai0m0_sdi0
+                               &sai0m0_sdi1
+                               &sai0m0_sdi2
+                               &sai0m0_sdi3
+                               &sai0m0_sdo0
+                               &sai0m0_sdo1
+                               &sai0m0_sdo2
+                               &sai0m0_sdo3>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI0";
+                       status = "disabled";
+               };
+
+               sai1: sai@2a610000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x2a610000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI1_8CH>, <&cru HCLK_SAI1_8CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac0 2>, <&dmac0 3>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&power RK3576_PD_AUDIO>;
+                       resets = <&cru SRST_M_SAI1_8CH>, <&cru SRST_H_SAI1_8CH>;
+                       reset-names = "m", "h";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sai1m0_lrck
+                               &sai1m0_sclk
+                               &sai1m0_sdi0
+                               &sai1m0_sdo0
+                               &sai1m0_sdo1
+                               &sai1m0_sdo2
+                               &sai1m0_sdo3>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI1";
+                       status = "disabled";
+               };
+
+               sai2: sai@2a620000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x2a620000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI2_2CH>, <&cru HCLK_SAI2_2CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac1 0>, <&dmac1 1>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&power RK3576_PD_AUDIO>;
+                       resets = <&cru SRST_M_SAI2_2CH>, <&cru SRST_H_SAI2_2CH>;
+                       reset-names = "m", "h";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sai2m0_lrck
+                               &sai2m0_sclk
+                               &sai2m0_sdi
+                               &sai2m0_sdo>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI2";
+                       status = "disabled";
+               };
+
+               sai3: sai@2a630000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x2a630000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI3_2CH>, <&cru HCLK_SAI3_2CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac1 2>, <&dmac1 3>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&power RK3576_PD_AUDIO>;
+                       resets = <&cru SRST_M_SAI3_2CH>, <&cru SRST_H_SAI3_2CH>;
+                       reset-names = "m", "h";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sai3m0_lrck
+                               &sai3m0_sclk
+                               &sai3m0_sdi
+                               &sai3m0_sdo>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI3";
+                       status = "disabled";
+               };
+
+               sai4: sai@2a640000 {
+                       compatible = "rockchip,rk3576-sai";
+                       reg = <0x0 0x2a640000 0x0 0x1000>;
+                       interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru MCLK_SAI4_2CH>, <&cru HCLK_SAI4_2CH>;
+                       clock-names = "mclk", "hclk";
+                       dmas = <&dmac2 0>, <&dmac2 1>;
+                       dma-names = "tx", "rx";
+                       power-domains = <&power RK3576_PD_AUDIO>;
+                       resets = <&cru SRST_M_SAI4_2CH>, <&cru SRST_H_SAI4_2CH>;
+                       reset-names = "m", "h";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&sai4m0_lrck
+                               &sai4m0_sclk
+                               &sai4m0_sdi
+                               &sai4m0_sdo>;
+                       #sound-dai-cells = <0>;
+                       sound-name-prefix = "SAI4";
+                       status = "disabled";
+               };
+
                gic: interrupt-controller@2a701000 {
                        compatible = "arm,gic-400";
                        reg = <0x0 0x2a701000 0 0x10000>,
                        status = "disabled";
                };
 
-
                i2c6: i2c@2ac90000 {
                        compatible = "rockchip,rk3576-i2c", "rockchip,rk3399-i2c";
                        reg = <0x0 0x2ac90000 0x0 0x1000>;
                        compatible = "arm,scmi-shmem";
                        reg = <0x0 0x4010f000 0x0 0x100>;
                };
-
-               pinctrl: pinctrl {
-                       compatible = "rockchip,rk3576-pinctrl";
-                       rockchip,grf = <&ioc_grf>;
-                       #address-cells = <2>;
-                       #size-cells = <2>;
-                       ranges;
-
-                       gpio0: gpio@27320000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0x27320000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
-                               gpio-controller;
-                               gpio-ranges = <&pinctrl 0 0 32>;
-                               interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-controller;
-                               #gpio-cells = <2>;
-                               #interrupt-cells = <2>;
-                       };
-
-                       gpio1: gpio@2ae10000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0x2ae10000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
-                               gpio-controller;
-                               gpio-ranges = <&pinctrl 0 32 32>;
-                               interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-controller;
-                               #gpio-cells = <2>;
-                               #interrupt-cells = <2>;
-                       };
-
-                       gpio2: gpio@2ae20000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0x2ae20000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
-                               gpio-controller;
-                               gpio-ranges = <&pinctrl 0 64 32>;
-                               interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-controller;
-                               #gpio-cells = <2>;
-                               #interrupt-cells = <2>;
-                       };
-
-                       gpio3: gpio@2ae30000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0x2ae30000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
-                               gpio-controller;
-                               gpio-ranges = <&pinctrl 0 96 32>;
-                               interrupts = <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-controller;
-                               #gpio-cells = <2>;
-                               #interrupt-cells = <2>;
-                       };
-
-                       gpio4: gpio@2ae40000 {
-                               compatible = "rockchip,gpio-bank";
-                               reg = <0x0 0x2ae40000 0x0 0x200>;
-                               clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
-                               gpio-controller;
-                               gpio-ranges = <&pinctrl 0 128 32>;
-                               interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
-                               interrupt-controller;
-                               #gpio-cells = <2>;
-                               #interrupt-cells = <2>;
-                       };
-               };
        };
 };
 
index 779cd1b1798ce07489eeb72daaf7592c8c0386fc..6ad2759ddccafeef09d7c5d43e503ac8beb36dde 100644 (file)
@@ -4,6 +4,7 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/leds/common.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
 #include "rk3588-armsom-lm7.dtsi"
 
 / {
                pinctrl-0 = <&hp_detect>;
        };
 
+       hdmi0-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi0_con_in: endpoint {
+                               remote-endpoint = <&hdmi0_out_con>;
+                       };
+               };
+       };
+
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
        leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
        status = "okay";
 };
 
+&hdmi0 {
+       status = "okay";
+};
+
+&hdmi0_in {
+       hdmi0_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi0>;
+       };
+};
+
+&hdmi0_out {
+       hdmi0_out_con: endpoint {
+               remote-endpoint = <&hdmi0_con_in>;
+       };
+};
+
+&hdmi0_sound {
+       status = "okay";
+};
+
+&hdmi1 {
+       status = "okay";
+};
+
+&hdmi1_in {
+       hdmi1_in_vp1: endpoint {
+               remote-endpoint = <&vp1_out_hdmi1>;
+       };
+};
+
+&hdmi1_out {
+       hdmi1_out_con: endpoint {
+               remote-endpoint = <&hdmi1_con_in>;
+       };
+};
+
+&hdmi1_sound {
+       status = "okay";
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
+&hdptxphy1 {
+       status = "okay";
+};
+
 &i2c6 {
        status = "okay";
 
        };
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
 &package_thermal {
        polling-delay = <1000>;
 
 &usb_host2_xhci {
        status = "okay";
 };
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi0_in_vp0>;
+       };
+};
+
+&vp1 {
+       vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+               remote-endpoint = <&hdmi1_in_vp1>;
+       };
+};
index 7f874c77410c91cd7f571d2da6fa3acf6fe2b937..6584d73660f62b72f149b6a1eaecb0d338a3fe7c 100644 (file)
                hdmim0_tx0_scl: hdmim0-tx0-scl {
                        rockchip,pins =
                                /* hdmim0_tx0_scl */
-                               <4 RK_PB7 5 &pcfg_pull_none>;
+                               <4 RK_PB7 5 &pcfg_pull_none_drv_level_5_smt>;
                };
 
                /omit-if-no-ref/
                hdmim0_tx0_sda: hdmim0-tx0-sda {
                        rockchip,pins =
                                /* hdmim0_tx0_sda */
-                               <4 RK_PC0 5 &pcfg_pull_none>;
+                               <4 RK_PC0 5 &pcfg_pull_none_drv_level_1_smt>;
                };
 
                /omit-if-no-ref/
                hdmim1_tx0_scl: hdmim1-tx0-scl {
                        rockchip,pins =
                                /* hdmim1_tx0_scl */
-                               <0 RK_PD5 11 &pcfg_pull_none>;
+                               <0 RK_PD5 11 &pcfg_pull_none_drv_level_5_smt>;
                };
 
                /omit-if-no-ref/
                hdmim1_tx0_sda: hdmim1-tx0-sda {
                        rockchip,pins =
                                /* hdmim1_tx0_sda */
-                               <0 RK_PD4 11 &pcfg_pull_none>;
+                               <0 RK_PD4 11 &pcfg_pull_none_drv_level_1_smt>;
                };
 
                /omit-if-no-ref/
                hdmim1_tx1_scl: hdmim1-tx1-scl {
                        rockchip,pins =
                                /* hdmim1_tx1_scl */
-                               <3 RK_PC6 5 &pcfg_pull_none>;
+                               <3 RK_PC6 5 &pcfg_pull_none_drv_level_5_smt>;
                };
 
                /omit-if-no-ref/
                hdmim1_tx1_sda: hdmim1-tx1-sda {
                        rockchip,pins =
                                /* hdmim1_tx1_sda */
-                               <3 RK_PC5 5 &pcfg_pull_none>;
+                               <3 RK_PC5 5 &pcfg_pull_none_drv_level_1_smt>;
                };
                /omit-if-no-ref/
                hdmim2_rx_cec: hdmim2-rx-cec {
                hdmim2_tx0_scl: hdmim2-tx0-scl {
                        rockchip,pins =
                                /* hdmim2_tx0_scl */
-                               <3 RK_PC7 5 &pcfg_pull_none>;
+                               <3 RK_PC7 5 &pcfg_pull_none_drv_level_5_smt>;
                };
 
                /omit-if-no-ref/
                hdmim2_tx0_sda: hdmim2-tx0-sda {
                        rockchip,pins =
                                /* hdmim2_tx0_sda */
-                               <3 RK_PD0 5 &pcfg_pull_none>;
+                               <3 RK_PD0 5 &pcfg_pull_none_drv_level_1_smt>;
                };
 
                /omit-if-no-ref/
                hdmim2_tx1_scl: hdmim2-tx1-scl {
                        rockchip,pins =
                                /* hdmim2_tx1_scl */
-                               <1 RK_PA4 5 &pcfg_pull_none>;
+                               <1 RK_PA4 5 &pcfg_pull_none_drv_level_5_smt>;
                };
 
                /omit-if-no-ref/
                hdmim2_tx1_sda: hdmim2-tx1-sda {
                        rockchip,pins =
                                /* hdmim2_tx1_sda */
-                               <1 RK_PA3 5 &pcfg_pull_none>;
+                               <1 RK_PA3 5 &pcfg_pull_none_drv_level_1_smt>;
                };
 
                /omit-if-no-ref/
index 1e18ad93ba0ebdad31642b88ff0f90ef4e8dc76f..70f03e68ba550d6b9142131dcca86e8ded36e2f1 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/clock/rockchip,rk3588-cru.h>
 #include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/phy/phy.h>
 #include <dt-bindings/power/rk3588-power.h>
 #include <dt-bindings/reset/rockchip,rk3588-cru.h>
 #include <dt-bindings/phy/phy.h>
@@ -95,8 +96,6 @@
                        enable-method = "psci";
                        capacity-dmips-mhz = <530>;
                        clocks = <&scmi_clk SCMI_CLK_CPUL>;
-                       assigned-clocks = <&scmi_clk SCMI_CLK_CPUL>;
-                       assigned-clock-rates = <816000000>;
                        cpu-idle-states = <&CPU_SLEEP>;
                        i-cache-size = <32768>;
                        i-cache-line-size = <64>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
                        clocks = <&scmi_clk SCMI_CLK_CPUB01>;
-                       assigned-clocks = <&scmi_clk SCMI_CLK_CPUB01>;
-                       assigned-clock-rates = <816000000>;
                        cpu-idle-states = <&CPU_SLEEP>;
                        i-cache-size = <65536>;
                        i-cache-line-size = <64>;
                        enable-method = "psci";
                        capacity-dmips-mhz = <1024>;
                        clocks = <&scmi_clk SCMI_CLK_CPUB23>;
-                       assigned-clocks = <&scmi_clk SCMI_CLK_CPUB23>;
-                       assigned-clock-rates = <816000000>;
                        cpu-idle-states = <&CPU_SLEEP>;
                        i-cache-size = <65536>;
                        i-cache-line-size = <64>;
                #clock-cells = <0>;
        };
 
-       pmu_sram: sram@10f000 {
-               compatible = "mmio-sram";
-               reg = <0x0 0x0010f000 0x0 0x100>;
-               ranges = <0 0x0 0x0010f000 0x100>;
-               #address-cells = <1>;
-               #size-cells = <1>;
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
 
-               scmi_shmem: sram@0 {
+               scmi_shmem: shmem@10f000 {
                        compatible = "arm,scmi-shmem";
-                       reg = <0x0 0x100>;
+                       reg = <0x0 0x0010f000 0x0 0x100>;
+                       no-map;
                };
        };
 
                reg = <0x0 0xfd58c000 0x0 0x1000>;
        };
 
+       mipidcphy0_grf: syscon@fd5e8000 {
+               compatible = "rockchip,rk3588-dcphy-grf", "syscon";
+               reg = <0x0 0xfd5e8000 0x0 0x4000>;
+       };
+
+       mipidcphy1_grf: syscon@fd5ec000 {
+               compatible = "rockchip,rk3588-dcphy-grf", "syscon";
+               reg = <0x0 0xfd5ec000 0x0 0x4000>;
+       };
+
        vop_grf: syscon@fd5a4000 {
                compatible = "rockchip,rk3588-vop-grf", "syscon";
                reg = <0x0 0xfd5a4000 0x0 0x2000>;
                status = "disabled";
        };
 
+       dsi0: dsi@fde20000 {
+               compatible = "rockchip,rk3588-mipi-dsi2";
+               reg = <0x0 0xfde20000 0x0 0x10000>;
+               interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH 0>;
+               clocks = <&cru PCLK_DSIHOST0>, <&cru CLK_DSIHOST0>;
+               clock-names = "pclk", "sys";
+               resets = <&cru SRST_P_DSIHOST0>;
+               reset-names = "apb";
+               power-domains = <&power RK3588_PD_VOP>;
+               phys = <&mipidcphy0 PHY_TYPE_DPHY>;
+               phy-names = "dcphy";
+               rockchip,grf = <&vop_grf>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       dsi0_in: port@0 {
+                               reg = <0>;
+                       };
+
+                       dsi0_out: port@1 {
+                               reg = <1>;
+                       };
+               };
+       };
+
+       dsi1: dsi@fde30000 {
+               compatible = "rockchip,rk3588-mipi-dsi2";
+               reg = <0x0 0xfde30000 0x0 0x10000>;
+               interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH 0>;
+               clocks = <&cru PCLK_DSIHOST1>, <&cru CLK_DSIHOST1>;
+               clock-names = "pclk", "sys";
+               resets = <&cru SRST_P_DSIHOST1>;
+               reset-names = "apb";
+               power-domains = <&power RK3588_PD_VOP>;
+               phys = <&mipidcphy1 PHY_TYPE_DPHY>;
+               phy-names = "dcphy";
+               rockchip,grf = <&vop_grf>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       dsi1_in: port@0 {
+                               reg = <0>;
+                       };
+
+                       dsi1_out: port@1 {
+                               reg = <1>;
+                       };
+               };
+       };
+
        hdmi0: hdmi@fde80000 {
                compatible = "rockchip,rk3588-dw-hdmi-qp";
                reg = <0x0 0xfde80000 0x0 0x20000>;
                };
        };
 
+       edp0: edp@fdec0000 {
+               compatible = "rockchip,rk3588-edp";
+               reg = <0x0 0xfdec0000 0x0 0x1000>;
+               clocks = <&cru CLK_EDP0_24M>, <&cru PCLK_EDP0>;
+               clock-names = "dp", "pclk";
+               interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH 0>;
+               phys = <&hdptxphy0>;
+               phy-names = "dp";
+               power-domains = <&power RK3588_PD_VO1>;
+               resets = <&cru SRST_EDP0_24M>, <&cru SRST_P_EDP0>;
+               reset-names = "dp", "apb";
+               rockchip,grf = <&vo1_grf>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       edp0_in: port@0 {
+                               reg = <0>;
+                       };
+
+                       edp0_out: port@1 {
+                               reg = <1>;
+                       };
+               };
+       };
+
        qos_gpu_m0: qos@fdf35000 {
                compatible = "rockchip,rk3588-qos", "syscon";
                reg = <0x0 0xfdf35000 0x0 0x20>;
                reg = <0x0 0xfe378000 0x0 0x200>;
                interrupts = <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH 0>;
                clocks = <&scmi_clk SCMI_HCLK_SECURE_NS>;
-               resets = <&scmi_reset 48>;
+               resets = <&scmi_reset SCMI_SRST_H_TRNG_NS>;
        };
 
        i2s0_8ch: i2s@fe470000 {
                status = "disabled";
        };
 
+       mipidcphy0: phy@feda0000 {
+               compatible = "rockchip,rk3588-mipi-dcphy";
+               reg = <0x0 0xfeda0000 0x0 0x10000>;
+               rockchip,grf = <&mipidcphy0_grf>;
+               clocks = <&cru PCLK_MIPI_DCPHY0>,
+                        <&cru CLK_USBDPPHY_MIPIDCPPHY_REF>;
+               clock-names = "pclk", "ref";
+               resets = <&cru SRST_M_MIPI_DCPHY0>,
+                        <&cru SRST_P_MIPI_DCPHY0>,
+                        <&cru SRST_P_MIPI_DCPHY0_GRF>,
+                        <&cru SRST_S_MIPI_DCPHY0>;
+               reset-names = "m_phy", "apb", "grf", "s_phy";
+               #phy-cells = <1>;
+               status = "disabled";
+       };
+
+       mipidcphy1: phy@fedb0000 {
+               compatible = "rockchip,rk3588-mipi-dcphy";
+               reg = <0x0 0xfedb0000 0x0 0x10000>;
+               rockchip,grf = <&mipidcphy1_grf>;
+               clocks = <&cru PCLK_MIPI_DCPHY1>,
+                        <&cru CLK_USBDPPHY_MIPIDCPPHY_REF>;
+               clock-names = "pclk", "ref";
+               resets = <&cru SRST_M_MIPI_DCPHY1>,
+                        <&cru SRST_P_MIPI_DCPHY1>,
+                        <&cru SRST_P_MIPI_DCPHY1_GRF>,
+                        <&cru SRST_S_MIPI_DCPHY1>;
+               reset-names = "m_phy", "apb", "grf", "s_phy";
+               #phy-cells = <1>;
+               status = "disabled";
+       };
+
        combphy0_ps: phy@fee00000 {
                compatible = "rockchip,rk3588-naneng-combphy";
                reg = <0x0 0xfee00000 0x0 0x100>;
index 9eda69722665fdf67b60adc253be41ee8a820c44..3d5c8b753208ab3c2ee1504404161be090f92be6 100644 (file)
                pwms = <&pwm2 0 25000 0>;
        };
 
-       hdmi-con {
+       hdmi0-con {
                compatible = "hdmi-connector";
                type = "a";
 
                port {
-                       hdmi_con_in: endpoint {
+                       hdmi0_con_in: endpoint {
                                remote-endpoint = <&hdmi0_out_con>;
                        };
                };
        };
 
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
        leds: leds {
                compatible = "gpio-leds";
 
        status = "okay";
 };
 
+&hdmi0_sound {
+       status = "okay";
+};
+
 &hdmi0_in {
        hdmi0_in_vp0: endpoint {
                remote-endpoint = <&vp0_out_hdmi0>;
 
 &hdmi0_out {
        hdmi0_out_con: endpoint {
-               remote-endpoint = <&hdmi_con_in>;
+               remote-endpoint = <&hdmi0_con_in>;
+       };
+};
+
+&hdmi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&hdmim2_tx1_cec &hdmim0_tx1_hpd &hdmim1_tx1_scl &hdmim1_tx1_sda>;
+       status = "okay";
+};
+
+&hdmi1_in {
+       hdmi1_in_vp1: endpoint {
+               remote-endpoint = <&vp1_out_hdmi1>;
        };
 };
 
+&hdmi1_out {
+       hdmi1_out_con: endpoint {
+               remote-endpoint = <&hdmi1_con_in>;
+       };
+};
+
+&hdmi1_sound {
+       status = "okay";
+};
+
 &hdptxphy0 {
        status = "okay";
 };
 
+&hdptxphy1 {
+       status = "okay";
+};
+
+&i2s5_8ch {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
 /* M.2 E-Key */
 &pcie2x1l1 {
        reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
                remote-endpoint = <&hdmi0_in_vp0>;
        };
 };
+
+&vp1 {
+       vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+               remote-endpoint = <&hdmi1_in_vp1>;
+       };
+};
index 6dc10da5215f962d43ff363ef266d3dbae876804..738637ecaf557f6f43f4b3e2b8106008c3a2f7f6 100644 (file)
        };
 };
 
+&edp1 {
+       force-hpd;
+       status = "okay";
+
+       aux-bus {
+               panel {
+                       compatible = "edp-panel";
+                       hpd-absent-delay-ms = <200>;
+                       no-hpd;
+                       backlight = <&backlight>;
+                       power-supply = <&vcc3v3_lcd>;
+
+                       port {
+                               panel_in_edp: endpoint {
+                                       remote-endpoint = <&edp_out_panel>;
+                               };
+                       };
+               };
+       };
+};
+
+&edp1_in {
+       edp1_in_vp2: endpoint {
+               remote-endpoint = <&vp2_out_edp1>;
+       };
+};
+
+&edp1_out {
+       edp_out_panel: endpoint {
+               remote-endpoint = <&panel_in_edp>;
+       };
+};
+
+
 /* HDMI CEC is not used */
 &hdmi0 {
        pinctrl-0 = <&hdmim0_tx0_hpd &hdmim0_tx0_scl &hdmim0_tx0_sda>;
        status = "okay";
 };
 
+&hdptxphy1 {
+       status = "okay";
+};
+
 &i2c4 {
        status = "okay";
        pinctrl-names = "default";
 };
 
 &vop {
+       assigned-clocks = <&cru DCLK_VOP2_SRC>;
+       assigned-clock-parents = <&cru PLL_V0PLL>;
        status = "okay";
 };
 
                remote-endpoint = <&hdmi0_in_vp0>;
        };
 };
+
+&vp2 {
+       vp2_out_edp1: endpoint@ROCKCHIP_VOP2_EP_EDP1 {
+               reg = <ROCKCHIP_VOP2_EP_EDP1>;
+               remote-endpoint = <&edp1_in_vp2>;
+       };
+};
index cc37f082adea0f848e8e84b0bb780b1cf673355d..b07543315f87854820e7b2719f95be6afb5e177c 100644 (file)
        bus-width = <4>;
        cap-mmc-highspeed;
        cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
        disable-wp;
        max-frequency = <150000000>;
        no-sdio;
diff --git a/src/arm64/rockchip/rk3588-evb2-v10.dts b/src/arm64/rockchip/rk3588-evb2-v10.dts
new file mode 100644 (file)
index 0000000..91fe810
--- /dev/null
@@ -0,0 +1,931 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2025 Rockchip Electronics Co., Ltd.
+ *
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/clock/rockchip,rk3588-cru.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include "rk3588.dtsi"
+
+/ {
+       model = "Rockchip RK3588 EVB2 V10 Board";
+       compatible = "rockchip,rk3588-evb2-v10", "rockchip,rk3588";
+
+       aliases {
+               mmc0 = &sdhci;
+               serial2 = &uart2;
+       };
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       hdmi-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_con_in: endpoint {
+                               remote-endpoint = <&hdmi0_out_con>;
+                       };
+               };
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&hym8563>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_enable_h>;
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card populated):
+                * - SDIO_RESET_L_WL_REG_ON
+                * - PDN (power down when low)
+                */
+               post-power-on-delay-ms = <200>;
+               reset-gpios = <&gpio2 RK_PB6 GPIO_ACTIVE_LOW>;
+       };
+
+       vcc12v_dcin: vcc12v-dcin-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc12v_dcin";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+       };
+
+       vcc5v0_host: vcc5v0-host {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_host";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               enable-active-high;
+               gpio = <&gpio4 RK_PA1 GPIO_ACTIVE_HIGH>;
+               vin-supply = <&vcc5v0_usb>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc5v0_host_en>;
+       };
+
+       vcc5v0_usb: regulator-vcc5v0-usb {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_usb";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc5v0_usbdcin>;
+       };
+
+       vcc5v0_sys: vcc5v0-sys-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+
+       vcc5v0_usbdcin: regulator-vcc5v0-usbdcin {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_usbdcin";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc12v_dcin>;
+       };
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu_s0>;
+       sram-supply = <&vdd_gpu_mem_s0>;
+       status = "okay";
+};
+
+&hdmi0 {
+       status = "okay";
+};
+
+&hdmi0_in {
+       hdmi0_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi0>;
+       };
+};
+
+&hdmi0_out {
+       hdmi0_out_con: endpoint {
+               remote-endpoint = <&hdmi_con_in>;
+       };
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
+&i2c2 {
+       status = "okay";
+
+       hym8563: rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-output-names = "hym8563";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PD4 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hym8563_int>;
+               wakeup-source;
+       };
+};
+
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
+&pinctrl {
+       hym8563 {
+               hym8563_int: hym8563-int {
+                       rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       usb {
+               vcc5v0_host_en: vcc5v0-host-en {
+                       rockchip,pins = <4 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       wifi {
+               wifi_enable_h: wifi-enable-h {
+                       rockchip,pins = <2 RK_PB6 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               wifi_host_wake_irq: wifi-host-wake-irq {
+                       rockchip,pins = <2 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+
+};
+
+&sdhci {
+       bus-width = <8>;
+       max-frequency = <200000000>;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       non-removable;
+       no-sd;
+       no-sdio;
+       status = "okay";
+};
+
+&sdio {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdiom0_pins>;
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+       disable-wp;
+       keep-power-in-suspend;
+       max-frequency = <150000000>;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       no-mmc;
+       non-removable;
+       no-sd;
+       sd-uhs-sdr104;
+       status = "okay";
+
+       brcmf: wifi@1 {
+               compatible = "brcm,bcm4329-fmac";
+               reg = <1>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <RK_PB4 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "host-wake";
+               pinctrl-0 = <&wifi_host_wake_irq>;
+               pinctrl-names = "default";
+       };
+};
+
+&spi2 {
+       status = "okay";
+       assigned-clocks = <&cru CLK_SPI2>;
+       assigned-clock-rates = <200000000>;
+       num-cs = <2>;
+
+       pmic@0 {
+               compatible = "rockchip,rk806";
+               reg = <0x0>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               interrupt-parent = <&gpio0>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
+                           <&rk806_dvs2_null>, <&rk806_dvs3_null>;
+               pinctrl-names = "default";
+               spi-max-frequency = <1000000>;
+               system-power-controller;
+
+               vcc1-supply = <&vcc5v0_sys>;
+               vcc2-supply = <&vcc5v0_sys>;
+               vcc3-supply = <&vcc5v0_sys>;
+               vcc4-supply = <&vcc5v0_sys>;
+               vcc5-supply = <&vcc5v0_sys>;
+               vcc6-supply = <&vcc5v0_sys>;
+               vcc7-supply = <&vcc5v0_sys>;
+               vcc8-supply = <&vcc5v0_sys>;
+               vcc9-supply = <&vcc5v0_sys>;
+               vcc10-supply = <&vcc5v0_sys>;
+               vcc11-supply = <&vcc_2v0_pldo_s3>;
+               vcc12-supply = <&vcc5v0_sys>;
+               vcc13-supply = <&vcc5v0_sys>;
+               vcc14-supply = <&vcc_1v1_nldo_s3>;
+               vcca-supply = <&vcc5v0_sys>;
+
+               rk806_dvs1_null: dvs1-null-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs2_null: dvs2-null-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs3_null: dvs3-null-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun0";
+               };
+
+
+               regulators {
+                       vdd_gpu_s0: dcdc-reg1 {
+                               /* regulator coupling requires always-on */
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_gpu_s0";
+                               regulator-enable-ramp-delay = <400>;
+                               regulator-coupled-with = <&vdd_gpu_mem_s0>;
+                               regulator-coupled-max-spread = <10000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_npu_s0: dcdc-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_npu_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_log_s0: dcdc-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_log_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vdd_vdenc_s0: dcdc-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_vdenc_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+
+                       };
+
+                       vdd_gpu_mem_s0: dcdc-reg5 {
+                               /* regulator coupling requires always-on */
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-enable-ramp-delay = <400>;
+                               regulator-name = "vdd_gpu_mem_s0";
+                               regulator-coupled-with = <&vdd_gpu_s0>;
+                               regulator-coupled-max-spread = <10000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+
+                       };
+
+                       vdd_npu_mem_s0: dcdc-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_npu_mem_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+
+                       };
+
+                       vcc_2v0_pldo_s3: dcdc-reg7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2000000>;
+                               regulator-max-microvolt = <2000000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_2v0_pldo_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <2000000>;
+                               };
+                       };
+
+                       vdd_vdenc_mem_s0: dcdc-reg8 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_vdenc_mem_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd2_ddr_s3: dcdc-reg9 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vdd2_ddr_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_1v1_nldo_s3: dcdc-reg10 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_1v1_nldo_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1100000>;
+                               };
+                       };
+
+                       avcc_1v8_s0: pldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "avcc_1v8_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd1_1v8_ddr_s3: pldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd1_1v8_ddr_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       avcc_1v8_codec_s0: pldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "avcc_1v8_codec_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3_s3: pldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_3v3_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vccio_sd_s0: pldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vccio_sd_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vccio_1v8_s3: pldo-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vccio_1v8_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vdd_0v75_s3: nldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_0v75_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vdd2l_0v9_ddr_s3: nldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <900000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-name = "vdd2l_0v9_ddr_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <900000>;
+                               };
+                       };
+
+                       vdd_0v75_hdmi_edp_s0: nldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "vdd_0v75_hdmi_edp_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       avdd_0v75_s0: nldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "avdd_0v75_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_0v85_s0: nldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdd_0v85_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+
+       pmic@1 {
+               compatible = "rockchip,rk806";
+               reg = <0x01>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               interrupt-parent = <&gpio0>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-0 = <&rk806_slave_dvs1_null>, <&rk806_slave_dvs2_null>,
+                           <&rk806_slave_dvs3_null>;
+               pinctrl-names = "default";
+               spi-max-frequency = <1000000>;
+
+               vcc1-supply = <&vcc5v0_sys>;
+               vcc2-supply = <&vcc5v0_sys>;
+               vcc3-supply = <&vcc5v0_sys>;
+               vcc4-supply = <&vcc5v0_sys>;
+               vcc5-supply = <&vcc5v0_sys>;
+               vcc6-supply = <&vcc5v0_sys>;
+               vcc7-supply = <&vcc5v0_sys>;
+               vcc8-supply = <&vcc5v0_sys>;
+               vcc9-supply = <&vcc5v0_sys>;
+               vcc10-supply = <&vcc5v0_sys>;
+               vcc11-supply = <&vcc_2v0_pldo_s3>;
+               vcc12-supply = <&vcc5v0_sys>;
+               vcc13-supply = <&vcc_1v1_nldo_s3>;
+               vcc14-supply = <&vcc_2v0_pldo_s3>;
+               vcca-supply = <&vcc5v0_sys>;
+
+               rk806_slave_dvs1_null: dvs1-null-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun0";
+               };
+
+               rk806_slave_dvs2_null: dvs2-null-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun0";
+               };
+
+               rk806_slave_dvs3_null: dvs3-null-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun0";
+               };
+
+               regulators {
+                       vdd_cpu_big1_s0: dcdc-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-coupled-with = <&vdd_cpu_big1_mem_s0>;
+                               regulator-coupled-max-spread = <10000>;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <1050000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_big1_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_big0_s0: dcdc-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-coupled-with = <&vdd_cpu_big0_mem_s0>;
+                               regulator-coupled-max-spread = <10000>;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <1050000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_big0_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_lit_s0: dcdc-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-coupled-with = <&vdd_cpu_lit_mem_s0>;
+                               regulator-coupled-max-spread = <10000>;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_lit_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3_s0: dcdc-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_3v3_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_big1_mem_s0: dcdc-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-coupled-with = <&vdd_cpu_big1_s0>;
+                               regulator-coupled-max-spread = <10000>;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <1050000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_big1_mem_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+
+                       vdd_cpu_big0_mem_s0: dcdc-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-coupled-with = <&vdd_cpu_big0_s0>;
+                               regulator-coupled-max-spread = <10000>;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <1050000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_big0_mem_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s0: dcdc-reg7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_1v8_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_lit_mem_s0: dcdc-reg8 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-coupled-with = <&vdd_cpu_lit_s0>;
+                               regulator-coupled-max-spread = <10000>;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_lit_mem_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vddq_ddr_s0: dcdc-reg9 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vddq_ddr_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_ddr_s0: dcdc-reg10 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_ddr_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_cam_s0: pldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_1v8_cam_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       avdd1v8_ddr_pll_s0: pldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "avdd1v8_ddr_pll_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_1v8_pll_s0: pldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_1v8_pll_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3_sd_s0: pldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_3v3_sd_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_2v8_cam_s0: pldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2800000>;
+                               regulator-max-microvolt = <2800000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_2v8_cam_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       pldo6_s3: pldo-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "pldo6_s3";
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vdd_0v75_pll_s0: nldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_0v75_pll_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_ddr_pll_s0: nldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdd_ddr_pll_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       avdd_0v85_s0: nldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "avdd_0v85_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       avdd_1v2_cam_s0: nldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "avdd_1v2_cam_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       avdd_1v2_s0: nldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "avdd_1v2_s0";
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&u2phy0 {
+       status = "okay";
+};
+
+&u2phy0_otg {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&u2phy2 {
+       status = "okay";
+};
+
+&u2phy2_host {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&u2phy3 {
+       status = "okay";
+};
+
+&u2phy3_host {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-0 = <&uart2m0_xfer>;
+       status = "okay";
+};
+
+&usbdp_phy0 {
+       rockchip,dp-lane-mux = <2 3>;
+       status = "okay";
+};
+
+&usbdp_phy1 {
+       rockchip,dp-lane-mux = <2 3>;
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&usb_host1_ehci {
+       status = "okay";
+};
+
+&usb_host1_ohci {
+       status = "okay";
+};
+
+&usb_host1_xhci {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi0_in_vp0>;
+       };
+};
index 244c66faa1614f6136435e30c9484f1ce8de562e..fb48ddc04bcbd3444bb73b418deca11076bc6363 100644 (file)
                hdmim0_tx1_scl: hdmim0-tx1-scl {
                        rockchip,pins =
                                /* hdmim0_tx1_scl */
-                               <2 RK_PB5 4 &pcfg_pull_none>;
+                               <2 RK_PB5 4 &pcfg_pull_none_drv_level_3_smt>;
                };
 
                /omit-if-no-ref/
                hdmim0_tx1_sda: hdmim0-tx1-sda {
                        rockchip,pins =
                                /* hdmim0_tx1_sda */
-                               <2 RK_PB4 4 &pcfg_pull_none>;
+                               <2 RK_PB4 4 &pcfg_pull_none_drv_level_1_smt>;
+
                };
        };
 
index 099edb3fd0f6bc560351e5f6fbf2cafec01b134d..90414486e466f411f6102e5ad4c7847166657b20 100644 (file)
                };
        };
 
+       edp1: edp@fded0000 {
+               compatible = "rockchip,rk3588-edp";
+               reg = <0x0 0xfded0000 0x0 0x1000>;
+               clocks = <&cru CLK_EDP1_24M>, <&cru PCLK_EDP1>;
+               clock-names = "dp", "pclk";
+               interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH 0>;
+               phys = <&hdptxphy1>;
+               phy-names = "dp";
+               power-domains = <&power RK3588_PD_VO1>;
+               resets = <&cru SRST_EDP1_24M>, <&cru SRST_P_EDP1>;
+               reset-names = "dp", "apb";
+               rockchip,grf = <&vo1_grf>;
+               status = "disabled";
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       edp1_in: port@0 {
+                               reg = <0>;
+                       };
+
+                       edp1_out: port@1 {
+                               reg = <1>;
+                       };
+               };
+       };
+
        hdmi_receiver: hdmi_receiver@fdee0000 {
                compatible = "rockchip,rk3588-hdmirx-ctrler", "snps,dw-hdmi-rx";
                reg = <0x0 0xfdee0000 0x0 0x6000>;
index 9fceea6c1398e92114dcb735cf2babb7d05d67a5..ebe77cdd24e803b00fb848dc81258909472290f1 100644 (file)
        };
 };
 
+&hdmi0_sound {
+       status = "okay";
+};
+
 &hdptxphy0 {
        status = "okay";
 };
        };
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
 &mdio0 {
        rgmii_phy: ethernet-phy@6 {
                /* KSZ9031 or KSZ9131 */
index bbe500cc924b4c4c1ddd833c32c39cf6c20b60e3..3d8b6f0c55418805c0d614a4d65f67b0c660ca0f 100644 (file)
                };
        };
 
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
        ir-receiver {
                compatible = "gpio-ir-receiver";
                gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_LOW>;
                gpio = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "default";
                pinctrl-0 = <&typec5v_pwren>;
-               regulator-always-on;
-               regulator-boot-on;
                regulator-name = "vbus5v0_typec";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "default";
                pinctrl-0 = <&usb5v_pwren>;
-               regulator-always-on;
-               regulator-boot-on;
                regulator-name = "vbus5v0_usb";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
        };
 };
 
+&hdmi0_sound {
+       status = "okay";
+};
+
+&hdmi1 {
+       status = "okay";
+};
+
+&hdmi1_in {
+       hdmi1_in_vp1: endpoint {
+               remote-endpoint = <&vp1_out_hdmi1>;
+       };
+};
+
+&hdmi1_out {
+       hdmi1_out_con: endpoint {
+               remote-endpoint = <&hdmi1_con_in>;
+       };
+};
+
+&hdmi1_sound {
+       status = "okay";
+};
+
 &hdptxphy0 {
        status = "okay";
 };
 
+&hdptxphy1 {
+       status = "okay";
+};
+
 &i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0m2_xfer>;
 };
 
 &i2c6 {
-       clock-frequency = <200000>;
        status = "okay";
 
-       fusb302: typec-portc@22 {
+       usbc0: usb-typec@22 {
                compatible = "fcs,fusb302";
                reg = <0x22>;
                interrupt-parent = <&gpio0>;
                interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
-               pinctrl-0 = <&usbc0_int>;
                pinctrl-names = "default";
+               pinctrl-0 = <&usbc0_int>;
                vbus-supply = <&vbus5v0_typec>;
+               status = "okay";
 
                connector {
                        compatible = "usb-c-connector";
                        data-role = "dual";
                        label = "USB-C";
-                       power-role = "source";
+                       op-sink-microwatt = <1000000>;
+                       /* fusb302 supports PD Rev 2.0 Ver 1.2 */
+                       pd-revision = /bits/ 8 <0x2 0x0 0x1 0x2>;
+                       power-role = "dual";
+                       sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
                        source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
+                       try-power-role = "source";
+                       typec-power-opmode = "1.5A";
 
                        ports {
                                #address-cells = <1>;
        };
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
 &pcie2x1l0 {
        reset-gpios = <&gpio4 RK_PB3 GPIO_ACTIVE_HIGH>;
        vpcie3v3-supply = <&vcc_3v3_pcie20>;
 };
 
 &usb_host0_xhci {
-       dr_mode = "host";
-       status = "okay";
        usb-role-switch;
+       status = "okay";
 
        port {
                usb_host0_xhci_drd_sw: endpoint {
                remote-endpoint = <&hdmi0_in_vp0>;
        };
 };
+
+&vp1 {
+       vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+               remote-endpoint = <&hdmi1_in_vp1>;
+       };
+};
index f748c6f760d80269d8e13261d2e516236176c14d..9343dfc86941a3541a384f5f47ebb62d51dcaa7c 100644 (file)
                        rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
+
+       wireless-bluetooth {
+               bt_reg_on: bt-reg-on {
+                       rockchip,pins = <4 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               bt_wake_host: bt-wake-host {
+                       rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               host_wake_bt: host-wake-bt {
+                       rockchip,pins = <4 RK_PC5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
 };
 
 &pwm4 {
        phy-supply = <&vcc5v0_usb20>;
 };
 
+&uart7 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart7m0_xfer &uart7m0_ctsn &uart7m0_rtsn>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&hym8563>;
+               clock-names = "lpo";
+               device-wakeup-gpios = <&gpio4 RK_PC5 GPIO_ACTIVE_HIGH>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA0 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-names = "host-wakeup";
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_reg_on>, <&host_wake_bt>, <&bt_wake_host>;
+               shutdown-gpios = <&gpio4 RK_PC4 GPIO_ACTIVE_HIGH>;
+               vbat-supply = <&vcc_3v3_s3>;
+               vddio-supply = <&vcc_1v8_s3>;
+       };
+};
+
 &usb_host0_xhci {
        dr_mode = "host";
 };
diff --git a/src/arm64/rockchip/rk3588-rock-5b-plus.dts b/src/arm64/rockchip/rk3588-rock-5b-plus.dts
new file mode 100644 (file)
index 0000000..74c7b65
--- /dev/null
@@ -0,0 +1,113 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include "rk3588-rock-5b.dtsi"
+
+/ {
+       model = "Radxa ROCK 5B+";
+       compatible = "radxa,rock-5b-plus", "rockchip,rk3588";
+
+       rfkill-wwan {
+               compatible = "rfkill-gpio";
+               label = "rfkill-m2-wwan";
+               radio-type = "wwan";
+               shutdown-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;
+       };
+
+       vcc3v3_4g: regulator-vcc3v3-4g {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
+               /* pinctrl for the GPIO is requested by vcc3v3_pcie2x1l0 */
+               regulator-name = "vcc3v3_4g";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <50000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc3v3_wwan_pwr: regulator-vcc3v3-wwan {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wwan_power_en>;
+               regulator-name = "vcc3v3_wwan_pwr";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc3v3_4g>;
+       };
+};
+
+&gpio0 {
+       wwan-disable2-n-hog {
+               gpios = <RK_PB2 GPIO_ACTIVE_LOW>;
+               output-low;
+               line-name = "M.2 B-key W_DISABLE2#";
+               gpio-hog;
+       };
+};
+
+&gpio2 {
+       wwan-reset-n-hog {
+               gpios = <RK_PB3 GPIO_ACTIVE_LOW>;
+               output-low;
+               line-name = "M.2 B-key RESET#";
+               gpio-hog;
+       };
+
+       wwan-wake-n-hog {
+               gpios = <RK_PB2 GPIO_ACTIVE_LOW>;
+               input;
+               line-name = "M.2 B-key WoWWAN#";
+               gpio-hog;
+       };
+};
+
+&pcie30phy {
+       data-lanes = <1 1 2 2>;
+};
+
+&pcie3x2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie3x2_rst>;
+       reset-gpios = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie30>;
+       status = "okay";
+};
+
+&pcie3x4 {
+       num-lanes = <2>;
+};
+
+&pinctrl {
+       wwan {
+               wwan_power_en: wwan-pwr-en {
+                       rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie3 {
+               pcie3x2_rst: pcie3x2-rst {
+                       rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb {
+               vcc5v0_host_en: vcc5v0-host-en {
+                       rockchip,pins = <1 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&vcc5v0_host {
+       enable-active-high;
+       gpio = <&gpio1 RK_PA1 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&vcc5v0_host_en>;
+};
index d22068475c5dc6cb885f878f3f527a66edf1ba70..9407a7c9910ada1f6c803d2e15785a9cbd9bd655 100644 (file)
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/leds/common.h>
-#include <dt-bindings/soc/rockchip,vop2.h>
-#include "rk3588.dtsi"
+#include "rk3588-rock-5b.dtsi"
 
 / {
        model = "Radxa ROCK 5B";
        compatible = "radxa,rock-5b", "rockchip,rk3588";
-
-       aliases {
-               mmc0 = &sdhci;
-               mmc1 = &sdmmc;
-               mmc2 = &sdio;
-       };
-
-       chosen {
-               stdout-path = "serial2:1500000n8";
-       };
-
-       analog-sound {
-               compatible = "audio-graph-card";
-               label = "rk3588-es8316";
-
-               widgets = "Microphone", "Mic Jack",
-                         "Headphone", "Headphones";
-
-               routing = "MIC2", "Mic Jack",
-                         "Headphones", "HPOL",
-                         "Headphones", "HPOR";
-
-               dais = <&i2s0_8ch_p0>;
-               hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&hp_detect>;
-       };
-
-       hdmi0-con {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi0_con_in: endpoint {
-                               remote-endpoint = <&hdmi0_out_con>;
-                       };
-               };
-       };
-
-       hdmi1-con {
-               compatible = "hdmi-connector";
-               type = "a";
-
-               port {
-                       hdmi1_con_in: endpoint {
-                               remote-endpoint = <&hdmi1_out_con>;
-                       };
-               };
-       };
-
-       leds {
-               compatible = "gpio-leds";
-               pinctrl-names = "default";
-               pinctrl-0 = <&led_rgb_b>;
-
-               led_rgb_b {
-                       function = LED_FUNCTION_STATUS;
-                       color = <LED_COLOR_ID_BLUE>;
-                       gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "heartbeat";
-               };
-       };
-
-       fan: pwm-fan {
-               compatible = "pwm-fan";
-               cooling-levels = <0 120 150 180 210 240 255>;
-               fan-supply = <&vcc5v0_sys>;
-               pwms = <&pwm1 0 50000 0>;
-               #cooling-cells = <2>;
-       };
-
-       rfkill {
-               compatible = "rfkill-gpio";
-               label = "rfkill-m2-wlan";
-               radio-type = "wlan";
-               shutdown-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
-       };
-
-       rfkill-bt {
-               compatible = "rfkill-gpio";
-               label = "rfkill-m2-bt";
-               radio-type = "bluetooth";
-               shutdown-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
-       };
-
-       vcc3v3_pcie2x1l0: regulator-vcc3v3-pcie2x1l0 {
-               compatible = "regulator-fixed";
-               enable-active-high;
-               gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pcie2_0_vcc3v3_en>;
-               regulator-name = "vcc3v3_pcie2x1l0";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               startup-delay-us = <50000>;
-               vin-supply = <&vcc5v0_sys>;
-       };
-
-       vcc3v3_pcie2x1l2: regulator-vcc3v3-pcie2x1l2 {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc3v3_pcie2x1l2";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               startup-delay-us = <5000>;
-               vin-supply = <&vcc_3v3_s3>;
-       };
-
-       vcc3v3_pcie30: regulator-vcc3v3-pcie30 {
-               compatible = "regulator-fixed";
-               enable-active-high;
-               gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&pcie3_vcc3v3_en>;
-               regulator-name = "vcc3v3_pcie30";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               startup-delay-us = <5000>;
-               vin-supply = <&vcc5v0_sys>;
-       };
-
-       vcc5v0_host: regulator-vcc5v0-host {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc5v0_host";
-               regulator-boot-on;
-               regulator-always-on;
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-               enable-active-high;
-               gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
-               pinctrl-names = "default";
-               pinctrl-0 = <&vcc5v0_host_en>;
-               vin-supply = <&vcc5v0_sys>;
-       };
-
-       vcc5v0_sys: regulator-vcc5v0-sys {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc5v0_sys";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <5000000>;
-               regulator-max-microvolt = <5000000>;
-       };
-
-       vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
-               compatible = "regulator-fixed";
-               regulator-name = "vcc_1v1_nldo_s3";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <1100000>;
-               regulator-max-microvolt = <1100000>;
-               vin-supply = <&vcc5v0_sys>;
-       };
-};
-
-&combphy0_ps {
-       status = "okay";
-};
-
-&combphy1_ps {
-       status = "okay";
-};
-
-&combphy2_psu {
-       status = "okay";
-};
-
-&cpu_b0 {
-       cpu-supply = <&vdd_cpu_big0_s0>;
-};
-
-&cpu_b1 {
-       cpu-supply = <&vdd_cpu_big0_s0>;
-};
-
-&cpu_b2 {
-       cpu-supply = <&vdd_cpu_big1_s0>;
-};
-
-&cpu_b3 {
-       cpu-supply = <&vdd_cpu_big1_s0>;
-};
-
-&cpu_l0 {
-       cpu-supply = <&vdd_cpu_lit_s0>;
-};
-
-&cpu_l1 {
-       cpu-supply = <&vdd_cpu_lit_s0>;
-};
-
-&cpu_l2 {
-       cpu-supply = <&vdd_cpu_lit_s0>;
-};
-
-&cpu_l3 {
-       cpu-supply = <&vdd_cpu_lit_s0>;
-};
-
-&gpu {
-       mali-supply = <&vdd_gpu_s0>;
-       status = "okay";
-};
-
-&hdmi0 {
-       status = "okay";
-};
-
-&hdmi0_in {
-       hdmi0_in_vp0: endpoint {
-               remote-endpoint = <&vp0_out_hdmi0>;
-       };
-};
-
-&hdmi0_out {
-       hdmi0_out_con: endpoint {
-               remote-endpoint = <&hdmi0_con_in>;
-       };
-};
-
-&hdmi0_sound {
-       status = "okay";
-};
-
-&hdmi1 {
-       pinctrl-0 = <&hdmim0_tx1_cec &hdmim0_tx1_hpd
-                    &hdmim1_tx1_scl &hdmim1_tx1_sda>;
-       status = "okay";
-};
-
-&hdmi1_in {
-       hdmi1_in_vp1: endpoint {
-               remote-endpoint = <&vp1_out_hdmi1>;
-       };
-};
-
-&hdmi1_out {
-       hdmi1_out_con: endpoint {
-               remote-endpoint = <&hdmi1_con_in>;
-       };
-};
-
-&hdmi1_sound {
-       status = "okay";
-};
-
-&hdmi_receiver_cma {
-       status = "okay";
-};
-
-&hdmi_receiver {
-       hpd-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
-       pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_hpd>;
-       pinctrl-names = "default";
-       status = "okay";
-};
-
-&hdptxphy0 {
-       status = "okay";
-};
-
-&hdptxphy1 {
-       status = "okay";
-};
-
-&i2c0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2c0m2_xfer>;
-       status = "okay";
-
-       vdd_cpu_big0_s0: regulator@42 {
-               compatible = "rockchip,rk8602";
-               reg = <0x42>;
-               fcs,suspend-voltage-selector = <1>;
-               regulator-name = "vdd_cpu_big0_s0";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <550000>;
-               regulator-max-microvolt = <1050000>;
-               regulator-ramp-delay = <2300>;
-               vin-supply = <&vcc5v0_sys>;
-
-               regulator-state-mem {
-                       regulator-off-in-suspend;
-               };
-       };
-
-       vdd_cpu_big1_s0: regulator@43 {
-               compatible = "rockchip,rk8603", "rockchip,rk8602";
-               reg = <0x43>;
-               fcs,suspend-voltage-selector = <1>;
-               regulator-name = "vdd_cpu_big1_s0";
-               regulator-always-on;
-               regulator-boot-on;
-               regulator-min-microvolt = <550000>;
-               regulator-max-microvolt = <1050000>;
-               regulator-ramp-delay = <2300>;
-               vin-supply = <&vcc5v0_sys>;
-
-               regulator-state-mem {
-                       regulator-off-in-suspend;
-               };
-       };
-};
-
-&i2c6 {
-       status = "okay";
-
-       hym8563: rtc@51 {
-               compatible = "haoyu,hym8563";
-               reg = <0x51>;
-               #clock-cells = <0>;
-               clock-output-names = "hym8563";
-               pinctrl-names = "default";
-               pinctrl-0 = <&hym8563_int>;
-               interrupt-parent = <&gpio0>;
-               interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
-               wakeup-source;
-       };
-};
-
-&i2c7 {
-       status = "okay";
-
-       es8316: audio-codec@11 {
-               compatible = "everest,es8316";
-               reg = <0x11>;
-               clocks = <&cru I2S0_8CH_MCLKOUT>;
-               clock-names = "mclk";
-               assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
-               assigned-clock-rates = <12288000>;
-               #sound-dai-cells = <0>;
-
-               port {
-                       es8316_p0_0: endpoint {
-                               remote-endpoint = <&i2s0_8ch_p0_0>;
-                       };
-               };
-       };
-};
-
-&i2s0_8ch {
-       pinctrl-names = "default";
-       pinctrl-0 = <&i2s0_lrck
-                    &i2s0_mclk
-                    &i2s0_sclk
-                    &i2s0_sdi0
-                    &i2s0_sdo0>;
-       status = "okay";
-
-       i2s0_8ch_p0: port {
-               i2s0_8ch_p0_0: endpoint {
-                       dai-format = "i2s";
-                       mclk-fs = <256>;
-                       remote-endpoint = <&es8316_p0_0>;
-               };
-       };
-};
-
-&i2s5_8ch {
-       status = "okay";
-};
-
-&i2s6_8ch {
-       status = "okay";
-};
-
-&package_thermal {
-       polling-delay = <1000>;
-
-       trips {
-               package_fan0: package-fan0 {
-                       temperature = <55000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-
-               package_fan1: package-fan1 {
-                       temperature = <65000>;
-                       hysteresis = <2000>;
-                       type = "active";
-               };
-       };
-
-       cooling-maps {
-               map0 {
-                       trip = <&package_fan0>;
-                       cooling-device = <&fan THERMAL_NO_LIMIT 1>;
-               };
-
-               map1 {
-                       trip = <&package_fan1>;
-                       cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
-               };
-       };
-};
-
-&pcie2x1l0 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie2_0_rst>;
-       reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
-       vpcie3v3-supply = <&vcc3v3_pcie2x1l0>;
-       status = "okay";
-};
-
-&pcie2x1l2 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie2_2_rst>;
-       reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
-       vpcie3v3-supply = <&vcc3v3_pcie2x1l2>;
-       status = "okay";
-};
-
-&pcie30phy {
-       status = "okay";
-};
-
-&pcie3x4 {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pcie3_rst>;
-       reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
-       vpcie3v3-supply = <&vcc3v3_pcie30>;
-       status = "okay";
-};
-
-&pd_gpu {
-       domain-supply = <&vdd_gpu_s0>;
-};
-
-&pinctrl {
-       hdmirx {
-               hdmirx_hpd: hdmirx-5v-detection {
-                       rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
-       hym8563 {
-               hym8563_int: hym8563-int {
-                       rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
-       leds {
-               led_rgb_b: led-rgb-b {
-                       rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
-       sound {
-               hp_detect: hp-detect {
-                       rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
-       pcie2 {
-               pcie2_0_rst: pcie2-0-rst {
-                       rockchip,pins = <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-
-               pcie2_0_vcc3v3_en: pcie2-0-vcc-en {
-                       rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-
-               pcie2_2_rst: pcie2-2-rst {
-                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
-       pcie3 {
-               pcie3_rst: pcie3-rst {
-                       rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-
-               pcie3_vcc3v3_en: pcie3-vcc3v3-en {
-                       rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-
-       usb {
-               vcc5v0_host_en: vcc5v0-host-en {
-                       rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
-               };
-       };
-};
-
-&pwm1 {
-       status = "okay";
-};
-
-&saradc {
-       vref-supply = <&avcc_1v8_s0>;
-       status = "okay";
-};
-
-&sdhci {
-       bus-width = <8>;
-       no-sdio;
-       no-sd;
-       non-removable;
-       mmc-hs400-1_8v;
-       mmc-hs400-enhanced-strobe;
-       status = "okay";
-};
-
-&sdmmc {
-       max-frequency = <200000000>;
-       no-sdio;
-       no-mmc;
-       bus-width = <4>;
-       cap-mmc-highspeed;
-       cap-sd-highspeed;
-       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
-       disable-wp;
-       sd-uhs-sdr104;
-       vmmc-supply = <&vcc_3v3_s3>;
-       vqmmc-supply = <&vccio_sd_s0>;
-       status = "okay";
 };
 
 &sdio {
        status = "okay";
 };
 
-&sfc {
-       pinctrl-names = "default";
-       pinctrl-0 = <&fspim2_pins>;
-       status = "okay";
-
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <104000000>;
-               spi-rx-bus-width = <4>;
-               spi-tx-bus-width = <1>;
-       };
-};
-
 &uart6 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart6m1_xfer &uart6m1_ctsn &uart6m1_rtsn>;
        status = "okay";
 };
 
-&spi2 {
-       status = "okay";
-       assigned-clocks = <&cru CLK_SPI2>;
-       assigned-clock-rates = <200000000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
-       num-cs = <1>;
-
-       pmic@0 {
-               compatible = "rockchip,rk806";
-               spi-max-frequency = <1000000>;
-               reg = <0x0>;
-
-               interrupt-parent = <&gpio0>;
-               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
-
-               pinctrl-names = "default";
-               pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
-                           <&rk806_dvs2_null>, <&rk806_dvs3_null>;
-
-               system-power-controller;
-
-               vcc1-supply = <&vcc5v0_sys>;
-               vcc2-supply = <&vcc5v0_sys>;
-               vcc3-supply = <&vcc5v0_sys>;
-               vcc4-supply = <&vcc5v0_sys>;
-               vcc5-supply = <&vcc5v0_sys>;
-               vcc6-supply = <&vcc5v0_sys>;
-               vcc7-supply = <&vcc5v0_sys>;
-               vcc8-supply = <&vcc5v0_sys>;
-               vcc9-supply = <&vcc5v0_sys>;
-               vcc10-supply = <&vcc5v0_sys>;
-               vcc11-supply = <&vcc_2v0_pldo_s3>;
-               vcc12-supply = <&vcc5v0_sys>;
-               vcc13-supply = <&vcc_1v1_nldo_s3>;
-               vcc14-supply = <&vcc_1v1_nldo_s3>;
-               vcca-supply = <&vcc5v0_sys>;
-
-               gpio-controller;
-               #gpio-cells = <2>;
-
-               rk806_dvs1_null: dvs1-null-pins {
-                       pins = "gpio_pwrctrl1";
-                       function = "pin_fun0";
-               };
-
-               rk806_dvs2_null: dvs2-null-pins {
-                       pins = "gpio_pwrctrl2";
-                       function = "pin_fun0";
-               };
-
-               rk806_dvs3_null: dvs3-null-pins {
-                       pins = "gpio_pwrctrl3";
-                       function = "pin_fun0";
-               };
-
-               regulators {
-                       vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
-                               regulator-boot-on;
-                               regulator-min-microvolt = <550000>;
-                               regulator-max-microvolt = <950000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_gpu_s0";
-                               regulator-enable-ramp-delay = <400>;
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_cpu_lit_s0: vdd_cpu_lit_mem_s0: dcdc-reg2 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <550000>;
-                               regulator-max-microvolt = <950000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_cpu_lit_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_log_s0: dcdc-reg3 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <675000>;
-                               regulator-max-microvolt = <750000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_log_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                                       regulator-suspend-microvolt = <750000>;
-                               };
-                       };
-
-                       vdd_vdenc_s0: vdd_vdenc_mem_s0: dcdc-reg4 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <550000>;
-                               regulator-max-microvolt = <950000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_vdenc_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_ddr_s0: dcdc-reg5 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <675000>;
-                               regulator-max-microvolt = <900000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_ddr_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                                       regulator-suspend-microvolt = <850000>;
-                               };
-                       };
-
-                       vdd2_ddr_s3: dcdc-reg6 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-name = "vdd2_ddr_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                               };
-                       };
-
-                       vcc_2v0_pldo_s3: dcdc-reg7 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <2000000>;
-                               regulator-max-microvolt = <2000000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vdd_2v0_pldo_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <2000000>;
-                               };
-                       };
-
-                       vcc_3v3_s3: dcdc-reg8 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <3300000>;
-                               regulator-max-microvolt = <3300000>;
-                               regulator-name = "vcc_3v3_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <3300000>;
-                               };
-                       };
-
-                       vddq_ddr_s0: dcdc-reg9 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-name = "vddq_ddr_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc_1v8_s3: dcdc-reg10 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-name = "vcc_1v8_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <1800000>;
-                               };
-                       };
-
-                       avcc_1v8_s0: pldo-reg1 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-name = "avcc_1v8_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc_1v8_s0: pldo-reg2 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-name = "vcc_1v8_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                                       regulator-suspend-microvolt = <1800000>;
-                               };
-                       };
-
-                       avdd_1v2_s0: pldo-reg3 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1200000>;
-                               regulator-max-microvolt = <1200000>;
-                               regulator-name = "avdd_1v2_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vcc_3v3_s0: pldo-reg4 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <3300000>;
-                               regulator-max-microvolt = <3300000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vcc_3v3_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vccio_sd_s0: pldo-reg5 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <3300000>;
-                               regulator-ramp-delay = <12500>;
-                               regulator-name = "vccio_sd_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       pldo6_s3: pldo-reg6 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <1800000>;
-                               regulator-max-microvolt = <1800000>;
-                               regulator-name = "pldo6_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <1800000>;
-                               };
-                       };
-
-                       vdd_0v75_s3: nldo-reg1 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <750000>;
-                               regulator-name = "vdd_0v75_s3";
-
-                               regulator-state-mem {
-                                       regulator-on-in-suspend;
-                                       regulator-suspend-microvolt = <750000>;
-                               };
-                       };
-
-                       vdd_ddr_pll_s0: nldo-reg2 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <850000>;
-                               regulator-max-microvolt = <850000>;
-                               regulator-name = "vdd_ddr_pll_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                                       regulator-suspend-microvolt = <850000>;
-                               };
-                       };
-
-                       avdd_0v75_s0: nldo-reg3 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <750000>;
-                               regulator-name = "avdd_0v75_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_0v85_s0: nldo-reg4 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <850000>;
-                               regulator-max-microvolt = <850000>;
-                               regulator-name = "vdd_0v85_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
-
-                       vdd_0v75_s0: nldo-reg5 {
-                               regulator-always-on;
-                               regulator-boot-on;
-                               regulator-min-microvolt = <750000>;
-                               regulator-max-microvolt = <750000>;
-                               regulator-name = "vdd_0v75_s0";
-
-                               regulator-state-mem {
-                                       regulator-off-in-suspend;
-                               };
-                       };
+&pinctrl {
+       usb {
+               vcc5v0_host_en: vcc5v0-host-en {
+                       rockchip,pins = <4 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
                };
        };
 };
 
-&tsadc {
-       status = "okay";
-};
-
-&uart2 {
-       pinctrl-0 = <&uart2m0_xfer>;
-       status = "okay";
-};
-
-&u2phy1 {
-       status = "okay";
-};
-
-&u2phy1_otg {
-       status = "okay";
-};
-
-&u2phy2 {
-       status = "okay";
-};
-
-&u2phy2_host {
-       /* connected to USB hub, which is powered by vcc5v0_sys */
-       phy-supply = <&vcc5v0_sys>;
-       status = "okay";
-};
-
-&u2phy3 {
-       status = "okay";
-};
-
-&u2phy3_host {
-       phy-supply = <&vcc5v0_host>;
-       status = "okay";
-};
-
-&usbdp_phy1 {
-       status = "okay";
-};
-
-&usb_host0_ehci {
-       status = "okay";
-};
-
-&usb_host0_ohci {
-       status = "okay";
-};
-
-&usb_host1_ehci {
-       status = "okay";
-};
-
-&usb_host1_ohci {
-       status = "okay";
-};
-
-&usb_host1_xhci {
-       dr_mode = "host";
-       status = "okay";
-};
-
-&usb_host2_xhci {
-       status = "okay";
-};
-
-&vop {
-       status = "okay";
-};
-
-&vop_mmu {
-       status = "okay";
-};
-
-&vp0 {
-       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
-               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
-               remote-endpoint = <&hdmi0_in_vp0>;
-       };
-};
-
-&vp1 {
-       vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
-               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
-               remote-endpoint = <&hdmi1_in_vp1>;
-       };
+&vcc5v0_host {
+       enable-active-high;
+       gpio = <&gpio4 RK_PB0 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&vcc5v0_host_en>;
 };
diff --git a/src/arm64/rockchip/rk3588-rock-5b.dtsi b/src/arm64/rockchip/rk3588-rock-5b.dtsi
new file mode 100644 (file)
index 0000000..6052787
--- /dev/null
@@ -0,0 +1,945 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include "rk3588.dtsi"
+
+/ {
+       aliases {
+               mmc0 = &sdhci;
+               mmc1 = &sdmmc;
+               mmc2 = &sdio;
+       };
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       analog-sound {
+               compatible = "audio-graph-card";
+               label = "rk3588-es8316";
+
+               widgets = "Microphone", "Mic Jack",
+                         "Headphone", "Headphones";
+
+               routing = "MIC2", "Mic Jack",
+                         "Headphones", "HPOL",
+                         "Headphones", "HPOR";
+
+               dais = <&i2s0_8ch_p0>;
+               hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hp_detect>;
+       };
+
+       hdmi0-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi0_con_in: endpoint {
+                               remote-endpoint = <&hdmi0_out_con>;
+                       };
+               };
+       };
+
+       hdmi1-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi1_con_in: endpoint {
+                               remote-endpoint = <&hdmi1_out_con>;
+                       };
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_rgb_b>;
+
+               led_rgb_b {
+                       function = LED_FUNCTION_STATUS;
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+               };
+       };
+
+       fan: pwm-fan {
+               compatible = "pwm-fan";
+               cooling-levels = <0 120 150 180 210 240 255>;
+               fan-supply = <&vcc5v0_sys>;
+               pwms = <&pwm1 0 50000 0>;
+               #cooling-cells = <2>;
+       };
+
+       rfkill {
+               compatible = "rfkill-gpio";
+               label = "rfkill-m2-wlan";
+               radio-type = "wlan";
+               shutdown-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
+       };
+
+       rfkill-bt {
+               compatible = "rfkill-gpio";
+               label = "rfkill-m2-bt";
+               radio-type = "bluetooth";
+               shutdown-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>;
+       };
+
+       vcc3v3_pcie2x1l0: regulator-vcc3v3-pcie2x1l0 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie2_0_vcc3v3_en>;
+               regulator-name = "vcc3v3_pcie2x1l0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <50000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc3v3_pcie2x1l2: regulator-vcc3v3-pcie2x1l2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_pcie2x1l2";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc_3v3_s3>;
+       };
+
+       vcc3v3_pcie30: regulator-vcc3v3-pcie30 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pcie3_vcc3v3_en>;
+               regulator-name = "vcc3v3_pcie30";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <5000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc5v0_host: regulator-vcc5v0-host {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_host";
+               regulator-boot-on;
+               regulator-always-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+
+       vcc5v0_sys: regulator-vcc5v0-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc5v0_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       vcc_1v1_nldo_s3: regulator-vcc-1v1-nldo-s3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_1v1_nldo_s3";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1100000>;
+               regulator-max-microvolt = <1100000>;
+               vin-supply = <&vcc5v0_sys>;
+       };
+};
+
+&combphy0_ps {
+       status = "okay";
+};
+
+&combphy1_ps {
+       status = "okay";
+};
+
+&combphy2_psu {
+       status = "okay";
+};
+
+&cpu_b0 {
+       cpu-supply = <&vdd_cpu_big0_s0>;
+};
+
+&cpu_b1 {
+       cpu-supply = <&vdd_cpu_big0_s0>;
+};
+
+&cpu_b2 {
+       cpu-supply = <&vdd_cpu_big1_s0>;
+};
+
+&cpu_b3 {
+       cpu-supply = <&vdd_cpu_big1_s0>;
+};
+
+&cpu_l0 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l1 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l2 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&cpu_l3 {
+       cpu-supply = <&vdd_cpu_lit_s0>;
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu_s0>;
+       status = "okay";
+};
+
+&hdmi0 {
+       status = "okay";
+};
+
+&hdmi0_in {
+       hdmi0_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi0>;
+       };
+};
+
+&hdmi0_out {
+       hdmi0_out_con: endpoint {
+               remote-endpoint = <&hdmi0_con_in>;
+       };
+};
+
+&hdmi0_sound {
+       status = "okay";
+};
+
+&hdmi1 {
+       pinctrl-0 = <&hdmim0_tx1_cec &hdmim0_tx1_hpd
+                    &hdmim1_tx1_scl &hdmim1_tx1_sda>;
+       status = "okay";
+};
+
+&hdmi1_in {
+       hdmi1_in_vp1: endpoint {
+               remote-endpoint = <&vp1_out_hdmi1>;
+       };
+};
+
+&hdmi1_out {
+       hdmi1_out_con: endpoint {
+               remote-endpoint = <&hdmi1_con_in>;
+       };
+};
+
+&hdmi1_sound {
+       status = "okay";
+};
+
+&hdmi_receiver_cma {
+       status = "okay";
+};
+
+&hdmi_receiver {
+       hpd-gpios = <&gpio1 RK_PC6 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&hdmim1_rx_cec &hdmim1_rx_hpdin &hdmim1_rx_scl &hdmim1_rx_sda &hdmirx_hpd>;
+       pinctrl-names = "default";
+       status = "okay";
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
+&hdptxphy1 {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0m2_xfer>;
+       status = "okay";
+
+       vdd_cpu_big0_s0: regulator@42 {
+               compatible = "rockchip,rk8602";
+               reg = <0x42>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu_big0_s0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       vdd_cpu_big1_s0: regulator@43 {
+               compatible = "rockchip,rk8603", "rockchip,rk8602";
+               reg = <0x43>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu_big1_s0";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <550000>;
+               regulator-max-microvolt = <1050000>;
+               regulator-ramp-delay = <2300>;
+               vin-supply = <&vcc5v0_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+};
+
+&i2c6 {
+       status = "okay";
+
+       hym8563: rtc@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-output-names = "hym8563";
+               pinctrl-names = "default";
+               pinctrl-0 = <&hym8563_int>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PB0 IRQ_TYPE_LEVEL_LOW>;
+               wakeup-source;
+       };
+};
+
+&i2c7 {
+       status = "okay";
+
+       es8316: audio-codec@11 {
+               compatible = "everest,es8316";
+               reg = <0x11>;
+               clocks = <&cru I2S0_8CH_MCLKOUT>;
+               clock-names = "mclk";
+               assigned-clocks = <&cru I2S0_8CH_MCLKOUT>;
+               assigned-clock-rates = <12288000>;
+               #sound-dai-cells = <0>;
+
+               port {
+                       es8316_p0_0: endpoint {
+                               remote-endpoint = <&i2s0_8ch_p0_0>;
+                       };
+               };
+       };
+};
+
+&i2s0_8ch {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2s0_lrck
+                    &i2s0_mclk
+                    &i2s0_sclk
+                    &i2s0_sdi0
+                    &i2s0_sdo0>;
+       status = "okay";
+
+       i2s0_8ch_p0: port {
+               i2s0_8ch_p0_0: endpoint {
+                       dai-format = "i2s";
+                       mclk-fs = <256>;
+                       remote-endpoint = <&es8316_p0_0>;
+               };
+       };
+};
+
+&i2s5_8ch {
+       status = "okay";
+};
+
+&i2s6_8ch {
+       status = "okay";
+};
+
+&package_thermal {
+       polling-delay = <1000>;
+
+       trips {
+               package_fan0: package-fan0 {
+                       temperature = <55000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+
+               package_fan1: package-fan1 {
+                       temperature = <65000>;
+                       hysteresis = <2000>;
+                       type = "active";
+               };
+       };
+
+       cooling-maps {
+               map0 {
+                       trip = <&package_fan0>;
+                       cooling-device = <&fan THERMAL_NO_LIMIT 1>;
+               };
+
+               map1 {
+                       trip = <&package_fan1>;
+                       cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
+               };
+       };
+};
+
+&pcie2x1l0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie2_0_rst>;
+       reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie2x1l0>;
+       status = "okay";
+};
+
+&pcie2x1l2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie2_2_rst>;
+       reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie2x1l2>;
+       status = "okay";
+};
+
+&pcie30phy {
+       status = "okay";
+};
+
+&pcie3x4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pcie3_rst>;
+       reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
+       vpcie3v3-supply = <&vcc3v3_pcie30>;
+       status = "okay";
+};
+
+&pd_gpu {
+       domain-supply = <&vdd_gpu_s0>;
+};
+
+&pinctrl {
+       hdmirx {
+               hdmirx_hpd: hdmirx-5v-detection {
+                       rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       hym8563 {
+               hym8563_int: hym8563-int {
+                       rockchip,pins = <0 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       leds {
+               led_rgb_b: led-rgb-b {
+                       rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sound {
+               hp_detect: hp-detect {
+                       rockchip,pins = <1 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie2 {
+               pcie2_0_rst: pcie2-0-rst {
+                       rockchip,pins = <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               pcie2_0_vcc3v3_en: pcie2-0-vcc-en {
+                       rockchip,pins = <1 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               pcie2_2_rst: pcie2-2-rst {
+                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pcie3 {
+               pcie3_rst: pcie3-rst {
+                       rockchip,pins = <4 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               pcie3_vcc3v3_en: pcie3-vcc3v3-en {
+                       rockchip,pins = <1 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&avcc_1v8_s0>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       no-sdio;
+       no-sd;
+       non-removable;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       status = "okay";
+};
+
+&sdmmc {
+       max-frequency = <200000000>;
+       no-sdio;
+       no-mmc;
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       sd-uhs-sdr104;
+       vmmc-supply = <&vcc_3v3_s3>;
+       vqmmc-supply = <&vccio_sd_s0>;
+       status = "okay";
+};
+
+&sfc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&fspim2_pins>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <104000000>;
+               spi-rx-bus-width = <4>;
+               spi-tx-bus-width = <1>;
+               vcc-supply = <&vcc_3v3_s3>;
+       };
+};
+
+&spi2 {
+       status = "okay";
+       assigned-clocks = <&cru CLK_SPI2>;
+       assigned-clock-rates = <200000000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi2m2_cs0 &spi2m2_pins>;
+       num-cs = <1>;
+
+       pmic@0 {
+               compatible = "rockchip,rk806";
+               spi-max-frequency = <1000000>;
+               reg = <0x0>;
+
+               interrupt-parent = <&gpio0>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_pins>, <&rk806_dvs1_null>,
+                           <&rk806_dvs2_null>, <&rk806_dvs3_null>;
+
+               system-power-controller;
+
+               vcc1-supply = <&vcc5v0_sys>;
+               vcc2-supply = <&vcc5v0_sys>;
+               vcc3-supply = <&vcc5v0_sys>;
+               vcc4-supply = <&vcc5v0_sys>;
+               vcc5-supply = <&vcc5v0_sys>;
+               vcc6-supply = <&vcc5v0_sys>;
+               vcc7-supply = <&vcc5v0_sys>;
+               vcc8-supply = <&vcc5v0_sys>;
+               vcc9-supply = <&vcc5v0_sys>;
+               vcc10-supply = <&vcc5v0_sys>;
+               vcc11-supply = <&vcc_2v0_pldo_s3>;
+               vcc12-supply = <&vcc5v0_sys>;
+               vcc13-supply = <&vcc_1v1_nldo_s3>;
+               vcc14-supply = <&vcc_1v1_nldo_s3>;
+               vcca-supply = <&vcc5v0_sys>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               rk806_dvs1_null: dvs1-null-pins {
+                       pins = "gpio_pwrctrl1";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs2_null: dvs2-null-pins {
+                       pins = "gpio_pwrctrl2";
+                       function = "pin_fun0";
+               };
+
+               rk806_dvs3_null: dvs3-null-pins {
+                       pins = "gpio_pwrctrl3";
+                       function = "pin_fun0";
+               };
+
+               regulators {
+                       vdd_gpu_s0: vdd_gpu_mem_s0: dcdc-reg1 {
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_gpu_s0";
+                               regulator-enable-ramp-delay = <400>;
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_lit_s0: vdd_cpu_lit_mem_s0: dcdc-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_cpu_lit_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_log_s0: dcdc-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_log_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vdd_vdenc_s0: vdd_vdenc_mem_s0: dcdc-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <550000>;
+                               regulator-max-microvolt = <950000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_vdenc_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_ddr_s0: dcdc-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <675000>;
+                               regulator-max-microvolt = <900000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_ddr_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <850000>;
+                               };
+                       };
+
+                       vdd2_ddr_s3: dcdc-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vdd2_ddr_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_2v0_pldo_s3: dcdc-reg7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2000000>;
+                               regulator-max-microvolt = <2000000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vdd_2v0_pldo_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <2000000>;
+                               };
+                       };
+
+                       vcc_3v3_s3: dcdc-reg8 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc_3v3_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3300000>;
+                               };
+                       };
+
+                       vddq_ddr_s0: dcdc-reg9 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vddq_ddr_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s3: dcdc-reg10 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc_1v8_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       avcc_1v8_s0: pldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "avcc_1v8_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8_s0: pldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc_1v8_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       avdd_1v2_s0: pldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-name = "avdd_1v2_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v3_s0: pldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vcc_3v3_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vccio_sd_s0: pldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-ramp-delay = <12500>;
+                               regulator-name = "vccio_sd_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       pldo6_s3: pldo-reg6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "pldo6_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vdd_0v75_s3: nldo-reg1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "vdd_0v75_s3";
+
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <750000>;
+                               };
+                       };
+
+                       vdd_ddr_pll_s0: nldo-reg2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdd_ddr_pll_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                                       regulator-suspend-microvolt = <850000>;
+                               };
+                       };
+
+                       avdd_0v75_s0: nldo-reg3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "avdd_0v75_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_0v85_s0: nldo-reg4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-name = "vdd_0v85_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_0v75_s0: nldo-reg5 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <750000>;
+                               regulator-name = "vdd_0v75_s0";
+
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+};
+
+&tsadc {
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-0 = <&uart2m0_xfer>;
+       status = "okay";
+};
+
+&u2phy1 {
+       status = "okay";
+};
+
+&u2phy1_otg {
+       status = "okay";
+};
+
+&u2phy2 {
+       status = "okay";
+};
+
+&u2phy2_host {
+       /* connected to USB hub, which is powered by vcc5v0_sys */
+       phy-supply = <&vcc5v0_sys>;
+       status = "okay";
+};
+
+&u2phy3 {
+       status = "okay";
+};
+
+&u2phy3_host {
+       phy-supply = <&vcc5v0_host>;
+       status = "okay";
+};
+
+&usbdp_phy1 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&usb_host1_ehci {
+       status = "okay";
+};
+
+&usb_host1_ohci {
+       status = "okay";
+};
+
+&usb_host1_xhci {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usb_host2_xhci {
+       status = "okay";
+};
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi0_in_vp0>;
+       };
+};
+
+&vp1 {
+       vp1_out_hdmi1: endpoint@ROCKCHIP_VOP2_EP_HDMI1 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI1>;
+               remote-endpoint = <&hdmi1_in_vp1>;
+       };
+};
diff --git a/src/arm64/rockchip/rk3588-tiger-haikou-video-demo.dtso b/src/arm64/rockchip/rk3588-tiger-haikou-video-demo.dtso
new file mode 100644 (file)
index 0000000..b8636fc
--- /dev/null
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2024 Cherry Embedded Solutions GmbH
+ *
+ * DEVKIT ADDON CAM-TS-A01
+ * https://embedded.cherry.de/product/development-kit/
+ *
+ * DT-overlay for the camera / DSI demo appliance for Haikou boards.
+ * In the flavour for use with a Tiger system-on-module.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+
+&{/} {
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               power-supply = <&dc_12v>;
+               pwms = <&pwm0 0 25000 0>;
+       };
+
+       vcc1v8_video: regulator-vcc1v8-video {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v8-video";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc3v3_baseboard>;
+       };
+
+       vcc2v8_video: regulator-vcc2v8-video {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc2v8-video";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vcc3v3_baseboard>;
+       };
+
+       video-adapter-leds {
+               compatible = "gpio-leds";
+
+               video-adapter-led {
+                       color = <LED_COLOR_ID_BLUE>;
+                       gpios = <&pca9670 7 GPIO_ACTIVE_HIGH>;
+                       label = "video-adapter-led";
+                       linux,default-trigger = "none";
+               };
+       };
+};
+
+&dsi0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       panel@0 {
+               compatible = "leadtek,ltk050h3148w";
+               reg = <0>;
+               backlight = <&backlight>;
+               iovcc-supply = <&vcc1v8_video>;
+               reset-gpios = <&pca9670 0 GPIO_ACTIVE_LOW>;
+               vci-supply = <&vcc2v8_video>;
+
+               port {
+                       mipi_panel_in: endpoint {
+                               remote-endpoint = <&dsi0_out_panel>;
+                       };
+               };
+       };
+};
+
+&dsi0_in {
+       dsi0_in_vp3: endpoint {
+               remote-endpoint = <&vp3_out_dsi0>;
+       };
+};
+
+&dsi0_out {
+       dsi0_out_panel: endpoint {
+               remote-endpoint = <&mipi_panel_in>;
+       };
+};
+
+&i2c6 {
+       /* OV5675, GT911, DW9714 are limited to 400KHz */
+       clock-frequency = <400000>;
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       touchscreen@14 {
+               compatible = "goodix,gt911";
+               reg = <0x14>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <RK_PC3 IRQ_TYPE_LEVEL_LOW>;
+               irq-gpios = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&touch_int>;
+               reset-gpios = <&pca9670 1 GPIO_ACTIVE_HIGH>;
+               AVDD28-supply = <&vcc2v8_video>;
+               VDDIO-supply = <&vcc3v3_baseboard>;
+       };
+
+       pca9670: gpio@27 {
+               compatible = "nxp,pca9670";
+               reg = <0x27>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pca9670_resetn>;
+               reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&mipidcphy0 {
+       status = "okay";
+};
+
+&pinctrl {
+       pca9670 {
+               pca9670_resetn: pca9670-resetn {
+                       rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       touch {
+               touch_int: touch-int {
+                       rockchip,pins = <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&vp3 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       vp3_out_dsi0: endpoint@ROCKCHIP_VOP2_EP_MIPI0 {
+               reg = <ROCKCHIP_VOP2_EP_MIPI0>;
+               remote-endpoint = <&dsi0_in_vp3>;
+       };
+};
index a3d8ff647839a900ece2ca9113754c7b20605641..caa43d1abf179365d37a244ea374b0dae39b0433 100644 (file)
        };
 };
 
+&hdmi0_sound {
+       status = "okay";
+};
+
 &hdptxphy0 {
        status = "okay";
 };
        status = "okay";
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
 &pcie30phy {
        status = "okay";
 };
index 8b717c4017a46ac658a6a105519770c3e6e881ee..b2947b36fadaf687c5973fb64d58eb02ea4b536d 100644 (file)
        bus-width = <4>;
        cap-mmc-highspeed;
        cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
        disable-wp;
        max-frequency = <150000000>;
        no-sdio;
index 9f4aca9c2e3f9780802912da9211a9e872f7eb20..0df3e80f2dd91412c130198e49170eb19b2f5c2e 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
 #include <dt-bindings/usb/pd.h>
 #include "rk3588s.dtsi"
 
        status = "okay";
 };
 
+&edp0 {
+       force-hpd;
+       status = "okay";
+
+       aux-bus {
+               panel {
+                       compatible = "edp-panel";
+                       backlight = <&backlight>;
+                       power-supply = <&vcc3v3_lcd_edp>;
+                       no-hpd;
+
+                       port {
+                               panel_in_edp: endpoint {
+                                       remote-endpoint = <&edp_out_panel>;
+                               };
+                       };
+               };
+       };
+};
+
+&edp0_in {
+       edp0_in_vp2: endpoint {
+               remote-endpoint = <&vp2_out_edp0>;
+       };
+};
+
+&edp0_out {
+       edp_out_panel: endpoint {
+               remote-endpoint = <&panel_in_edp>;
+       };
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
 &i2c3 {
        status = "okay";
 
 };
 
 &pwm12 {
+       pinctrl-0 = <&pwm12m1_pins>;
        status = "okay";
 };
 
                };
        };
 };
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vop {
+       assigned-clocks = <&cru DCLK_VOP2_SRC>;
+       assigned-clock-parents = <&cru PLL_V0PLL>;
+       status = "okay";
+};
+
+&vp2 {
+       vp2_out_edp0: endpoint@ROCKCHIP_VOP2_EP_EDP0 {
+               reg = <ROCKCHIP_VOP2_EP_EDP0>;
+               remote-endpoint = <&edp0_in_vp2>;
+       };
+};
index 4189a88ecf40f1cb34119eb52d876fcf8b6add60..4ec7bc4a9e9601654a1c8ee25fee4c3a02a01aec 100644 (file)
        };
 };
 
+&hdmi0_sound {
+       status = "okay";
+};
+
 &hdptxphy0 {
        status = "okay";
 };
        };
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
 &pcie2x1l2 {
        pinctrl-0 = <&rtl8111_perstb>;
        pinctrl-names = "default";
index 88a5e822ed17d4eae555b420f9eb3b75fa5b017e..2c22abaf40a82a3a6be60603083c763fec2918f7 100644 (file)
@@ -6,6 +6,7 @@
 #include <dt-bindings/input/input.h>
 #include <dt-bindings/pinctrl/rockchip.h>
 #include <dt-bindings/leds/common.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
 #include "rk3588s.dtsi"
 
 / {
                pinctrl-0 = <&ir_receiver_pin>;
        };
 
+       hdmi0-con {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi0_con_in: endpoint {
+                               remote-endpoint = <&hdmi0_out_con>;
+                       };
+               };
+       };
+
        leds {
                compatible = "pwm-leds";
 
        status = "okay";
 };
 
+&hdmi0 {
+       status = "okay";
+};
+
+&hdmi0_in {
+       hdmi0_in_vp0: endpoint {
+               remote-endpoint = <&vp0_out_hdmi0>;
+       };
+};
+
+&hdmi0_out {
+       hdmi0_out_con: endpoint {
+               remote-endpoint = <&hdmi0_con_in>;
+       };
+};
+
+&hdmi0_sound {
+       status = "okay";
+};
+
+&hdptxphy0 {
+       status = "okay";
+};
+
+&hdmi0_sound {
+       status = "okay";
+};
+
 &i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&i2c0m2_xfer>;
        };
 };
 
+&i2s5_8ch {
+       status = "okay";
+};
+
 &pd_gpu {
        domain-supply = <&vdd_gpu_s0>;
 };
 
 &uart9 {
        pinctrl-names = "default";
-       pinctrl-0 = <&uart9m2_xfer &uart9m2_ctsn>;
+       pinctrl-0 = <&uart9m2_xfer &uart9m2_ctsn &uart9m2_rtsn>;
        status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&hym8563>;
+               clock-names = "lpo";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PD5 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "host-wakeup";
+               device-wakeup-gpios = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;
+               max-speed = <1500000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_wake_host_irq &bt_wake_pin &bt_reset_pin>;
+               vbat-supply = <&vcc_3v3_s3>;
+               vddio-supply = <&vcc_1v8_s3>;
+       };
 };
 
 &u2phy2 {
 &usb_host2_xhci {
        status = "okay";
 };
+
+&vop {
+       status = "okay";
+};
+
+&vop_mmu {
+       status = "okay";
+};
+
+&vp0 {
+       vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+               reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+               remote-endpoint = <&hdmi0_in_vp0>;
+       };
+};
index 5c645437b50723480a9ec040ea3c21fae7cc5cf1..b0475b7c655aec32b0a6f9175ec67d3262b593c2 100644 (file)
                input-schmitt-enable;
        };
 
+       /omit-if-no-ref/
+       pcfg_pull_none_drv_level_1_smt: pcfg-pull-none-drv-level-1-smt {
+               bias-disable;
+               drive-strength = <1>;
+               input-schmitt-enable;
+       };
+
+       /omit-if-no-ref/
+       pcfg_pull_none_drv_level_2_smt: pcfg-pull-none-drv-level-2-smt {
+               bias-disable;
+               drive-strength = <2>;
+               input-schmitt-enable;
+       };
+
+       /omit-if-no-ref/
+       pcfg_pull_none_drv_level_3_smt: pcfg-pull-none-drv-level-3-smt {
+               bias-disable;
+               drive-strength = <3>;
+               input-schmitt-enable;
+       };
+
+       /omit-if-no-ref/
+       pcfg_pull_none_drv_level_4_smt: pcfg-pull-none-drv-level-4-smt {
+               bias-disable;
+               drive-strength = <4>;
+               input-schmitt-enable;
+       };
+
+       /omit-if-no-ref/
+       pcfg_pull_none_drv_level_5_smt: pcfg-pull-none-drv-level-5-smt {
+               bias-disable;
+               drive-strength = <5>;
+               input-schmitt-enable;
+       };
+
        /omit-if-no-ref/
        pcfg_output_high: pcfg-output-high {
                output-high;
index 8fdd5f020425d53eefa724de9c23ec0ca211ab7f..aba90d555f4ee5749f1873206f11dfac46b7817f 100644 (file)
                };
        };
 
+       ospi_port1_clk_pins_a: ospi-port1-clk-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 0, AF10)>; /* OSPI1_CLK */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <2>;
+               };
+       };
+
+       ospi_port1_clk_sleep_pins_a: ospi-port1-clk-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 0, ANALOG)>; /* OSPI1_CLK */
+               };
+       };
+
+       ospi_port1_cs0_pins_a: ospi-port1-cs0-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 3, AF10)>; /* OSPI_NCS0 */
+                       bias-pull-up;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       ospi_port1_cs0_sleep_pins_a: ospi-port1-cs0-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 3, ANALOG)>; /* OSPI_NCS0 */
+               };
+       };
+
+       ospi_port1_io03_pins_a: ospi-port1-io03-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 4, AF10)>, /* OSPI_IO0 */
+                                <STM32_PINMUX('D', 5, AF10)>, /* OSPI_IO1 */
+                                <STM32_PINMUX('D', 6, AF10)>, /* OSPI_IO2 */
+                                <STM32_PINMUX('D', 7, AF10)>; /* OSPI_IO3 */
+                       bias-disable;
+                       drive-push-pull;
+                       slew-rate = <0>;
+               };
+       };
+
+       ospi_port1_io03_sleep_pins_a: ospi-port1-io03-sleep-0 {
+               pins {
+                       pinmux = <STM32_PINMUX('D', 4, ANALOG)>, /* OSPI_IO0 */
+                                <STM32_PINMUX('D', 5, ANALOG)>, /* OSPI_IO1 */
+                                <STM32_PINMUX('D', 6, ANALOG)>, /* OSPI_IO2 */
+                                <STM32_PINMUX('D', 7, ANALOG)>; /* OSPI_IO3 */
+               };
+       };
+
        sdmmc1_b4_pins_a: sdmmc1-b4-0 {
                pins1 {
                        pinmux = <STM32_PINMUX('E', 4, AF10)>, /* SDMMC1_D0 */
index 87110f91e4895ad701940c91c6cb372667193b48..8d87865850a7a6e8095c36acdef83c8e3a73ae54 100644 (file)
                        #dma-cells = <3>;
                };
 
+               ommanager: ommanager@40500000 {
+                       compatible = "st,stm32mp25-omm";
+                       reg = <0x40500000 0x400>, <0x60000000 0x10000000>;
+                       reg-names = "regs", "memory_map";
+                       ranges = <0 0 0x40430000 0x400>,
+                                <1 0 0x40440000 0x400>;
+                       clocks = <&rcc CK_BUS_OSPIIOM>,
+                                <&scmi_clk CK_SCMI_OSPI1>,
+                                <&scmi_clk CK_SCMI_OSPI2>;
+                       clock-names = "omm", "ospi1", "ospi2";
+                       resets = <&rcc OSPIIOM_R>,
+                                <&scmi_reset RST_SCMI_OSPI1>,
+                                <&scmi_reset RST_SCMI_OSPI2>;
+                       reset-names = "omm", "ospi1", "ospi2";
+                       access-controllers = <&rifsc 111>;
+                       power-domains = <&CLUSTER_PD>;
+                       #address-cells = <2>;
+                       #size-cells = <1>;
+                       st,syscfg-amcr = <&syscfg 0x2c00 0x7>;
+                       status = "disabled";
+
+                       ospi1: spi@0 {
+                               compatible = "st,stm32mp25-ospi";
+                               reg = <0 0 0x400>;
+                               interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&hpdma 2 0x62 0x3121>,
+                                      <&hpdma 2 0x42 0x3112>;
+                               dma-names = "tx", "rx";
+                               clocks = <&scmi_clk CK_SCMI_OSPI1>;
+                               resets = <&scmi_reset RST_SCMI_OSPI1>,
+                                        <&scmi_reset RST_SCMI_OSPI1DLL>;
+                               access-controllers = <&rifsc 74>;
+                               power-domains = <&CLUSTER_PD>;
+                               st,syscfg-dlyb = <&syscfg 0x1000>;
+                               status = "disabled";
+                       };
+
+                       ospi2: spi@1 {
+                               compatible = "st,stm32mp25-ospi";
+                               reg = <1 0 0x400>;
+                               interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
+                               dmas = <&hpdma 3 0x62 0x3121>,
+                                      <&hpdma 3 0x42 0x3112>;
+                               dma-names = "tx", "rx";
+                               clocks = <&scmi_clk CK_SCMI_OSPI2>;
+                               resets = <&scmi_reset RST_SCMI_OSPI2>,
+                                        <&scmi_reset RST_SCMI_OSPI2DLL>;
+                               access-controllers = <&rifsc 75>;
+                               power-domains = <&CLUSTER_PD>;
+                               st,syscfg-dlyb = <&syscfg 0x1400>;
+                               status = "disabled";
+                       };
+               };
+
                rifsc: bus@42080000 {
                        compatible = "st,stm32mp25-rifsc", "simple-bus";
                        reg = <0x42080000 0x1000>;
                        #access-controller-cells = <1>;
                        ranges;
 
+                       lptimer1: timer@40090000 {
+                               compatible = "st,stm32mp25-lptimer", "st,stm32-lptimer";
+                               reg = <0x40090000 0x400>;
+                               interrupts-extended = <&exti1 47 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_LPTIM1>;
+                               clock-names = "mux";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 17>;
+                               power-domains = <&RET_PD>;
+                               wakeup-source;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-lptimer-counter", "st,stm32-lptimer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm-lp", "st,stm32-pwm-lp";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer {
+                                       compatible = "st,stm32mp25-lptimer-timer", "st,stm32-lptimer-timer";
+                                       status = "disabled";
+                               };
+
+                               trigger@0 {
+                                       compatible = "st,stm32mp25-lptimer-trigger", "st,stm32-lptimer-trigger";
+                                       reg = <0>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       lptimer2: timer@400a0000 {
+                               compatible = "st,stm32mp25-lptimer", "st,stm32-lptimer";
+                               reg = <0x400a0000 0x400>;
+                               interrupts-extended = <&exti1 48 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_LPTIM2>;
+                               clock-names = "mux";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 18>;
+                               power-domains = <&RET_PD>;
+                               wakeup-source;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-lptimer-counter", "st,stm32-lptimer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm-lp", "st,stm32-pwm-lp";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer {
+                                       compatible = "st,stm32mp25-lptimer-timer", "st,stm32-lptimer-timer";
+                                       status = "disabled";
+                               };
+
+                               trigger@1 {
+                                       compatible = "st,stm32mp25-lptimer-trigger", "st,stm32-lptimer-trigger";
+                                       reg = <1>;
+                                       status = "disabled";
+                               };
+                       };
+
                        i2s2: audio-controller@400b0000 {
                                compatible = "st,stm32mp25-i2s";
                                reg = <0x400b0000 0x400>;
                                status = "disabled";
                        };
 
+                       lptimer3: timer@46050000 {
+                               compatible = "st,stm32mp25-lptimer", "st,stm32-lptimer";
+                               reg = <0x46050000 0x400>;
+                               interrupts-extended = <&exti2 29 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_LPTIM3>;
+                               clock-names = "mux";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 19>;
+                               wakeup-source;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-lptimer-counter", "st,stm32-lptimer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm-lp", "st,stm32-pwm-lp";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer {
+                                       compatible = "st,stm32mp25-lptimer-timer", "st,stm32-lptimer-timer";
+                                       status = "disabled";
+                               };
+
+                               trigger@2 {
+                                       compatible = "st,stm32mp25-lptimer-trigger", "st,stm32-lptimer-trigger";
+                                       reg = <2>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       lptimer4: timer@46060000 {
+                               compatible = "st,stm32mp25-lptimer", "st,stm32-lptimer";
+                               reg = <0x46060000 0x400>;
+                               interrupts-extended = <&exti2 30 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_LPTIM4>;
+                               clock-names = "mux";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 20>;
+                               wakeup-source;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-lptimer-counter", "st,stm32-lptimer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm-lp", "st,stm32-pwm-lp";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer {
+                                       compatible = "st,stm32mp25-lptimer-timer", "st,stm32-lptimer-timer";
+                                       status = "disabled";
+                               };
+
+                               trigger@3 {
+                                       compatible = "st,stm32mp25-lptimer-trigger", "st,stm32-lptimer-trigger";
+                                       reg = <3>;
+                                       status = "disabled";
+                               };
+                       };
+
+                       lptimer5: timer@46070000 {
+                               compatible = "st,stm32mp25-lptimer", "st,stm32-lptimer";
+                               reg = <0x46070000 0x400>;
+                               interrupts-extended = <&exti2 31 IRQ_TYPE_LEVEL_HIGH>;
+                               clocks = <&rcc CK_KER_LPTIM5>;
+                               clock-names = "mux";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               access-controllers = <&rifsc 21>;
+                               wakeup-source;
+                               status = "disabled";
+
+                               counter {
+                                       compatible = "st,stm32mp25-lptimer-counter", "st,stm32-lptimer-counter";
+                                       status = "disabled";
+                               };
+
+                               pwm {
+                                       compatible = "st,stm32mp25-pwm-lp", "st,stm32-pwm-lp";
+                                       #pwm-cells = <3>;
+                                       status = "disabled";
+                               };
+
+                               timer {
+                                       compatible = "st,stm32mp25-lptimer-timer", "st,stm32-lptimer-timer";
+                                       status = "disabled";
+                               };
+
+                               trigger@4 {
+                                       compatible = "st,stm32mp25-lptimer-trigger", "st,stm32-lptimer-trigger";
+                                       reg = <4>;
+                                       status = "disabled";
+                               };
+                       };
+
                        csi: csi@48020000 {
                                compatible = "st,stm32mp25-csi";
                                reg = <0x48020000 0x2000>;
index 1b88485a62a1f837770654eee6c970208fef6edc..2f561ad4066544445e93db78557bc4be1c27095a 100644 (file)
                        reg = <0x0 0x80000000 0x0 0x4000000>;
                        no-map;
                };
+
+               mm_ospi1: mm-ospi@60000000 {
+                       reg = <0x0 0x60000000 0x0 0x10000000>;
+                       no-map;
+               };
        };
 };
 
        status = "disabled";
 };
 
+&ommanager {
+       memory-region = <&mm_ospi1>;
+       pinctrl-0 = <&ospi_port1_clk_pins_a
+                    &ospi_port1_io03_pins_a
+                    &ospi_port1_cs0_pins_a>;
+       pinctrl-1 = <&ospi_port1_clk_sleep_pins_a
+                    &ospi_port1_io03_sleep_pins_a
+                    &ospi_port1_cs0_sleep_pins_a>;
+       pinctrl-names = "default", "sleep";
+       status = "okay";
+
+       spi@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               memory-region = <&mm_ospi1>;
+               status = "okay";
+
+               flash0: flash@0 {
+                       compatible = "jedec,spi-nor";
+                       reg = <0>;
+                       spi-rx-bus-width = <4>;
+                       spi-tx-bus-width = <4>;
+                       spi-max-frequency = <50000000>;
+               };
+       };
+};
+
+/* use LPTIMER with tick broadcast for suspend mode */
+&lptimer3 {
+       status = "okay";
+       timer {
+               status = "okay";
+       };
+};
+
 &rtc {
        status = "okay";
 };
index 8d77946429002a713ec46f20155e7d019a21a70d..9ff22e1c8723de844cf929366e56220445b724b2 100644 (file)
        };
 };
 
+&ethernet0 {
+       status = "okay";
+
+       phy-mode = "rgmii-id";
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+&ethernet1 {
+       status = "okay";
+
+       phy-mode = "rgmii-id";
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
 &fin_pll {
        clock-frequency = <24000000>;
 };
index 3f898cf4874cbddd615155474119731694151cbc..6f4658f57453ad1a73d7a3d37c7c3605a9daa851 100644 (file)
                samsung,pin-pud = <FSD_PIN_PULL_UP>;
                samsung,pin-drv = <FSD_PIN_DRV_LV4>;
        };
+
+       eth0_tx_clk: eth0-tx-clk-pins {
+               samsung,pins = "gpf0-0";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth0_tx_data: eth0-tx-data-pins {
+               samsung,pins = "gpf0-1", "gpf0-2", "gpf0-3", "gpf0-4";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth0_tx_ctrl: eth0-tx-ctrl-pins {
+               samsung,pins = "gpf0-5";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth0_phy_intr: eth0-phy-intr-pins {
+               samsung,pins = "gpf0-6";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_NONE>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV4>;
+       };
+
+       eth0_rx_clk: eth0-rx-clk-pins {
+               samsung,pins = "gpf1-0";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth0_rx_data: eth0-rx-data-pins {
+               samsung,pins = "gpf1-1", "gpf1-2", "gpf1-3", "gpf1-4";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth0_rx_ctrl: eth0-rx-ctrl-pins {
+               samsung,pins = "gpf1-5";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth0_mdio: eth0-mdio-pins {
+               samsung,pins = "gpf1-6", "gpf1-7";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_NONE>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV4>;
+       };
 };
 
 &pinctrl_peric {
                samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
                samsung,pin-drv = <FSD_PIN_DRV_LV4>;
        };
+
+       eth1_tx_clk: eth1-tx-clk-pins {
+               samsung,pins = "gpf2-0";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_DOWN>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth1_tx_data: eth1-tx-data-pins {
+               samsung,pins = "gpf2-1", "gpf2-2", "gpf2-3", "gpf2-4";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth1_tx_ctrl: eth1-tx-ctrl-pins {
+               samsung,pins = "gpf2-5";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth1_phy_intr: eth1-phy-intr-pins {
+               samsung,pins = "gpf2-6";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV4>;
+       };
+
+       eth1_rx_clk: eth1-rx-clk-pins {
+               samsung,pins = "gpf3-0";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth1_rx_data: eth1-rx-data-pins {
+               samsung,pins = "gpf3-1", "gpf3-2", "gpf3-3", "gpf3-4";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth1_rx_ctrl: eth1-rx-ctrl-pins {
+               samsung,pins = "gpf3-5";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV6>;
+       };
+
+       eth1_mdio: eth1-mdio-pins {
+               samsung,pins = "gpf3-6", "gpf3-7";
+               samsung,pin-function = <FSD_PIN_FUNC_2>;
+               samsung,pin-pud = <FSD_PIN_PULL_UP>;
+               samsung,pin-drv = <FSD_PIN_DRV_LV4>;
+       };
 };
 
 &pinctrl_pmu {
index 9951eef9507cc3946cc590ab453250d80d4b05f1..a5ebb3f9b18fa19e074399599c41b9c2f9243141 100644 (file)
                        memory-region = <&mfc_left>;
                };
 
+               ethernet1: ethernet@14300000 {
+                       compatible = "tesla,fsd-ethqos";
+                       reg = <0x0 0x14300000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq";
+                       clocks = <&clock_peric PERIC_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I>,
+                                <&clock_peric PERIC_EQOS_TOP_IPCLKPORT_ACLK_I>,
+                                <&clock_peric PERIC_EQOS_TOP_IPCLKPORT_HCLK_I>,
+                                <&clock_peric PERIC_EQOS_TOP_IPCLKPORT_RGMII_CLK_I>,
+                                <&clock_peric PERIC_EQOS_TOP_IPCLKPORT_CLK_RX_I>,
+                                <&clock_peric PERIC_BUS_D_PERIC_IPCLKPORT_EQOSCLK>,
+                                <&clock_peric PERIC_BUS_P_PERIC_IPCLKPORT_EQOSCLK>,
+                                <&clock_peric PERIC_EQOS_PHYRXCLK_MUX>,
+                                <&clock_peric PERIC_EQOS_PHYRXCLK>,
+                                <&clock_peric PERIC_DOUT_RGMII_CLK>;
+                       clock-names = "ptp_ref", "master_bus", "slave_bus", "tx", "rx",
+                                     "master2_bus", "slave2_bus", "eqos_rxclk_mux",
+                                     "eqos_phyrxclk", "dout_peric_rgmii_clk";
+                       assigned-clocks = <&clock_peric PERIC_EQOS_PHYRXCLK_MUX>,
+                                         <&clock_peric PERIC_EQOS_PHYRXCLK>;
+                       assigned-clock-parents = <&clock_peric PERIC_EQOS_PHYRXCLK>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&eth1_tx_clk>, <&eth1_tx_data>, <&eth1_tx_ctrl>,
+                                   <&eth1_phy_intr>, <&eth1_rx_clk>, <&eth1_rx_data>,
+                                   <&eth1_rx_ctrl>, <&eth1_mdio>;
+                       local-mac-address = [00 00 00 00 00 00];
+                       iommus = <&smmu_peric 0x0 0x1>;
+                       status = "disabled";
+               };
+
                ufs: ufs@15120000 {
                        compatible = "tesla,fsd-ufs";
                        reg = <0x0 0x15120000 0x0 0x200>,  /* 0: HCI standard */
                        clocks = <&clock_fsys0 UFS0_MPHY_REFCLK_IXTAL26>;
                        clock-names = "ref_clk";
                };
+
+               ethernet0: ethernet@15300000 {
+                       compatible = "tesla,fsd-ethqos";
+                       reg = <0x0 0x15300000 0x0 0x10000>;
+                       interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "macirq";
+                       clocks = <&clock_fsys0 FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I>,
+                                <&clock_fsys0 FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I>,
+                                <&clock_fsys0 FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I>,
+                                <&clock_fsys0 FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I>,
+                                <&clock_fsys0 FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I>;
+                       clock-names = "ptp_ref", "master_bus", "slave_bus", "tx", "rx";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&eth0_tx_clk>, <&eth0_tx_data>, <&eth0_tx_ctrl>,
+                                   <&eth0_phy_intr>, <&eth0_rx_clk>, <&eth0_rx_data>,
+                                   <&eth0_rx_ctrl>, <&eth0_mdio>;
+                       local-mac-address = [00 00 00 00 00 00];
+                       iommus = <&smmu_fsys0 0x0 0x1>;
+                       status = "disabled";
+               };
        };
 };
 
index 8e9fc00a6b3c7459a360f9e1d6bbb60e68c460ab..aafdb90c0eb700b554c6c308be6c1732d0459a8c 100644 (file)
@@ -69,6 +69,7 @@
                gpios = <&main_gpio0 31 GPIO_ACTIVE_HIGH>;
                states = <1800000 0x0>,
                         <3300000 0x1>;
+               bootph-all;
        };
 };
 
                pinctrl-single,pins = <
                        AM62X_IOPAD(0x07c, PIN_OUTPUT, 7) /* (M19) GPMC0_CLK.GPIO0_31 */
                >;
+               bootph-all;
        };
 
        main_gpio1_ioexp_intr_pins_default: main-gpio1-ioexp-intr-default-pins {
                pinctrl-single,pins = <
                        AM62X_IOPAD(0x01d4, PIN_INPUT, 7) /* (C13) UART0_RTSn.GPIO1_23 */
                >;
+               bootph-all;
        };
 
        pmic_irq_pins_default: pmic-irq-default-pins {
 
                pinctrl-names = "default";
                pinctrl-0 = <&main_gpio1_ioexp_intr_pins_default>;
+               bootph-all;
        };
 
        exp2: gpio@23 {
        DVDD-supply = <&buck2_reg>;
 };
 
+&main_gpio0 {
+       bootph-all;
+};
+
+&main_gpio1 {
+       bootph-all;
+};
+
 &gpmc0 {
        ranges = <0 0 0x00 0x51000000 0x01000000>; /* CS0 space. Min partition = 16MB */
 };
index 7d355aa73ea2116723735f70b9351cefcd8bc118..9e0b6eee9ac77d66869915b2d7bec3e2275c03ea 100644 (file)
                power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
                clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
                clock-names = "clk_ahb", "clk_xin";
-               assigned-clocks = <&k3_clks 57 6>;
-               assigned-clock-parents = <&k3_clks 57 8>;
                bus-width = <8>;
                mmc-ddr-1_8v;
                mmc-hs200-1_8v;
        };
 
        gpu: gpu@fd00000 {
-               compatible = "ti,am62-gpu", "img,img-axe";
+               compatible = "ti,am62-gpu", "img,img-axe-1-16m", "img,img-axe",
+                            "img,img-rogue";
                reg = <0x00 0x0fd00000 0x00 0x20000>;
                clocks = <&k3_clks 187 0>;
                clock-names = "core";
                interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
                power-domains = <&k3_pds 187 TI_SCI_PD_EXCLUSIVE>;
+               power-domain-names = "a";
        };
 
        cpsw3g: ethernet@8000000 {
                status = "disabled";
        };
 
+       pruss: pruss@30040000 {
+               compatible = "ti,am625-pruss";
+               reg = <0x00 0x30040000 0x00 0x80000>;
+               power-domains = <&k3_pds 81 TI_SCI_PD_EXCLUSIVE>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x0 0x00 0x30040000 0x80000>;
+
+               pruss_mem: memories@0 {
+                       reg = <0x0 0x2000>,
+                             <0x2000 0x2000>,
+                             <0x10000 0x10000>;
+                       reg-names = "dram0", "dram1", "shrdram2";
+               };
+
+               pruss_cfg: cfg@26000 {
+                       compatible = "ti,pruss-cfg", "syscon";
+                       reg = <0x26000 0x200>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges = <0x0 0x26000 0x2000>;
+
+                       clocks {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+
+                               pruss_coreclk_mux: coreclk-mux@3c {
+                                       reg = <0x3c>;
+                                       #clock-cells = <0>;
+                                       clocks = <&k3_clks 81 0>,  /* pruss_core_clk */
+                                                <&k3_clks 81 14>; /* pruss_iclk */
+                                       assigned-clocks = <&pruss_coreclk_mux>;
+                                       assigned-clock-parents = <&k3_clks 81 14>;
+                               };
+
+                               pruss_iepclk_mux: iepclk-mux@30 {
+                                       reg = <0x30>;
+                                       #clock-cells = <0>;
+                                       clocks = <&k3_clks 81 3>,       /* pruss_iep_clk */
+                                                <&pruss_coreclk_mux>;  /* pruss_coreclk_mux */
+                                       assigned-clocks = <&pruss_iepclk_mux>;
+                                       assigned-clock-parents = <&pruss_coreclk_mux>;
+                               };
+                       };
+               };
+
+               pruss_intc: interrupt-controller@20000 {
+                       compatible = "ti,pruss-intc";
+                       reg = <0x20000 0x2000>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-names = "host_intr0", "host_intr1",
+                                         "host_intr2", "host_intr3",
+                                         "host_intr4", "host_intr5",
+                                         "host_intr6", "host_intr7";
+               };
+
+               pru0: pru@34000 {
+                       compatible = "ti,am625-pru";
+                       reg = <0x34000 0x3000>,
+                             <0x22000 0x100>,
+                             <0x22400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am62x-pru0-fw";
+                       interrupt-parent = <&pruss_intc>;
+                       interrupts = <16 2 2>;
+                       interrupt-names = "vring";
+               };
+
+               pru1: pru@38000 {
+                       compatible = "ti,am625-pru";
+                       reg = <0x38000 0x3000>,
+                             <0x24000 0x100>,
+                             <0x24400 0x100>;
+                       reg-names = "iram", "control", "debug";
+                       firmware-name = "am62x-pru1-fw";
+                       interrupt-parent = <&pruss_intc>;
+                       interrupts = <18 3 3>;
+                       interrupt-names = "vring";
+               };
+       };
+
        gpmc0: memory-controller@3b000000 {
                compatible = "ti,am64-gpmc";
                power-domains = <&k3_pds 80 TI_SCI_PD_EXCLUSIVE>;
index 55ed418c023bc1f03a04514d12a0950ee9f498bb..10e6b5c08619ec38cde83b2b082ae5d477de2ec5 100644 (file)
                        no-map;
                };
 
+               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9da00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9da00000 0x00 0x100000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_memory_region: r5f-memory@9db00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9db00000 0x00 0xc00000>;
+                       no-map;
+               };
+
                secure_tfa_ddr: tfa@9e780000 {
                        reg = <0x00 0x9e780000 0x00 0x80000>;
                        alignment = <0x1000>;
                        alignment = <0x1000>;
                        no-map;
                };
-
-               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9db00000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9db00000 0x00 0x00c00000>;
-                       no-map;
-               };
        };
 
        vcc_5v0_som: regulator-vcc-5v0-som {
 };
 
 &mailbox0_cluster0 {
+       status = "okay";
+
        mbox_m4_0: mbox-m4-0 {
                ti,mbox-rx = <0 0 0>;
                ti,mbox-tx = <1 0 0>;
        };
+
+       mbox_r5_0: mbox-r5-0 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
 };
 
 &main_pktdma {
 &sdhci0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc0_pins_default>;
-       disable-wp;
        non-removable;
        bootph-all;
        status = "okay";
 };
+
+&wkup_r5fss0 {
+       status = "okay";
+};
+
+&wkup_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
+       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
+                       <&wkup_r5fss0_core0_memory_region>;
+};
diff --git a/src/arm64/ti/k3-am62-pocketbeagle2.dts b/src/arm64/ti/k3-am62-pocketbeagle2.dts
new file mode 100644 (file)
index 0000000..2e4cf65
--- /dev/null
@@ -0,0 +1,521 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * https://www.beagleboard.org/boards/pocketbeagle-2
+ *
+ * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
+ * Copyright (C) 2025 Robert Nelson, BeagleBoard.org Foundation
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "k3-am625.dtsi"
+
+/ {
+       compatible = "beagle,am62-pocketbeagle2", "ti,am625";
+       model = "BeagleBoard.org PocketBeagle2";
+
+       aliases {
+               serial0 = &wkup_uart0;
+               serial1 = &main_uart1;
+               serial2 = &main_uart6;
+               serial3 = &main_uart0;
+               mmc1 = &sdhci1;
+               usb0 = &usb0;
+               usb1 = &usb1;
+               i2c0 = &main_i2c0;
+               i2c2 = &main_i2c2;
+               i2c3 = &wkup_i2c0;
+       };
+
+       chosen {
+               stdout-path = &main_uart6;
+       };
+
+       memory@80000000 {
+               /* 512MB RAM */
+               reg = <0x00000000 0x80000000 0x00000000 0x20000000>;
+               device_type = "memory";
+               bootph-pre-ram;
+       };
+
+       reserved_memory: reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* global cma region */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0x00 0x8000000>;
+                       linux,cma-default;
+               };
+
+               mcu_m4fss_dma_memory_region: m4f-dma-memory@9cb00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9cb00000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_m4fss_memory_region: m4f-memory@9cc00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9cc00000 0x00 0xe00000>;
+                       no-map;
+               };
+
+               secure_tfa_ddr: tfa@9e780000 {
+                       reg = <0x00 0x9e780000 0x00 0x80000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
+
+               secure_ddr: optee@9e800000 {
+                       reg = <0x00 0x9e800000 0x00 0x01800000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9db00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9db00000 0x00 0xc00000>;
+                       no-map;
+               };
+       };
+
+       vsys_5v0: regulator-1 {
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               bootph-all;
+       };
+
+       vdd_3v3: regulator-2 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vsys_5v0>;
+               regulator-always-on;
+               regulator-boot-on;
+               bootph-all;
+       };
+
+       vdd_mmc1: regulator-3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd_mmc1";
+               pinctrl-names = "default";
+               pinctrl-0 = <&vdd_3v3_sd_pins_default>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               enable-active-high;
+               regulator-always-on;
+               vin-supply = <&vdd_3v3>;
+               gpio = <&main_gpio0 0 GPIO_ACTIVE_HIGH>;
+               bootph-all;
+       };
+
+       vdd_sd_dv: regulator-4 {
+               compatible = "regulator-gpio";
+               regulator-name = "sd_hs200_switch";
+               pinctrl-names = "default";
+               pinctrl-0 = <&vdd_sd_dv_pins_default>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               vin-supply = <&vdd_3v3>;
+               gpios = <&main_gpio1 49 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x0>,
+                        <3300000 0x1>;
+               bootph-all;
+       };
+
+       adc_vref: regulator-5 {
+               compatible = "regulator-fixed";
+               regulator-name = "default";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_pins_default>;
+               bootph-all;
+
+               led-1 {
+                       function = LED_FUNCTION_HEARTBEAT;
+                       color = <LED_COLOR_ID_GREEN>;
+                       linux,default-trigger = "heartbeat";
+                       gpios = <&main_gpio0 6 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+                       bootph-all;
+               };
+
+               led-2 {
+                       function = LED_FUNCTION_DISK_ACTIVITY;
+                       color = <LED_COLOR_ID_GREEN>;
+                       linux,default-trigger = "mmc1";
+                       gpios = <&main_gpio0 5 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+                       bootph-all;
+               };
+
+               led-3 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&main_gpio0 4 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+                       bootph-all;
+               };
+
+               led-4 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&main_gpio0 3 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+                       bootph-all;
+               };
+       };
+};
+
+&main_pmx0 {
+       led_pins_default: led-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x000c, PIN_OUTPUT, 7) /* (E25) OSPI0_D0.GPIO0_3 */
+                       AM62X_IOPAD(0x0010, PIN_OUTPUT, 7) /* (G24) OSPI0_D1.GPIO0_4 */
+                       AM62X_IOPAD(0x0014, PIN_OUTPUT, 7) /* (F25) OSPI0_D2.GPIO0_5 */
+                       AM62X_IOPAD(0x0018, PIN_OUTPUT, 7) /* (F24) OSPI0_D3.GPIO0_6 */
+               >;
+               bootph-all;
+       };
+
+       main_i2c0_pins_default: main-i2c0-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (B16) I2C0_SCL */
+                       AM62X_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (A16) I2C0_SDA */
+               >;
+               bootph-all;
+       };
+
+       main_i2c2_pins_default: main-i2c2-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (K22) GPMC0_CSn2.I2C2_SCL */
+                       AM62X_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (K24) GPMC0_CSn3.I2C2_SDA */
+               >;
+               bootph-all;
+       };
+
+       main_uart0_pins_default: main-uart0-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x1c8, PIN_INPUT, 0) /* (D14/A13) UART0_RXD */
+                       AM62X_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (E14/E11) UART0_TXD */
+               >;
+               bootph-all;
+       };
+
+       main_uart1_pins_default: main-uart1-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x194, PIN_INPUT, 2) /* (B19/B18) MCASP0_AXR3.UART1_CTSn */
+                       AM62X_IOPAD(0x198, PIN_OUTPUT, 2) /* (A19/B17) MCASP0_AXR2.UART1_RTSn */
+                       AM62X_IOPAD(0x1ac, PIN_INPUT, 2) /* (E19/D15) MCASP0_AFSR.UART1_RXD */
+                       AM62X_IOPAD(0x1b0, PIN_OUTPUT, 2) /* (A20/D16) MCASP0_ACLKR.UART1_TXD */
+               >;
+               bootph-all;
+       };
+
+       main_uart6_pins_default: main-uart6-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x001c, PIN_INPUT, 3) /* (J23) OSPI0_D4.UART6_RXD */
+                       AM62X_IOPAD(0x0020, PIN_OUTPUT, 3) /* (J25) OSPI0_D5.UART6_TXD */
+               >;
+       };
+
+       main_mmc1_pins_default: main-mmc1-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x23c, PIN_INPUT, 0) /* (A21/C18) MMC1_CMD */
+                       AM62X_IOPAD(0x234, PIN_INPUT, 0) /* (B22/A20) MMC1_CLK */
+                       AM62X_IOPAD(0x230, PIN_INPUT, 0) /* (A22/A19) MMC1_DAT0 */
+                       AM62X_IOPAD(0x22c, PIN_INPUT, 0) /* (B21/B19) MMC1_DAT1 */
+                       AM62X_IOPAD(0x228, PIN_INPUT, 0) /* (C21/B20) MMC1_DAT2 */
+                       AM62X_IOPAD(0x224, PIN_INPUT, 0) /* (D22/C19) MMC1_DAT3 */
+                       AM62X_IOPAD(0x240, PIN_INPUT, 7) /* (D17/C15) MMC1_SDCD.GPIO1_48 */
+               >;
+               bootph-all;
+       };
+
+       vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x0244, PIN_OUTPUT, 7) /* (P25) GPMC0_CLK.GPIO1_49 */
+               >;
+               bootph-all;
+       };
+
+       pmic_irq_pins_default: pmic-irq-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (D16) EXTINTn */
+               >;
+               bootph-all;
+       };
+
+       vdd_3v3_sd_pins_default: vdd-3v3-sd-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x0000, PIN_OUTPUT, 7) /* (H24) OSPI0_CLK.GPIO0_0 */
+               >;
+               bootph-all;
+       };
+
+       usb1_pins_default: usb1-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x0258, PIN_INPUT, 0) /* (F18) USB1_DRVVBUS */
+               >;
+               bootph-all;
+       };
+
+       epwm2_pins_default: epwm2-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x01e8, PIN_OUTPUT, 8) /* (B17) I2C1_SCL.EHRPWM2_A */
+               >;
+       };
+};
+
+&epwm2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&epwm2_pins_default>;
+};
+
+&mailbox0_cluster0 {
+       mbox_m4_0: mbox-m4-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&main_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart0_pins_default>;
+       bootph-all;
+       status = "okay";
+};
+
+&main_uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart1_pins_default>;
+       bootph-pre-ram;
+       status = "reserved";
+};
+
+&main_uart6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart6_pins_default>;
+       bootph-all;
+       status = "okay";
+};
+
+&main_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c0_pins_default>;
+       clock-frequency = <400000>;
+       bootph-all;
+       status = "okay";
+
+       ad7291: adc@20 {
+               /* Emulated with MSPM0L1105 */
+               compatible = "adi,ad7291";
+               reg = <0x20>;
+               vref-supply = <&adc_vref>;
+       };
+
+       eeprom: eeprom@50 {
+               /* Emulated with MSPM0L1105 */
+               compatible = "atmel,24c32";
+               reg = <0x50>;
+       };
+};
+
+&main_i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c2_pins_default>;
+       clock-frequency = <400000>;
+       bootph-all;
+       status = "okay";
+};
+
+&mcu_m4fss {
+       mboxes = <&mailbox0_cluster0 &mbox_m4_0>;
+       memory-region = <&mcu_m4fss_dma_memory_region>,
+                       <&mcu_m4fss_memory_region>;
+       status = "okay";
+};
+
+&mcu_pmx0 {
+       wkup_uart0_pins_default: wkup-uart0-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_MCU_IOPAD(0x02c, PIN_INPUT, 0)    /* (C6/A7) WKUP_UART0_CTSn */
+                       AM62X_MCU_IOPAD(0x030, PIN_OUTPUT, 0)   /* (A4/B4) WKUP_UART0_RTSn */
+                       AM62X_MCU_IOPAD(0x024, PIN_INPUT, 0)    /* (B4/B5) WKUP_UART0_RXD */
+                       AM62X_MCU_IOPAD(0x028, PIN_OUTPUT, 0)   /* (C5/C6) WKUP_UART0_TXD */
+               >;
+               bootph-all;
+       };
+
+       wkup_i2c0_pins_default: wkup-i2c0-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_MCU_IOPAD(0x004c, PIN_INPUT_PULLUP, 0)    /* (B9) WKUP_I2C0_SCL */
+                       AM62X_MCU_IOPAD(0x0050, PIN_INPUT_PULLUP, 0)    /* (A9) WKUP_I2C0_SDA */
+               >;
+               bootph-all;
+       };
+};
+
+&sdhci1 {
+       /* SD/MMC */
+       vmmc-supply = <&vdd_mmc1>;
+       vqmmc-supply = <&vdd_sd_dv>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mmc1_pins_default>;
+       disable-wp;
+       cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>;
+       cd-debounce-delay-ms = <100>;
+       bootph-all;
+       ti,fails-without-test-cd;
+       status = "okay";
+};
+
+&usbss0 {
+       bootph-all;
+       ti,vbus-divider;
+       status = "okay";
+};
+
+&usb0 {
+       /* This is a Type-C socket, but wired as USB 2.0 */
+       dr_mode = "peripheral";
+       bootph-all;
+};
+
+&usbss1 {
+       ti,vbus-divider;
+       status = "okay";
+};
+
+&usb1 {
+       /*
+        * Default set here is compatible with original PocketBeagle,
+        * Expansion boards assumed this was pre-setup as host.
+        */
+       dr_mode = "host";
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb1_pins_default>;
+};
+
+&wkup_uart0 {
+       /* WKUP UART0 is used by Device Manager firmware */
+       pinctrl-names = "default";
+       pinctrl-0 = <&wkup_uart0_pins_default>;
+       bootph-all;
+       status = "reserved";
+};
+
+&wkup_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&wkup_i2c0_pins_default>;
+       clock-frequency = <100000>;
+       bootph-all;
+       status = "okay";
+
+       tps65219: pmic@30 {
+               compatible = "ti,tps65219";
+               reg = <0x30>;
+               buck1-supply = <&vsys_5v0>;
+               buck2-supply = <&vsys_5v0>;
+               buck3-supply = <&vsys_5v0>;
+               ldo1-supply = <&vdd_3v3>;
+               ldo2-supply = <&buck2_reg>;
+               ldo3-supply = <&vdd_3v3>;
+               ldo4-supply = <&vdd_3v3>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_irq_pins_default>;
+               interrupt-parent = <&gic500>;
+               interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-controller;
+               #interrupt-cells = <1>;
+
+               bootph-all;
+               system-power-controller;
+               ti,power-button;
+
+               regulators {
+                       buck1_reg: buck1 {
+                               regulator-name = "VDD_CORE";
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck2_reg: buck2 {
+                               regulator-name = "VDD_1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck3_reg: buck3 {
+                               regulator-name = "VDD_1V2";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo1_reg: ldo1 {
+                               /*
+                                * Regulator is left as is unused, vdd_sd
+                                * is controlled via GPIO with bypass config
+                                * as per the NVM configuration
+                                */
+                               regulator-name = "VDD_SD_3V3";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-allow-bypass;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo2_reg: ldo2 {
+                               regulator-name = "VDDA_0V85";
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo3_reg: ldo3 {
+                               regulator-name = "VDDA_1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ldo4_reg: ldo4 {
+                               regulator-name = "VDD_2V5";
+                               regulator-min-microvolt = <2500000>;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
index fcc4cb2e9389bca81f099f12fed4f5f518a83b4b..2b5f5e50b5783867561809c90be26fb487135d17 100644 (file)
 
        /* EEPROM */
        eeprom@57 {
-               compatible = "st,24c02";
+               compatible = "st,24c02", "atmel,24c02";
                reg = <0x57>;
                pagesize = <16>;
        };
index 7372d392ec8a349b97b1787fd0ee0b946e3926e5..9a2483cf5d7037da76d28c6193de266ce5026641 100644 (file)
 
        /* EEPROM */
        eeprom@57 {
-               compatible = "st,24c02";
+               compatible = "st,24c02", "atmel,24c02";
                reg = <0x57>;
                pagesize = <16>;
        };
index 9b8a1f85aa15cab3453cc9bce619e3441b3f8926..6549b7efa6561f23ac0448982dbf7fbbf8e88b9a 100644 (file)
                status = "reserved";
        };
 
+       wkup_r5fss0: r5fss@78000000 {
+               compatible = "ti,am62-r5fss";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x78000000 0x00 0x78000000 0x8000>,
+                        <0x78100000 0x00 0x78100000 0x8000>;
+               power-domains = <&k3_pds 119 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+
+               wkup_r5fss0_core0: r5f@78000000 {
+                       compatible = "ti,am62-r5f";
+                       reg = <0x78000000 0x00008000>,
+                             <0x78100000 0x00008000>;
+                       reg-names = "atcm", "btcm";
+                       resets = <&k3_reset 121 1>;
+                       firmware-name = "am62-wkup-r5f0_0-fw";
+                       ti,atcm-enable = <1>;
+                       ti,btcm-enable = <1>;
+                       ti,loczrama = <1>;
+                       ti,sci = <&dmsc>;
+                       ti,sci-dev-id = <121>;
+                       ti,sci-proc-ids = <0x01 0xff>;
+               };
+       };
+
        wkup_vtm0: temperature-sensor@b00000 {
                compatible = "ti,j7200-vtm";
                reg = <0x00 0xb00000 0x00 0x400>,
index bfb55ca113239be4367a1cf8edf219187fafa8a0..59f6dff552ed40e4ac0f9c7077aa25d68d3b5283 100644 (file)
@@ -86,7 +86,9 @@
                         /* Wakeup Domain Range */
                         <0x00 0x00b00000 0x00 0x00b00000 0x00 0x00002400>, /* VTM */
                         <0x00 0x2b000000 0x00 0x2b000000 0x00 0x00300400>,
-                        <0x00 0x43000000 0x00 0x43000000 0x00 0x00020000>;
+                        <0x00 0x43000000 0x00 0x43000000 0x00 0x00020000>,
+                        <0x00 0x78000000 0x00 0x78000000 0x00 0x00008000>, /* DM R5 ATCM*/
+                        <0x00 0x78100000 0x00 0x78100000 0x00 0x00008000>; /* DM R5 BTCM*/
 
                cbass_mcu: bus@4000000 {
                        bootph-all;
                        #size-cells = <2>;
                        ranges = <0x00 0x00b00000 0x00 0x00b00000 0x00 0x00002400>, /* VTM */
                                 <0x00 0x2b000000 0x00 0x2b000000 0x00 0x00300400>, /* Peripheral Window */
-                                <0x00 0x43000000 0x00 0x43000000 0x00 0x00020000>;
+                                <0x00 0x43000000 0x00 0x43000000 0x00 0x00020000>,
+                                <0x00 0x78000000 0x00 0x78000000 0x00 0x00008000>, /* DM R5 ATCM*/
+                                <0x00 0x78100000 0x00 0x78100000 0x00 0x00008000>; /* DM R5 BTCM*/
                };
        };
 
index 3b4643b7d19c9468d1f637159ce7d1de331573cf..000305c9e36628de4db6eaf4152c4b0524f54a27 100644 (file)
                #clock-cells = <0>;
                clock-frequency = <12000000>;
        };
+
+       reg_2p8v: regulator-2p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P8V";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vdd_3v3>;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vdd_3v3>;
+               regulator-always-on;
+       };
+
+       reg_1p5v: regulator-1p5v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P5V";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               vin-supply = <&vdd_3v3>;
+               regulator-always-on;
+       };
 };
 
 &main_gpio0 {
                clocks = <&clk_ov5640_fixed>;
                clock-names = "xclk";
 
+               AVDD-supply = <&reg_2p8v>;
+               DOVDD-supply = <&reg_1p8v>;
+               DVDD-supply = <&reg_1p5v>;
+
                port {
                        csi2_cam0: endpoint {
                                remote-endpoint = <&csi2rx0_in_sensor>;
index 81a2763d43c65f88eeb833daa779e1cbcf6d7fc2..8a7a9ece08af65804f21ab9898d33e9972691917 100644 (file)
                #clock-cells = <0>;
                clock-frequency = <24000000>;
        };
+
+       reg_2p8v: regulator-2p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P8V";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vdd_3v3>;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vdd_3v3>;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vdd_3v3>;
+               regulator-always-on;
+       };
 };
 
 &main_gpio0 {
                clocks = <&clk_ov5640_fixed>;
                clock-names = "xclk";
 
+               AVDD-supply = <&reg_2p8v>;
+               DOVDD-supply = <&reg_1p8v>;
+               DVDD-supply = <&reg_3p3v>;
+
                port {
                        csi2_cam0: endpoint {
                                remote-endpoint = <&csi2rx0_in_sensor>;
index a5469f2712f0945d5717d9570767fedf2681013a..72b09f9c69d8c84ffdb22c85d2c65906092e060d 100644 (file)
 
 &sdhci0 {
        bootph-all;
+       non-removable;
        pinctrl-names = "default";
        pinctrl-0 = <&emmc_pins_default>;
-       disable-wp;
        status = "okay";
 };
 
index a1daba7b1fad5dee026ce4ba52077e01baca0131..63e097ddf988cabc93c7fad08485e990e742ca92 100644 (file)
                power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
                clocks = <&k3_clks 57 5>, <&k3_clks 57 6>;
                clock-names = "clk_ahb", "clk_xin";
-               assigned-clocks = <&k3_clks 57 6>;
-               assigned-clock-parents = <&k3_clks 57 8>;
                bus-width = <8>;
                mmc-hs200-1_8v;
                ti,clkbuf-sel = <0x7>;
                power-domains = <&k3_pds 204 TI_SCI_PD_EXCLUSIVE>;
        };
 
+       c7x_0: dsp@7e000000 {
+               compatible = "ti,am62a-c7xv-dsp";
+               reg = <0x00 0x7e000000 0x00 0x00100000>;
+               reg-names = "l2sram";
+               resets = <&k3_reset 208 1>;
+               firmware-name = "am62a-c71_0-fw";
+               ti,sci = <&dmsc>;
+               ti,sci-dev-id = <208>;
+               ti,sci-proc-ids = <0x04 0xff>;
+               status = "disabled";
+       };
+
        e5010: jpeg-encoder@fd20000 {
                compatible = "ti,am62a-jpeg-enc", "img,e5010-jpeg-enc";
                reg = <0x00 0xfd20000 0x00 0x100>,
index 9ed9d703ff24d80171fdb29abbb0d5e3819c8a90..ee961ced7208f99acf239ba9c8d8cbef0c326481 100644 (file)
                bosch,mram-cfg = <0x0 128 64 64 64 64 32 32>;
                status = "disabled";
        };
+
+       mcu_r5fss0: r5fss@79000000 {
+               compatible = "ti,am62-r5fss";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x79000000 0x00 0x79000000 0x8000>,
+                        <0x79020000 0x00 0x79020000 0x8000>;
+               power-domains = <&k3_pds 7 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+
+               mcu_r5fss0_core0: r5f@79000000 {
+                       compatible = "ti,am62-r5f";
+                       reg = <0x79000000 0x00008000>,
+                             <0x79020000 0x00008000>;
+                       reg-names = "atcm", "btcm";
+                       resets = <&k3_reset 9 1>;
+                       firmware-name = "am62a-mcu-r5f0_0-fw";
+                       ti,atcm-enable = <0>;
+                       ti,btcm-enable = <1>;
+                       ti,loczrama = <0>;
+                       ti,sci = <&dmsc>;
+                       ti,sci-dev-id = <9>;
+                       ti,sci-proc-ids = <0x03 0xff>;
+               };
+       };
 };
index 147d56b879843ec832d0849e6ed877aa83a72229..5dc5d2cb20ccdd85d82a5067959f5ea83efcd96e 100644 (file)
                        linux,cma-default;
                };
 
+               c7x_0_dma_memory_region: c7x-dma-memory@99800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x99800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               c7x_0_memory_region: c7x-memory@99900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x99900000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@9b800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9b800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_memory_region: r5f-dma-memory@9b900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9b900000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c900000 0x00 0xf00000>;
+                       no-map;
+               };
+
                secure_tfa_ddr: tfa@9e780000 {
                        reg = <0x00 0x9e780000 0x00 0x80000>;
                        alignment = <0x1000>;
                        alignment = <0x1000>;
                        no-map;
                };
-
-               wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9c900000 0x00 0x01e00000>;
-                       no-map;
-               };
        };
 
        vcc_5v0_som: regulator-vcc-5v0-som {
        };
 };
 
+&c7x_0 {
+       mboxes = <&mailbox0_cluster1 &mbox_c7x_0>;
+       memory-region = <&c7x_0_dma_memory_region>,
+                       <&c7x_0_memory_region>;
+       status = "okay";
+};
+
 &cpsw3g {
        pinctrl-names = "default";
        pinctrl-0 = <&main_rgmii1_pins_default>;
        status = "okay";
 };
 
+&mailbox0_cluster0 {
+       status = "okay";
+
+       mbox_r5_0: mbox-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster1 {
+       status = "okay";
+
+       mbox_c7x_0: mbox-c7x-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster2 {
+       status = "okay";
+
+       mbox_mcu_r5_0: mbox-mcu-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
 &main_i2c0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c0_pins_default>;
        bootph-all;
 };
 
+/* main_rti4 is used by C7x DSP */
+&main_rti4 {
+       status = "reserved";
+};
+
+/* main_timer2 is used by C7x DSP */
+&main_timer2 {
+       status = "reserved";
+};
+
+&mcu_r5fss0 {
+       status = "okay";
+};
+
+&mcu_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster2 &mbox_mcu_r5_0>;
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+};
+
 &ospi0 {
        pinctrl-names = "default";
        pinctrl-0 = <&ospi0_pins_default>;
 &sdhci0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc0_pins_default>;
-       disable-wp;
        non-removable;
        bootph-all;
        status = "okay";
 };
+
+&wkup_r5fss0 {
+       status = "okay";
+};
+
+&wkup_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0  &mbox_r5_0>;
+       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
+                       <&wkup_r5fss0_core0_memory_region>;
+};
index c7486fb2a5b45cfa2bd7798eb4746ad2af8c390a..3aa127157d242286824f670c48a76b29e25d9f76 100644 (file)
@@ -12,12 +12,29 @@ thermal_zones: thermal-zones {
                thermal-sensors = <&wkup_vtm0 0>;
 
                trips {
+                       main0_alert: main0-alert {
+                               temperature = <115000>;
+                               hysteresis = <2000>;
+                               type = "passive";
+                       };
+
                        main0_crit: main0-crit {
                                temperature = <125000>; /* milliCelsius */
                                hysteresis = <2000>;    /* milliCelsius */
                                type = "critical";
                        };
                };
+
+               cooling-maps {
+                       map0 {
+                               trip = <&main0_alert>;
+                               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>;
+                       };
+               };
        };
 
        main1_thermal: main1-thermal {
@@ -26,25 +43,59 @@ thermal_zones: thermal-zones {
                thermal-sensors = <&wkup_vtm0 1>;
 
                trips {
+                       main1_alert: main1-alert {
+                               temperature = <115000>;
+                               hysteresis = <2000>;
+                               type = "passive";
+                       };
+
                        main1_crit: main1-crit {
                                temperature = <125000>; /* milliCelsius */
                                hysteresis = <2000>;    /* milliCelsius */
                                type = "critical";
                        };
                };
+
+               cooling-maps {
+                       map0 {
+                               trip = <&main1_alert>;
+                               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>;
+                       };
+               };
        };
 
        main2_thermal: main2-thermal {
-              polling-delay-passive = <250>;   /* milliSeconds */
-              polling-delay = <500>;           /* milliSeconds */
-              thermal-sensors = <&wkup_vtm0 2>;
+               polling-delay-passive = <250>;  /* milliSeconds */
+               polling-delay = <500>;          /* milliSeconds */
+               thermal-sensors = <&wkup_vtm0 2>;
 
                trips {
+                       main2_alert: main2-alert {
+                               temperature = <115000>;
+                               hysteresis = <2000>;
+                               type = "passive";
+                       };
+
                        main2_crit: main2-crit {
                                temperature = <125000>; /* milliCelsius */
                                hysteresis = <2000>;    /* milliCelsius */
                                type = "critical";
                        };
                };
+
+               cooling-maps {
+                       map0 {
+                               trip = <&main2_alert>;
+                               cooling-device =
+                                       <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+               };
        };
 };
index b2c8f5351743857a54385178cce5c82a961917e3..259ae6ebbfb5ac5f83cc2c159c779ecaf9f96dcf 100644 (file)
                status = "reserved";
        };
 
+       wkup_r5fss0: r5fss@78000000 {
+               compatible = "ti,am62-r5fss";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0x78000000 0x00 0x78000000 0x8000>,
+                        <0x78100000 0x00 0x78100000 0x8000>;
+               power-domains = <&k3_pds 119 TI_SCI_PD_EXCLUSIVE>;
+               status = "disabled";
+
+               wkup_r5fss0_core0: r5f@78000000 {
+                       compatible = "ti,am62-r5f";
+                       reg = <0x78000000 0x00008000>,
+                             <0x78100000 0x00008000>;
+                       reg-names = "atcm", "btcm";
+                       resets = <&k3_reset 121 1>;
+                       firmware-name = "am62a-wkup-r5f0_0-fw";
+                       ti,atcm-enable = <1>;
+                       ti,btcm-enable = <1>;
+                       ti,loczrama = <1>;
+                       ti,sci = <&dmsc>;
+                       ti,sci-dev-id = <121>;
+                       ti,sci-proc-ids = <0x01 0xff>;
+               };
+       };
+
        wkup_vtm0: temperature-sensor@b00000 {
                compatible = "ti,j7200-vtm";
                reg = <0x00 0xb00000 0x00 0x400>,
index 1c9d95696c839a51b607839abb9429a8de6fa620..b2775902601495cf95d5146265516bce6c1727db 100644 (file)
                        linux,cma-default;
                };
 
+               c7x_0_dma_memory_region: c7x-dma-memory@99800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x99800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               c7x_0_memory_region: c7x-memory@99900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x99900000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@9b800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9b800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_memory_region: r5f-dma-memory@9b900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9b900000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c800000 0x00 0x100000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c900000 0x00 0xf00000>;
+                       no-map;
+               };
+
                secure_tfa_ddr: tfa@9e780000 {
                        reg = <0x00 0x9e780000 0x00 0x80000>;
                        alignment = <0x1000>;
                        alignment = <0x1000>;
                        no-map;
                };
-
-               wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9c900000 0x00 0x01e00000>;
-                       no-map;
-               };
        };
 
        opp-table {
                        AM62AX_IOPAD(0x1fc, PIN_INPUT_PULLUP, 0) /* (AD2) MMC0_DAT6 */
                        AM62AX_IOPAD(0x1f8, PIN_INPUT_PULLUP, 0) /* (AC2) MMC0_DAT7 */
                >;
+               bootph-all;
        };
 
        main_mmc1_pins_default: main-mmc1-default-pins {
                        AM62AX_IOPAD(0x07c, PIN_OUTPUT, 7) /* (M19) GPMC0_CLK.GPIO0_31 */
                >;
        };
+
+       main_ecap0_pins_default: main-ecap0-default-pins {
+               pinctrl-single,pins = <
+                       AM62AX_IOPAD(0x01b8, PIN_OUTPUT, 3) /* (C16) SPI0_CS1.ECAP0_IN_APWM_OUT */
+               >;
+       };
+
+       main_ecap2_pins_default: main-ecap2-default-pins {
+               pinctrl-single,pins = <
+                       AM62AX_IOPAD(0x01a4, PIN_OUTPUT, 2) /* (A19) MCASP0_ACLKX.ECAP2_IN_APWM_OUT */
+               >;
+       };
+
+       main_epwm1_pins_default: main-epwm1-default-pins {
+               pinctrl-single,pins = <
+                       AM62AX_IOPAD(0x019c, PIN_OUTPUT, 6) /* (B18) MCASP0_AXR1.EHRPWM1_A */
+                       AM62AX_IOPAD(0x01a0, PIN_OUTPUT, 6) /* (B20) MCASP0_AXR0.EHRPWM1_B */
+               >;
+       };
 };
 
 &mcu_pmx0 {
        non-removable;
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc0_pins_default>;
-       disable-wp;
+       bootph-all;
 };
 
 &sdhci1 {
        status = "reserved";
 };
 
+/* main_timer2 is used by C7x DSP */
+&main_timer2 {
+       status = "reserved";
+};
+
 &usbss0 {
        status = "okay";
        ti,vbus-divider;
                };
        };
 };
+
+&ecap0 {
+       /* P26 of J3 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_ecap0_pins_default>;
+       status = "okay";
+};
+
+&ecap2 {
+       /* P11 of J3 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_ecap2_pins_default>;
+       status = "okay";
+};
+
+&epwm1 {
+       /* P36/P33 of J3 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_epwm1_pins_default>;
+       status = "okay";
+};
+
+&mailbox0_cluster0 {
+       status = "okay";
+
+       mbox_r5_0: mbox-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster1 {
+       status = "okay";
+
+       mbox_c7x_0: mbox-c7x-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster2 {
+       status = "okay";
+
+       mbox_mcu_r5_0: mbox-mcu-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&wkup_r5fss0 {
+       status = "okay";
+};
+
+&wkup_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0>, <&mbox_r5_0>;
+       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
+                       <&wkup_r5fss0_core0_memory_region>;
+};
+
+&mcu_r5fss0 {
+       status = "okay";
+};
+
+&mcu_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster2>, <&mbox_mcu_r5_0>;
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+};
+
+&c7x_0 {
+       mboxes = <&mailbox0_cluster1>, <&mbox_c7x_0>;
+       memory-region = <&c7x_0_dma_memory_region>,
+                       <&c7x_0_memory_region>;
+       status = "okay";
+};
+
+/* main_rti4 is used by C7x DSP */
+&main_rti4 {
+       status = "reserved";
+};
index 6c99221beb6bd8e5ad93888e6b659cc6e08fb679..b6e5eee993706d6e868ead810202c90e69cd0394 100644 (file)
@@ -50,6 +50,7 @@
                        next-level-cache = <&L2_0>;
                        operating-points-v2 = <&a53_opp_table>;
                        clocks = <&k3_clks 135 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu1: cpu@1 {
@@ -66,6 +67,7 @@
                        next-level-cache = <&L2_0>;
                        operating-points-v2 = <&a53_opp_table>;
                        clocks = <&k3_clks 136 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu2: cpu@2 {
@@ -82,6 +84,7 @@
                        next-level-cache = <&L2_0>;
                        operating-points-v2 = <&a53_opp_table>;
                        clocks = <&k3_clks 137 0>;
+                       #cooling-cells = <2>;
                };
 
                cpu3: cpu@3 {
                        next-level-cache = <&L2_0>;
                        operating-points-v2 = <&a53_opp_table>;
                        clocks = <&k3_clks 138 0>;
+                       #cooling-cells = <2>;
                };
        };
 
index 6e3beb5c2e010e1ac8bf034f85868004d8ad7514..fa55c43ca28dc87de40ef6ab15c7e90881ac8927 100644 (file)
                reg = <0x00 0x40900000 0x00 0x1200>;
                #address-cells = <2>;
                #size-cells = <2>;
+               ranges = <0x00 0x40900000 0x00 0x40900000 0x00 0x30000>;
+
                dmas = <&main_pktdma 0xf501 0>, <&main_pktdma 0x7506 0>,
                       <&main_pktdma 0x7507 0>;
                dma-names = "tx", "rx1", "rx2";
+
+               rng: rng@40910000 {
+                       compatible = "inside-secure,safexcel-eip76";
+                       reg = <0x00 0x40910000 0x0 0x7d>;
+                       interrupts = <GIC_SPI 129 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "reserved";
+               };
        };
 
        secure_proxy_sa3: mailbox@43600000 {
                power-domains = <&k3_pds 57 TI_SCI_PD_EXCLUSIVE>;
                clocks = <&k3_clks 57 1>, <&k3_clks 57 2>;
                clock-names = "clk_ahb", "clk_xin";
-               assigned-clocks = <&k3_clks 57 2>;
-               assigned-clock-parents = <&k3_clks 57 4>;
                bus-width = <8>;
                mmc-ddr-1_8v;
                mmc-hs200-1_8v;
diff --git a/src/arm64/ti/k3-am62p-verdin-dahlia.dtsi b/src/arm64/ti/k3-am62p-verdin-dahlia.dtsi
new file mode 100644 (file)
index 0000000..ee3feac
--- /dev/null
@@ -0,0 +1,228 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * Common dtsi for Verdin AM62P SoM on Dahlia carrier board
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/dahlia-carrier-board-kit
+ */
+
+/ {
+       aliases {
+               eeprom1 = &carrier_eeprom;
+       };
+
+       reg_1v8_sw: regulator-1v8-sw {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <1800000>;
+               regulator-min-microvolt = <1800000>;
+               regulator-name = "On-carrier +V1.8_SW";
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,format = "i2s";
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,name = "verdin-wm8904";
+               simple-audio-card,routing =
+                       "Headphone Jack", "HPOUTL",
+                       "Headphone Jack", "HPOUTR",
+                       "IN2L", "Line In Jack",
+                       "IN2R", "Line In Jack",
+                       "Microphone Jack", "MICBIAS",
+                       "IN1L", "Microphone Jack";
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack",
+                       "Line", "Line In Jack";
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&wm8904_1a>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp0>;
+               };
+       };
+};
+
+/* Verdin ETHs */
+&cpsw3g {
+       status = "okay";
+};
+
+/* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
+&cpsw3g_mdio {
+       status = "okay";
+};
+
+/* Verdin ETH_1 (On-module PHY) */
+&cpsw_port1 {
+       status = "okay";
+};
+
+/* Verdin PWM_3_DSI */
+&epwm0 {
+       status = "okay";
+};
+
+/* Verdin PWM_1, PWM_2 */
+&epwm2 {
+       status = "okay";
+};
+
+&main_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie_1_reset>,
+                   <&pinctrl_gpio_5>,
+                   <&pinctrl_gpio_6>,
+                   <&pinctrl_gpio_7>,
+                   <&pinctrl_gpio_8>;
+};
+
+/* Verdin I2C_1 */
+&main_i2c0 {
+       status = "okay";
+
+       wm8904_1a: audio-codec@1a {
+               compatible = "wlf,wm8904";
+               reg = <0x1a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2s1_mclk>;
+               clocks = <&audio_refclk0>;
+               clock-names = "mclk";
+               #sound-dai-cells = <0>;
+               AVDD-supply = <&reg_1v8_sw>;
+               CPVDD-supply = <&reg_1v8_sw>;
+               DBVDD-supply = <&reg_1v8_sw>;
+               DCVDD-supply = <&reg_1v8_sw>;
+               MICVDD-supply = <&reg_1v8_sw>;
+       };
+
+       /* Current measurement into module VCC */
+       hwmon@40 {
+               compatible = "ti,ina219";
+               reg = <0x40>;
+               shunt-resistor = <10000>;
+       };
+
+       temperature-sensor@4f {
+               compatible = "ti,tmp75c";
+               reg = <0x4f>;
+       };
+
+       carrier_eeprom: eeprom@57 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x57>;
+               pagesize = <16>;
+       };
+};
+
+/* Verdin I2C_2_DSI */
+&main_i2c1 {
+       status = "okay";
+};
+
+/* Verdin I2C_4_CSI */
+&main_i2c3 {
+       status = "okay";
+};
+
+/* Verdin CAN_1 */
+&main_mcan0 {
+       status = "okay";
+};
+
+/* Verdin SPI_1 */
+&main_spi1 {
+       status = "okay";
+};
+
+/* Verdin UART_3, used as the Linux console */
+&main_uart0 {
+       status = "okay";
+};
+
+/* Verdin UART_1 */
+&main_uart1 {
+       status = "okay";
+};
+
+/* Verdin I2S_1 */
+&mcasp0 {
+       status = "okay";
+};
+
+&mcu_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_1>,
+                   <&pinctrl_gpio_2>,
+                   <&pinctrl_gpio_3>,
+                   <&pinctrl_gpio_4>;
+};
+
+/* Verdin I2C_3_HDMI */
+&mcu_i2c0 {
+       status = "okay";
+};
+
+/* Verdin CAN_2 */
+&mcu_mcan0 {
+       status = "okay";
+};
+
+/* Verdin UART_4 */
+&mcu_uart0 {
+       status = "okay";
+};
+
+/* Verdin QSPI_1 */
+&ospi0 {
+       status = "okay";
+};
+
+/* We support turning off sleep moci on Dahlia */
+&reg_force_sleep_moci {
+       status = "disabled";
+};
+
+/* Verdin SD_1 */
+&sdhci1 {
+       status = "okay";
+};
+
+/* Verdin USB_1 */
+&usbss0 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+/* Verdin USB_2 */
+&usbss1 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+/* Verdin CTRL_WAKE1_MICO# */
+&verdin_gpio_keys {
+       status = "okay";
+};
+
+/* Verdin PCIE_1_RESET# */
+&verdin_pcie_1_reset_hog {
+       status = "okay";
+};
+
+/* Verdin UART_2 */
+&wkup_uart0 {
+       status = "okay";
+};
diff --git a/src/arm64/ti/k3-am62p-verdin-dev.dtsi b/src/arm64/ti/k3-am62p-verdin-dev.dtsi
new file mode 100644 (file)
index 0000000..0679d76
--- /dev/null
@@ -0,0 +1,245 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * Common dtsi for Verdin AM62P SoM on Development carrier board
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/verdin-development-board-kit
+ */
+
+/ {
+       aliases {
+               eeprom1 = &carrier_eeprom;
+       };
+
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,format = "i2s";
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,mclk-fs = <256>;
+               simple-audio-card,name = "verdin-nau8822";
+               simple-audio-card,routing =
+                       "Headphones", "LHP",
+                       "Headphones", "RHP",
+                       "Speaker", "LSPK",
+                       "Speaker", "RSPK",
+                       "Line Out", "AUXOUT1",
+                       "Line Out", "AUXOUT2",
+                       "LAUX", "Line In",
+                       "RAUX", "Line In",
+                       "LMICP", "Mic In",
+                       "RMICP", "Mic In";
+               simple-audio-card,widgets =
+                       "Headphones", "Headphones",
+                       "Line Out", "Line Out",
+                       "Speaker", "Speaker",
+                       "Microphone", "Mic In",
+                       "Line", "Line In";
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&nau8822_1a>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&mcasp0>;
+               };
+       };
+};
+
+/* Verdin ETHs */
+&cpsw3g {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii1>, <&pinctrl_rgmii2>;
+       status = "okay";
+};
+
+/* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
+&cpsw3g_mdio {
+       status = "okay";
+
+       carrier_eth_phy: ethernet-phy@7 {
+               compatible = "ethernet-phy-ieee802.3-c22";
+               reg = <7>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_eth2_rgmii_int>;
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <42 IRQ_TYPE_EDGE_FALLING>;
+               micrel,led-mode = <0>;
+       };
+};
+
+/* Verdin ETH_1 (On-module PHY) */
+&cpsw_port1 {
+       status = "okay";
+};
+
+/* Verdin ETH_2_RGMII */
+&cpsw_port2 {
+       phy-handle = <&carrier_eth_phy>;
+       phy-mode = "rgmii-rxid";
+       status = "okay";
+};
+
+/* Verdin PWM_3_DSI */
+&epwm0 {
+       status = "okay";
+};
+
+/* Verdin PWM_1, PWM_2 */
+&epwm2 {
+       status = "okay";
+};
+
+&main_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie_1_reset>,
+                   <&pinctrl_gpio_5>,
+                   <&pinctrl_gpio_6>,
+                   <&pinctrl_gpio_7>,
+                   <&pinctrl_gpio_8>;
+};
+
+/* Verdin I2C_1 */
+&main_i2c0 {
+       status = "okay";
+
+       nau8822_1a: audio-codec@1a {
+               compatible = "nuvoton,nau8822";
+               reg = <0x1a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2s1_mclk>;
+               clock-names = "mclk";
+               clocks = <&audio_refclk0>;
+               #sound-dai-cells = <0>;
+       };
+
+       carrier_gpio_expander: gpio@21 {
+               compatible = "nxp,pcal6416";
+               reg = <0x21>;
+               #gpio-cells = <2>;
+               gpio-controller;
+       };
+
+       /* Current measurement into module VCC */
+       hwmon@40 {
+               compatible = "ti,ina219";
+               reg = <0x40>;
+               shunt-resistor = <10000>;
+       };
+
+       temperature-sensor@4f {
+               compatible = "ti,tmp75c";
+               reg = <0x4f>;
+       };
+
+       carrier_eeprom: eeprom@57 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x57>;
+               pagesize = <16>;
+       };
+};
+
+/* Verdin I2C_2_DSI */
+&main_i2c1 {
+       status = "okay";
+};
+
+/* Verdin I2C_4_CSI */
+&main_i2c3 {
+       status = "okay";
+};
+
+/* Verdin CAN_1 */
+&main_mcan0 {
+       status = "okay";
+};
+
+/* Verdin SPI_1 */
+&main_spi1 {
+       status = "okay";
+};
+
+/* Verdin UART_3, used as the Linux console */
+&main_uart0 {
+       status = "okay";
+};
+
+/* Verdin UART_1, connector X50 through RS485 transceiver */
+&main_uart1 {
+       rs485-rx-during-tx;
+       linux,rs485-enabled-at-boot-time;
+       status = "okay";
+};
+
+/* Verdin I2S_1 */
+&mcasp0 {
+       status = "okay";
+};
+
+&mcu_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_1>,
+                   <&pinctrl_gpio_2>,
+                   <&pinctrl_gpio_3>,
+                   <&pinctrl_gpio_4>;
+};
+
+/* Verdin I2C_3_HDMI */
+&mcu_i2c0 {
+       status = "okay";
+};
+
+/* Verdin CAN_2 */
+&mcu_mcan0 {
+       status = "okay";
+};
+
+/* Verdin UART_4 */
+&mcu_uart0 {
+       status = "okay";
+};
+
+/* Verdin QSPI_1 */
+&ospi0 {
+       status = "okay";
+};
+
+/* Verdin SD_1 */
+&sdhci1 {
+       status = "okay";
+};
+
+/* Verdin USB_1 */
+&usbss0 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+/* Verdin USB_2 */
+&usbss1 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+/* Verdin CTRL_WAKE1_MICO# */
+&verdin_gpio_keys {
+       status = "okay";
+};
+
+/* Verdin PCIE_1_RESET# */
+&verdin_pcie_1_reset_hog {
+       status = "okay";
+};
+
+/* Verdin UART_2 */
+&wkup_uart0 {
+       status = "okay";
+};
diff --git a/src/arm64/ti/k3-am62p-verdin-ivy.dtsi b/src/arm64/ti/k3-am62p-verdin-ivy.dtsi
new file mode 100644 (file)
index 0000000..317c881
--- /dev/null
@@ -0,0 +1,629 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * Common dtsi for Verdin AM62P SoM on Ivy carrier board
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/ivy-carrier-board
+ */
+
+#include <dt-bindings/mux/mux.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/net/ti-dp83867.h>
+
+/ {
+       aliases {
+               eeprom1 = &carrier_eeprom;
+       };
+
+       /* AIN1 Voltage w/o AIN1_MODE gpio control */
+       ain1_voltage_unmanaged: voltage-divider-ain1 {
+               compatible = "voltage-divider";
+               #io-channel-cells = <1>;
+               io-channels = <&ivy_adc1 0>;
+               full-ohms = <19>;
+               output-ohms = <1>;
+       };
+
+       /* AIN1 Current w/o AIN1_MODE gpio control */
+       ain1_current_unmanaged: current-sense-shunt-ain1 {
+               compatible = "current-sense-shunt";
+               #io-channel-cells = <0>;
+               io-channels = <&ivy_adc1 1>;
+               shunt-resistor-micro-ohms = <100000000>;
+       };
+
+       /* AIN1_MODE - SODIMM 216 */
+       ain1_mode_mux_ctrl: mux-controller-0 {
+               compatible = "gpio-mux";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_5>;
+               #mux-control-cells = <0>;
+               mux-gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>;
+       };
+
+       ain1-voltage {
+               compatible = "io-channel-mux";
+               channels = "ain1_voltage", "";
+               io-channels = <&ain1_voltage_unmanaged 0>;
+               io-channel-names = "parent";
+               mux-controls = <&ain1_mode_mux_ctrl>;
+               settle-time-us = <1000>;
+       };
+
+       ain1-current {
+               compatible = "io-channel-mux";
+               channels = "", "ain1_current";
+               io-channels = <&ain1_current_unmanaged>;
+               io-channel-names = "parent";
+               mux-controls = <&ain1_mode_mux_ctrl>;
+               settle-time-us = <1000>;
+       };
+
+       /* AIN2 Voltage w/o AIN2_MODE gpio control */
+       ain2_voltage_unmanaged: voltage-divider-ain2 {
+               compatible = "voltage-divider";
+               #io-channel-cells = <1>;
+               io-channels = <&ivy_adc2 0>;
+               full-ohms = <19>;
+               output-ohms = <1>;
+       };
+
+       /* AIN2 Current w/o AIN2_MODE gpio control */
+       ain2_current_unmanaged: current-sense-shunt-ain2 {
+               compatible = "current-sense-shunt";
+               #io-channel-cells = <0>;
+               io-channels = <&ivy_adc2 1>;
+               shunt-resistor-micro-ohms = <100000000>;
+       };
+
+       /* AIN2_MODE - SODIMM 218 */
+       ain2_mode_mux_ctrl: mux-controller-1 {
+               compatible = "gpio-mux";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_6>;
+               #mux-control-cells = <0>;
+               mux-gpios = <&main_gpio0 50 GPIO_ACTIVE_HIGH>;
+       };
+
+       ain2-voltage {
+               compatible = "io-channel-mux";
+               channels = "ain2_voltage", "";
+               io-channels = <&ain2_voltage_unmanaged 0>;
+               io-channel-names = "parent";
+               mux-controls = <&ain2_mode_mux_ctrl>;
+               settle-time-us = <1000>;
+       };
+
+       ain2-current {
+               compatible = "io-channel-mux";
+               channels = "", "ain2_current";
+               io-channels = <&ain2_current_unmanaged>;
+               io-channel-names = "parent";
+               mux-controls = <&ain2_mode_mux_ctrl>;
+               settle-time-us = <1000>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ivy_leds>;
+
+               /* D7 Blue - SODIMM 30 - LEDs.GPIO1 */
+               led-0 {
+                       color = <LED_COLOR_ID_BLUE>;
+                       default-state = "off";
+                       function = LED_FUNCTION_STATUS;
+                       function-enumerator = <1>;
+                       gpios = <&main_gpio1 11 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* D7 Green - SODIMM 32 - LEDs.GPIO2 */
+               led-1 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       function = LED_FUNCTION_STATUS;
+                       function-enumerator = <1>;
+                       gpios = <&main_gpio1 12 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* D7 Red - SODIMM 34 - LEDs.GPIO3 */
+               led-2 {
+                       color = <LED_COLOR_ID_RED>;
+                       default-state = "off";
+                       function = LED_FUNCTION_STATUS;
+                       function-enumerator = <1>;
+                       gpios = <&main_gpio1 10 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* D8 Blue - SODIMM 36 - LEDs.GPIO4 */
+               led-3 {
+                       color = <LED_COLOR_ID_BLUE>;
+                       default-state = "off";
+                       function = LED_FUNCTION_STATUS;
+                       function-enumerator = <2>;
+                       gpios = <&main_gpio1 9 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* D8 Green - SODIMM 54 - LEDs.GPIO5 */
+               led-4 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       default-state = "off";
+                       function = LED_FUNCTION_STATUS;
+                       function-enumerator = <2>;
+                       gpios = <&main_gpio0 11 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* D8 Red - SODIMM 44 - LEDs.GPIO6 */
+               led-5 {
+                       color = <LED_COLOR_ID_RED>;
+                       default-state = "off";
+                       function = LED_FUNCTION_STATUS;
+                       function-enumerator = <2>;
+                       gpios = <&main_gpio0 37 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* D9 Blue - SODIMM 46 - LEDs.GPIO7 */
+               led-6 {
+                       color = <LED_COLOR_ID_BLUE>;
+                       default-state = "off";
+                       function = LED_FUNCTION_STATUS;
+                       function-enumerator = <3>;
+                       gpios = <&main_gpio0 34 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* D9 Red - SODIMM 48 - LEDs.GPIO8 */
+               led-7 {
+                       color = <LED_COLOR_ID_RED>;
+                       default-state = "off";
+                       function = LED_FUNCTION_STATUS;
+                       function-enumerator = <3>;
+                       gpios = <&main_gpio0 33 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       reg_3v2_ain1: regulator-3v2-ain1 {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3200000>;
+               regulator-min-microvolt = <3200000>;
+               regulator-name = "+3V2_AIN1";
+       };
+
+       reg_3v2_ain2: regulator-3v2-ain2 {
+               compatible = "regulator-fixed";
+               regulator-max-microvolt = <3200000>;
+               regulator-min-microvolt = <3200000>;
+               regulator-name = "+3V2_AIN2";
+       };
+
+       /* Ivy Power Supply Input Voltage */
+       ivy-input-voltage {
+               compatible = "voltage-divider";
+               /* Verdin ADC_1 */
+               io-channels = <&som_adc 7>;
+               full-ohms = <204700>; /* 200K + 4.7K */
+               output-ohms = <4700>;
+       };
+
+       ivy-5v-voltage {
+               compatible = "voltage-divider";
+               /* Verdin ADC_2 */
+               io-channels = <&som_adc 6>;
+               full-ohms = <39000>; /* 27K + 12K */
+               output-ohms = <12000>;
+       };
+
+       ivy-3v3-voltage {
+               compatible = "voltage-divider";
+               /* Verdin ADC_3 */
+               io-channels = <&som_adc 5>;
+               full-ohms = <54000>; /* 27K + 27K */
+               output-ohms = <27000>;
+       };
+
+       ivy-1v8-voltage {
+               compatible = "voltage-divider";
+               /* Verdin ADC_4 */
+               io-channels = <&som_adc 4>;
+               full-ohms = <39000>; /* 12K + 27K */
+               output-ohms = <27000>;
+       };
+};
+
+&main_pmx0 {
+       pinctrl_ivy_leds: ivy-leds-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x019c, PIN_INPUT, 7) /* (E24)  MCASP0_AXR1.GPIO1_9    */ /* SODIMM 36 */
+                       AM62PX_IOPAD(0x01a0, PIN_INPUT, 7) /* (F23)  MCASP0_AXR0.GPIO1_10   */ /* SODIMM 34 */
+                       AM62PX_IOPAD(0x01a4, PIN_INPUT, 7) /* (F24)  MCASP0_ACLKX.GPIO1_11  */ /* SODIMM 30 */
+                       AM62PX_IOPAD(0x01a8, PIN_INPUT, 7) /* (F25)  MCASP0_AFSX.GPIO1_12   */ /* SODIMM 32 */
+                       AM62PX_IOPAD(0x0088, PIN_INPUT, 7) /* (R24)  GPMC0_OEn_REn.GPIO0_33 */ /* SODIMM 48 */
+                       AM62PX_IOPAD(0x0098, PIN_INPUT, 7) /* (AA24) GPMC0_WAIT0.GPIO0_37   */ /* SODIMM 44 */
+                       AM62PX_IOPAD(0x008c, PIN_INPUT, 7) /* (T25)  GPMC0_WEn.GPIO0_34     */ /* SODIMM 46 */
+                       AM62PX_IOPAD(0x002c, PIN_INPUT, 7) /* (M25)  OSPI0_CSn0.GPIO0_11    */ /* SODIMM 54 */
+               >;
+       };
+};
+
+/* Verdin ETHs */
+&cpsw3g {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii1>, <&pinctrl_rgmii2>;
+       status = "okay";
+};
+
+/* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
+&cpsw3g_mdio {
+       status = "okay";
+
+       carrier_eth_phy: ethernet-phy@2 {
+               reg = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_eth2_rgmii_int>;
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <42 IRQ_TYPE_EDGE_FALLING>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+       };
+};
+
+/* Verdin ETH_1 (On-module PHY) */
+&cpsw_port1 {
+       status = "okay";
+};
+
+/* Verdin ETH_2_RGMII */
+&cpsw_port2 {
+       phy-handle = <&carrier_eth_phy>;
+       phy-mode = "rgmii-rxid";
+       status = "okay";
+};
+
+&main_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie_1_reset>,
+                   <&pinctrl_qspi1_cs2_gpio>,
+                   <&pinctrl_qspi1_dqs_gpio>,
+                   <&pinctrl_qspi1_io0_gpio>,
+                   <&pinctrl_qspi1_io1_gpio>,
+                   <&pinctrl_qspi1_io2_gpio>,
+                   <&pinctrl_qspi1_io3_gpio>;
+       gpio-line-names =
+               "", /* 0 */
+               "",
+               "REL4",   /* SODIMM 66 */
+               "DIGI_1", /* SODIMM 56 */
+               "DIGI_2", /* SODIMM 58 */
+               "REL1",   /* SODIMM 60 */
+               "REL2",   /* SODIMM 62 */
+               "",
+               "",
+               "",
+               "", /* 10 */
+               "",
+               "REL3", /* SODIMM 64 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 20 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 30 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 40 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 50 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 60 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 70 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 80 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 90 */
+               "";
+};
+
+&main_gpio1 {
+       gpio-line-names =
+               "", /* 0 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 10 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 20 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 30 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 40 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 50 */
+               "";
+};
+
+/* Verdin I2C_1 */
+&main_i2c0 {
+       status = "okay";
+
+       temperature-sensor@4f {
+               compatible = "ti,tmp1075";
+               reg = <0x4f>;
+       };
+
+       carrier_eeprom: eeprom@57 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x57>;
+               pagesize = <16>;
+       };
+};
+
+/* Verdin I2C_4_CSI */
+&main_i2c3 {
+       status = "okay";
+
+       ivy_adc1: adc@40 {
+               compatible = "ti,ads1119";
+               reg = <0x40>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_7>;
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <51 IRQ_TYPE_EDGE_FALLING>;
+               avdd-supply = <&reg_3v2_ain1>;
+               dvdd-supply = <&reg_3v2_ain1>;
+               vref-supply = <&reg_3v2_ain1>;
+               #address-cells = <1>;
+               #io-channel-cells = <1>;
+               #size-cells = <0>;
+
+               /* AIN1 0-33V Voltage Input */
+               channel@0 {
+                       reg = <0>;
+                       diff-channels = <0 1>;
+               };
+
+               /* AIN1 0-20mA Current Input */
+               channel@1 {
+                       reg = <1>;
+                       diff-channels = <2 3>;
+               };
+       };
+
+       ivy_adc2: adc@41 {
+               compatible = "ti,ads1119";
+               reg = <0x41>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_gpio_8>;
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <52 IRQ_TYPE_EDGE_FALLING>;
+               avdd-supply = <&reg_3v2_ain2>;
+               dvdd-supply = <&reg_3v2_ain2>;
+               vref-supply = <&reg_3v2_ain2>;
+               #address-cells = <1>;
+               #io-channel-cells = <1>;
+               #size-cells = <0>;
+
+               /* AIN2 0-33V Voltage Input */
+               channel@0 {
+                       reg = <0>;
+                       diff-channels = <0 1>;
+               };
+
+               /* AIN2 0-20mA Current Input */
+               channel@1 {
+                       reg = <1>;
+                       diff-channels = <2 3>;
+               };
+       };
+};
+
+/* Verdin CAN_1 */
+&main_mcan0 {
+       status = "okay";
+};
+
+/* Verdin SPI_1 */
+&main_spi1 {
+       pinctrl-0 = <&pinctrl_main_spi1>,
+                   <&pinctrl_main_spi1_cs0>,
+                   <&pinctrl_gpio_1>,
+                   <&pinctrl_gpio_4>;
+       cs-gpios = <0>,
+                  <&mcu_gpio0 1 GPIO_ACTIVE_LOW>,
+                  <&mcu_gpio0 4 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       tpm@1 {
+               compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+               reg = <1>;
+               spi-max-frequency = <18500000>;
+       };
+
+       fram@2 {
+               compatible = "fujitsu,mb85rs256", "atmel,at25";
+               reg = <2>;
+               address-width = <16>;
+               size = <32768>;
+               spi-max-frequency = <33000000>;
+               pagesize = <1>;
+       };
+};
+
+/* Verdin UART_3, used as the Linux console */
+&main_uart0 {
+       status = "okay";
+};
+
+/* Verdin UART_1 */
+&main_uart1 {
+       status = "okay";
+};
+
+&mcu_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_2>,
+                   <&pinctrl_gpio_3>;
+       gpio-line-names =
+               "",
+               "",
+               "GPIO2", /* Verdin GPIO_2 - SODIMM 208 */
+               "GPIO3", /* Verdin GPIO_3 - SODIMM 210 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 10 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 20 */
+               "",
+               "",
+               "";
+};
+
+/* Verdin CAN_2 */
+&mcu_mcan0 {
+       status = "okay";
+};
+
+/* Verdin SD_1 */
+&sdhci1 {
+       status = "okay";
+};
+
+/* Verdin USB_1 */
+&usbss0 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+/* Verdin USB_2 */
+&usbss1 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+/* Verdin PCIE_1_RESET# */
+&verdin_pcie_1_reset_hog {
+       status = "okay";
+};
+
+/* Verdin UART_2 */
+&wkup_uart0 {
+       rs485-rts-active-low;
+       rs485-rx-during-tx;
+       linux,rs485-enabled-at-boot-time;
+       status = "okay";
+};
diff --git a/src/arm64/ti/k3-am62p-verdin-mallow.dtsi b/src/arm64/ti/k3-am62p-verdin-mallow.dtsi
new file mode 100644 (file)
index 0000000..37c0b9d
--- /dev/null
@@ -0,0 +1,213 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * Common dtsi for Verdin AM62P SoM on Mallow carrier board
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/mallow-carrier-board
+ */
+
+#include <dt-bindings/leds/common.h>
+
+/ {
+       aliases {
+               eeprom1 = &carrier_eeprom;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_qspi1_clk_gpio>,
+                           <&pinctrl_qspi1_cs_gpio>,
+                           <&pinctrl_qspi1_io0_gpio>,
+                           <&pinctrl_qspi1_io1_gpio>;
+
+               /* SODIMM 52 - USER_LED_1_RED */
+               led-0 {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <1>;
+                       gpios = <&main_gpio0 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* SODIMM 54 - USER_LED_1_GREEN */
+               led-1 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <1>;
+                       gpios = <&main_gpio0 11 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* SODIMM 56 - USER_LED_2_RED */
+               led-2 {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <2>;
+                       gpios = <&main_gpio0 3 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* SODIMM 58 - USER_LED_2_GREEN */
+               led-3 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <2>;
+                       gpios = <&main_gpio0 4 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+/* Verdin ETHs */
+&cpsw3g {
+       status = "okay";
+};
+
+/* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
+&cpsw3g_mdio {
+       status = "okay";
+};
+
+/* Verdin ETH_1 (On-module PHY) */
+&cpsw_port1 {
+       status = "okay";
+};
+
+/* Verdin PWM_3_DSI */
+&epwm0 {
+       status = "okay";
+};
+
+/* Verdin PWM_1, PWM_2 */
+&epwm2 {
+       status = "okay";
+};
+
+&main_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie_1_reset>,
+                   <&pinctrl_gpio_5>,
+                   <&pinctrl_gpio_6>,
+                   <&pinctrl_gpio_7>,
+                   <&pinctrl_gpio_8>;
+};
+
+/* Verdin I2C_1 */
+&main_i2c0 {
+       status = "okay";
+
+       temperature-sensor@4f {
+               compatible = "ti,tmp1075";
+               reg = <0x4f>;
+       };
+
+       carrier_eeprom: eeprom@57 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x57>;
+               pagesize = <16>;
+       };
+};
+
+/* Verdin I2C_2_DSI */
+&main_i2c1 {
+       status = "okay";
+};
+
+/* Verdin I2C_4_CSI */
+&main_i2c3 {
+       status = "okay";
+};
+
+/* Verdin CAN_1 */
+&main_mcan0 {
+       status = "okay";
+};
+
+/* Verdin SPI_1 */
+&main_spi1 {
+       pinctrl-0 = <&pinctrl_main_spi1>,
+                   <&pinctrl_main_spi1_cs0>,
+                   <&pinctrl_qspi1_cs2_gpio>;
+       cs-gpios = <0>, <&main_gpio0 12 GPIO_ACTIVE_LOW>;
+       status = "okay";
+
+       tpm@1 {
+               compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+               reg = <1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_qspi1_dqs_gpio>;
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
+               spi-max-frequency = <18500000>;
+       };
+};
+
+/* Verdin UART_3, used as the Linux console */
+&main_uart0 {
+       status = "okay";
+};
+
+/* Verdin UART_1 */
+&main_uart1 {
+       status = "okay";
+};
+
+&mcu_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_1>,
+                   <&pinctrl_gpio_2>,
+                   <&pinctrl_gpio_3>,
+                   <&pinctrl_gpio_4>;
+};
+
+/* Verdin I2C_3_HDMI */
+&mcu_i2c0 {
+       status = "okay";
+};
+
+/* Verdin CAN_2 */
+&mcu_mcan0 {
+       status = "okay";
+};
+
+/* Verdin UART_4 */
+&mcu_uart0 {
+       status = "okay";
+};
+
+/* Verdin SD_1 */
+&sdhci1 {
+       status = "okay";
+};
+
+/* Verdin USB_1 */
+&usbss0 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+/* Verdin USB_2 */
+&usbss1 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+/* Verdin CTRL_WAKE1_MICO# */
+&verdin_gpio_keys {
+       status = "okay";
+};
+
+/* Verdin PCIE_1_RESET# */
+&verdin_pcie_1_reset_hog {
+       status = "okay";
+};
+
+/* Verdin UART_2 */
+&wkup_uart0 {
+       status = "okay";
+};
diff --git a/src/arm64/ti/k3-am62p-verdin-nonwifi.dtsi b/src/arm64/ti/k3-am62p-verdin-nonwifi.dtsi
new file mode 100644 (file)
index 0000000..8e7019f
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * Common dtsi for Verdin AM62P SoM non-WB variant
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ */
+
+/* SDIO on MSP 30, 31, 32, 33, 34, 35 */
+&sdhci2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci2>;
+       status = "disabled";
+};
diff --git a/src/arm64/ti/k3-am62p-verdin-wifi.dtsi b/src/arm64/ti/k3-am62p-verdin-wifi.dtsi
new file mode 100644 (file)
index 0000000..04d3124
--- /dev/null
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * Common dtsi for Verdin AM62P SoM WB variant
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ */
+
+/* On-module Bluetooth */
+&main_uart6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart6>;
+       uart-has-rtscts;
+       status = "okay";
+
+       bluetooth {
+               compatible = "nxp,88w8987-bt";
+               fw-init-baudrate = <3000000>;
+       };
+};
+
+/* On-module Wi-Fi */
+&sdhci2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci2>;
+       keep-power-in-suspend;
+       non-removable;
+       ti,fails-without-test-cd;
+       status = "okay";
+};
diff --git a/src/arm64/ti/k3-am62p-verdin-yavia.dtsi b/src/arm64/ti/k3-am62p-verdin-yavia.dtsi
new file mode 100644 (file)
index 0000000..b7423a7
--- /dev/null
@@ -0,0 +1,219 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * Common dtsi for Verdin AM62P SoM on Yavia carrier board
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/yavia
+ */
+
+#include <dt-bindings/leds/common.h>
+
+/ {
+       aliases {
+               eeprom1 = &carrier_eeprom;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_qspi1_clk_gpio>,
+                           <&pinctrl_qspi1_cs_gpio>,
+                           <&pinctrl_qspi1_io0_gpio>,
+                           <&pinctrl_qspi1_io1_gpio>,
+                           <&pinctrl_qspi1_io2_gpio>,
+                           <&pinctrl_qspi1_io3_gpio>;
+
+               /* SODIMM 52 - LD1_RED */
+               led-0 {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <1>;
+                       gpios = <&main_gpio0 0 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* SODIMM 54 - LD1_GREEN */
+               led-1 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <1>;
+                       gpios = <&main_gpio0 11 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* SODIMM 56 - LD1_BLUE */
+               led-2 {
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <1>;
+                       gpios = <&main_gpio0 3 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* SODIMM 58 - LD2_RED */
+               led-3 {
+                       color = <LED_COLOR_ID_RED>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <2>;
+                       gpios = <&main_gpio0 4 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* SODIMM 60 - LD2_GREEN */
+               led-4 {
+                       color = <LED_COLOR_ID_GREEN>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <2>;
+                       gpios = <&main_gpio0 5 GPIO_ACTIVE_HIGH>;
+               };
+
+               /* SODIMM 62 - LD2_BLUE */
+               led-5 {
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_DEBUG;
+                       function-enumerator = <2>;
+                       gpios = <&main_gpio0 6 GPIO_ACTIVE_HIGH>;
+               };
+       };
+};
+
+/* Verdin ETHs */
+&cpsw3g {
+       status = "okay";
+};
+
+/* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
+&cpsw3g_mdio {
+       status = "okay";
+};
+
+/* Verdin ETH_1 (On-module PHY) */
+&cpsw_port1 {
+       status = "okay";
+};
+
+/* Verdin PWM_3_DSI */
+&epwm0 {
+       status = "okay";
+};
+
+/* Verdin PWM_1, PWM_2 */
+&epwm2 {
+       status = "okay";
+};
+
+&main_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pcie_1_reset>,
+                   <&pinctrl_qspi1_cs2_gpio>,
+                   <&pinctrl_qspi1_dqs_gpio>,
+                   <&pinctrl_gpio_5>,
+                   <&pinctrl_gpio_6>,
+                   <&pinctrl_gpio_7>,
+                   <&pinctrl_gpio_8>;
+};
+
+/* Verdin I2C_1 */
+&main_i2c0 {
+       status = "okay";
+
+       temperature-sensor@4f {
+               compatible = "ti,tmp75c";
+               reg = <0x4f>;
+       };
+
+       carrier_eeprom: eeprom@57 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x57>;
+               pagesize = <16>;
+       };
+};
+
+/* Verdin I2C_2_DSI */
+&main_i2c1 {
+       status = "okay";
+};
+
+/* Verdin I2C_4_CSI */
+&main_i2c3 {
+       status = "okay";
+};
+
+/* Verdin CAN_1 */
+&main_mcan0 {
+       status = "okay";
+};
+
+/* Verdin SPI_1 */
+&main_spi1 {
+       status = "okay";
+};
+
+/* Verdin UART_3, used as the Linux console */
+&main_uart0 {
+       status = "okay";
+};
+
+/* Verdin UART_1 */
+&main_uart1 {
+       status = "okay";
+};
+
+&mcu_gpio0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_gpio_1>,
+                   <&pinctrl_gpio_2>,
+                   <&pinctrl_gpio_3>,
+                   <&pinctrl_gpio_4>;
+};
+
+/* Verdin I2C_3_HDMI */
+&mcu_i2c0 {
+       status = "okay";
+};
+
+/* Verdin CAN_2 */
+&mcu_mcan0 {
+       status = "okay";
+};
+
+/* Verdin UART_4 */
+&mcu_uart0 {
+       status = "okay";
+};
+
+/* Verdin SD_1 */
+&sdhci1 {
+       status = "okay";
+};
+
+/* Verdin USB_1 */
+&usbss0 {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+};
+
+/* Verdin USB_2 */
+&usbss1 {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+};
+
+/* Verdin CTRL_WAKE1_MICO# */
+&verdin_gpio_keys {
+       status = "okay";
+};
+
+/* Verdin PCIE_1_RESET# */
+&verdin_pcie_1_reset_hog {
+       status = "okay";
+};
+
+/* Verdin UART_2 */
+&wkup_uart0 {
+       status = "okay";
+};
diff --git a/src/arm64/ti/k3-am62p-verdin.dtsi b/src/arm64/ti/k3-am62p-verdin.dtsi
new file mode 100644 (file)
index 0000000..226398c
--- /dev/null
@@ -0,0 +1,1404 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * Common dtsi for Verdin AM62P SoM
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/net/ti-dp83867.h>
+
+/ {
+       aliases {
+               can0 = &main_mcan0;
+               can1 = &mcu_mcan0;
+               eeprom0 = &som_eeprom;
+               ethernet0 = &cpsw_port1;
+               ethernet1 = &cpsw_port2;
+               i2c0 = &wkup_i2c0;
+               i2c1 = &main_i2c0;
+               i2c2 = &main_i2c1;
+               i2c3 = &mcu_i2c0;
+               i2c4 = &main_i2c3;
+               mmc0 = &sdhci0;
+               mmc1 = &sdhci1;
+               mmc2 = &sdhci2;
+               rtc0 = &som_rtc_i2c;
+               rtc1 = &wkup_rtc0;
+               serial0 = &main_uart1;
+               serial1 = &wkup_uart0;
+               serial2 = &main_uart0;
+               serial3 = &mcu_uart0;
+               serial4 = &main_uart6;
+               usb0 = &usb0;
+               usb1 = &usb1;
+       };
+
+       chosen {
+               stdout-path = "serial2:115200n8";
+       };
+
+       connector {
+               compatible = "gpio-usb-b-connector", "usb-b-connector";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usb0_id>;
+               id-gpios = <&main_gpio0 31 GPIO_ACTIVE_HIGH>;
+               label = "USB_1";
+               self-powered;
+               vbus-supply = <&reg_usb0_vbus>;
+
+               port {
+                       usb_dr_connector: endpoint {
+                               remote-endpoint = <&usb0_ep>;
+                       };
+               };
+       };
+
+       verdin_gpio_keys: gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ctrl_wake1_mico>;
+               status = "disabled";
+
+               key-wakeup {
+                       debounce-interval = <10>;
+                       /* Verdin CTRL_WAKE1_MICO# (SODIMM 252) */
+                       gpios = <&main_gpio0 1 GPIO_ACTIVE_LOW>;
+                       label = "Wake-Up";
+                       linux,code = <KEY_WAKEUP>;
+                       wakeup-source;
+               };
+       };
+
+       memory@80000000 {
+               /* 2G RAM */
+               reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
+               device_type = "memory";
+       };
+
+       opp-table {
+               /* Add 1.4GHz OPP. Requires VDD_CORE to be at 0.85V */
+               opp-1400000000 {
+                       opp-hz = /bits/ 64 <1400000000>;
+                       opp-supported-hw = <0x01 0x0004>;
+                       clock-latency-ns = <6000000>;
+               };
+       };
+
+       reg_force_sleep_moci: regulator-force-sleep-moci {
+               compatible = "regulator-fixed";
+               /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */
+               gpios = <&som_gpio_expander 0 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-name = "CTRL_SLEEP_MOCI#";
+       };
+
+       /* Verdin SD_1 Power Supply */
+       reg_sd1_vmmc: regulator-sdhci1-vmmc {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_sd1_pwr_en>;
+               /* Verdin SD_1_PWR_EN (SODIMM 76) */
+               gpios = <&main_gpio0 47 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               off-on-delay-us = <100000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "+V3.3_SD";
+               startup-delay-us = <2000>;
+       };
+
+       reg_sd1_vqmmc: regulator-sdhci1-vqmmc {
+               compatible = "regulator-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_sd_vsel>;
+               /* PMIC_VSEL_SD */
+               gpios = <&main_gpio0 21 GPIO_ACTIVE_HIGH>;
+               regulator-name = "LDO1-VSEL-SD (PMIC)";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               states = <1800000 0x0>,
+                        <3300000 0x1>;
+               vin-supply = <&reg_sd_3v3_1v8>;
+       };
+
+       reg_usb0_vbus: regulator-usb0-vbus {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_usb0_en>;
+               /* Verdin USB_1_EN (SODIMM 155) */
+               gpios = <&main_gpio1 50 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               regulator-max-microvolt = <5000000>;
+               regulator-min-microvolt = <5000000>;
+               regulator-name = "USB_1_EN";
+       };
+
+       /* Module Power Supply */
+       reg_vsodimm: regulator-vsodimm {
+               compatible = "regulator-fixed";
+               regulator-name = "+V_SODIMM";
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               secure_tfa_ddr: tfa@9e780000 {
+                       reg = <0x00 0x9e780000 0x00 0x80000>;
+                       no-map;
+               };
+
+               secure_ddr: optee@9e800000 {
+                       reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c900000 0x00 0x01e00000>;
+                       no-map;
+               };
+       };
+};
+
+&main_pmx0 {
+       /* Verdin PWM_3_DSI */
+       pinctrl_epwm0_b: main-epwm0b-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01b8, PIN_OUTPUT, 2) /* (E20) SPI0_CS1.EHRPWM0_B */ /* SODIMM 19 */
+               >;
+       };
+
+       /* Verdin PWM_2 */
+       pinctrl_epwm2_a: main-epwm2a-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0124, PIN_OUTPUT, 4) /* (J25) MMC2_SDCD.EHRPWM2_A */ /* SODIMM 16 */
+               >;
+       };
+
+       /* Verdin PWM_1 */
+       pinctrl_epwm2_b: main-epwm2b-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0128, PIN_OUTPUT, 4) /* (K25) MMC2_SDWP.EHRPWM2_B */ /* SODIMM 15 */
+               >;
+       };
+
+       /* Verdin QSPI_1_CLK as GPIO (conflict with Verdin QSPI_1 interface) */
+       pinctrl_qspi1_clk_gpio: main-gpio0-0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0000, PIN_INPUT, 7) /* (P23) OSPI0_CLK.GPIO0_0 */ /* SODIMM 52 */
+               >;
+       };
+
+       /* Verdin CTRL_WAKE1_MICO# */
+       pinctrl_ctrl_wake1_mico: main-gpio0-1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0004, PIN_INPUT, 7) /* (N23) OSPI0_LBCLKO.GPIO0_1 */ /* SODIMM 252 */
+               >;
+       };
+
+       /* Verdin QSPI_1_DQS as GPIO (conflict with Verdin QSPI_1 interface) */
+       pinctrl_qspi1_dqs_gpio: main-gpio0-2-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0008, PIN_INPUT, 7) /* (P22) OSPI0_DQS.GPIO0_2 */ /* SODIMM 66 */
+               >;
+       };
+
+       /* Verdin QSPI_1_IO0 as GPIO (conflict with Verdin QSPI_1 interface) */
+       pinctrl_qspi1_io0_gpio: main-gpio0-3-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x000c, PIN_INPUT, 7) /* (L25) OSPI0_D0.GPIO0_3 */ /* SODIMM 56 */
+               >;
+       };
+
+       /* Verdin QSPI_1_IO1 as GPIO (conflict with Verdin QSPI_1 interface) */
+       pinctrl_qspi1_io1_gpio: main-gpio0-4-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0010, PIN_INPUT, 7) /* (N24) OSPI0_D1.GPIO0_4 */ /* SODIMM 58 */
+               >;
+       };
+
+       /* Verdin QSPI_1_IO2 as GPIO (conflict with Verdin QSPI_1 interface) */
+       pinctrl_qspi1_io2_gpio: main-gpio0-5-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0014, PIN_INPUT, 7) /* (N25) OSPI0_D2.GPIO0_5 */ /* SODIMM 60 */
+               >;
+       };
+
+       /* Verdin QSPI_1_IO3 as GPIO (conflict with Verdin QSPI_1 interface) */
+       pinctrl_qspi1_io3_gpio: main-gpio0-6-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0018, PIN_INPUT, 7) /* (M24) OSPI0_D3.GPIO0_6 */ /* SODIMM 62 */
+               >;
+       };
+
+       /* Verdin QSPI_1_CS# as GPIO (conflict with Verdin QSPI_1 interface) */
+       pinctrl_qspi1_cs_gpio: main-gpio0-11-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x002c, PIN_INPUT, 7) /* (M25) OSPI0_CSn0.GPIO0_11 */ /* SODIMM 54 */
+               >;
+       };
+
+       /* Verdin QSPI_1_CS2# as GPIO (conflict with Verdin QSPI_1 interface) */
+       pinctrl_qspi1_cs2_gpio: main-gpio0-12-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0030, PIN_INPUT, 7) /* (L24) OSPI0_CSn1.GPIO0_12 */ /* SODIMM 64 */
+               >;
+       };
+
+       /* Verdin MSP_37 as GPIO */
+       pinctrl_msp37_gpio: main-gpio0-13-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0034, PIN_INPUT, 7) /* (L22) OSPI0_CSn2.GPIO0_13 */ /* SODIMM 174 - WiFi_W_WKUP_HOST# */
+               >;
+       };
+
+       /* Verdin PCIE_1_RESET# */
+       pinctrl_pcie_1_reset: main-gpio0-14-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0038, PIN_INPUT, 7) /* (L23) OSPI0_CSn3.GPIO0_14 */ /* SODIMM 244 */
+               >;
+       };
+
+       pinctrl_sd_vsel: main-gpio0-21-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0054, PIN_INPUT, 7) /* (V24) GPMC0_AD6.GPIO0_21 */ /* PMIC_SD_VSEL */
+               >;
+       };
+
+       pinctrl_tpm_extint: main-gpio0-25-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0064, PIN_INPUT, 7) /* (AA25) GPMC0_AD10.GPIO0_25 */ /* TPM_EXTINT# */
+               >;
+       };
+
+       pinctrl_wifi_wkup_bt: main-gpio0-29-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0074, PIN_INPUT, 7) /* (AB24) GPMC0_AD14.GPIO0_29 */ /* WiFi_WKUP_BT# */
+               >;
+       };
+
+       pinctrl_wifi_wkup_wlan: main-gpio0-30-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0078, PIN_INPUT, 7) /* (AC24) GPMC0_AD15.GPIO0_30 */ /* WiFi_WKUP_WLAN# */
+               >;
+       };
+
+       /* Verdin USB_1_ID */
+       pinctrl_usb0_id: main-gpio0-31-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x007c, PIN_INPUT, 7) /* (Y25) GPMC0_CLK.GPIO0_31 */ /* SODIMM 161 */
+               >;
+       };
+
+       /* Verdin USB_1_OC# */
+       pinctrl_usb1_oc: main-gpio0-32-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0084, PIN_INPUT, 7) /* (R25) GPMC0_ADVn_ALE.GPIO0_32 */ /* SODIMM 157 */
+               >;
+       };
+
+       /* Verdin I2S_2_D_IN as GPIO (conflict with Verdin I2S_2 interface) */
+       pinctrl_i2s_2_d_in_gpio: main-gpio0-33-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0088, PIN_INPUT, 7) /* (R24) GPMC0_OEn_REn.GPIO0_33 */ /* SODIMM 48 */
+               >;
+       };
+
+       /* Verdin I2S_2_D_OUT as GPIO (conflict with Verdin I2S_2 interface) */
+       pinctrl_i2s_2_d_out_gpio: main-gpio0-34-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x008c, PIN_INPUT, 7) /* (T25) GPMC0_WEn.GPIO0_34 */ /* SODIMM 46 */
+               >;
+       };
+
+       /* Verdin I2S_2_BCLK as GPIO (conflict with Verdin I2S_2 interface) */
+       pinctrl_i2s_2_bclk_gpio: main-gpio0-35-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0090, PIN_INPUT, 7) /* (U24) GPMC0_BE0n_CLE.GPIO0_35 */ /* SODIMM 42 */
+               >;
+       };
+
+       pinctrl_eth_int: main-gpio0-36-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0094, PIN_INPUT, 7) /* (T24) GPMC0_BE1n.GPIO0_36 */ /* ETH_INT# */
+               >;
+       };
+
+       /* Verdin I2S_2_SYNC as GPIO (conflict with Verdin I2S_2 interface) */
+       pinctrl_i2s_2_sync_gpio: main-gpio0-37-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0098, PIN_INPUT, 7) /* (AA24) GPMC0_WAIT0.GPIO0_37 */ /* SODIMM 44 */
+               >;
+       };
+
+       /* Verdin DSI_1_INT# */
+       pinctrl_dsi1_int: main-gpio0-38-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x009c, PIN_INPUT, 7) /* (AD24) GPMC0_WAIT1.GPIO0_38 */ /* SODIMM 17 */
+               >;
+       };
+
+       /* Verdin DSI_1_BLK_EN# */
+       pinctrl_dsi1_bkl_en: main-gpio0-39-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00a0, PIN_INPUT, 7) /* (P24) GPMC0_WPn.GPIO0_39 */ /* SODIMM 21 */
+               >;
+       };
+
+       /* Verdin USB_2_OC# */
+       pinctrl_usb2_oc: main-gpio0-41-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00a8, PIN_INPUT, 7) /* (T23) GPMC0_CSn0.GPIO0_41 */ /* SODIMM 187 */
+               >;
+       };
+
+       /* Verdin ETH_2_RGMII_INT# */
+       pinctrl_eth2_rgmii_int: main-gpio0-42-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00ac, PIN_INPUT, 7) /* (U23) GPMC0_CSn1.GPIO0_42 */ /* SODIMM 189 */
+               >;
+       };
+
+       /* Verdin SD_1_PWR_EN */
+       pinctrl_sd1_pwr_en: main-gpio0-47-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00c0, PIN_INPUT, 7) /* (AA23) VOUT0_DATA2.GPIO0_47 */ /* SODIMM 76 */
+               >;
+       };
+
+       /* Verdin GPIO_5 */
+       pinctrl_gpio_5: main-gpio0-49-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00c8, PIN_INPUT, 7) /* (AB23) VOUT0_DATA4.GPIO0_49 */ /* SODIMM 216 */
+               >;
+       };
+
+       /* Verdin GPIO_6 */
+       pinctrl_gpio_6: main-gpio0-50-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00cc, PIN_INPUT, 7) /* (AD23) VOUT0_DATA5.GPIO0_50 */ /* SODIMM 218 */
+               >;
+       };
+
+       /* Verdin GPIO_7 */
+       pinctrl_gpio_7: main-gpio0-51-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00d0, PIN_INPUT, 7) /* (AC23) VOUT0_DATA6.GPIO0_51 */ /* SODIMM 220 */
+               >;
+       };
+
+       /* Verdin GPIO_8 */
+       pinctrl_gpio_8: main-gpio0-52-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00d4, PIN_INPUT, 7) /* (AE23) VOUT0_DATA7.GPIO0_52 */ /* SODIMM 222 */
+               >;
+       };
+
+       /* Verdin MSP_36 as GPIO */
+       pinctrl_msp36_gpio: main-gpio0-57-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00e8, PIN_INPUT, 7) /* (AD21) VOUT0_DATA12.GPIO0_57 */ /* SODIMM 172 - WiFi_BT_WKUP_HOST#  */
+               >;
+       };
+
+       pinctrl_wifi_sd_int: main-gpio0-59-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00f0, PIN_INPUT, 7) /* (AA20) VOUT0_DATA14.GPIO0_59 */ /* WIFI_SD_INT */
+               >;
+       };
+
+       pinctrl_wifi_spi_cs: main-gpio0-60-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00f4, PIN_INPUT, 7) /* (Y20) VOUT0_DATA15.GPIO0_60 */ /* WIFI_SPI_CS# */
+               >;
+       };
+
+       /* Verdin PWM_3_DSI as GPIO */
+       pinctrl_pwm3_dsi_gpio: main-gpio1-16-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01b8, PIN_OUTPUT, 7) /* (E20) SPI0_CS1.GPIO1_16 */ /* SODIMM 19 */
+               >;
+       };
+
+       /* Verdin SD_1_CD# */
+       pinctrl_sd1_cd: main-gpio1-48-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0240, PIN_INPUT, 7) /* (D23) MMC1_SDCD.GPIO1_48 */ /* SODIMM 84 */
+               >;
+       };
+
+       /* Verdin MSP_29 as GPIO */
+       pinctl_msp29_gpio: main-gpio1-49-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0244, PIN_INPUT, 7) /* (D24) MMC1_SDWP.GPIO1_49 */ /* SODIMM 154 */
+               >;
+       };
+
+       /* Verdin USB_1_EN */
+       pinctrl_usb0_en: main-gpio1-50-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0254, PIN_INPUT, 7) /* (G22) USB0_DRVVBUS.GPIO1_50 */ /* SODIMM 155 */
+               >;
+       };
+
+       /* Verdin I2C_1 */
+       pinctrl_main_i2c0: main-i2c0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01e0, PIN_INPUT_PULLUP, 0) /* (B25) I2C0_SCL */ /* SODIMM 14 */
+                       AM62PX_IOPAD(0x01e4, PIN_INPUT_PULLUP, 0) /* (A24) I2C0_SDA */ /* SODIMM 12 */
+               >;
+       };
+
+       /* Verdin I2C_2_DSI */
+       pinctrl_main_i2c1: main-i2c1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01e8, PIN_INPUT_PULLUP, 0) /* (C24) I2C1_SCL */ /* SODIMM 55 */
+                       AM62PX_IOPAD(0x01ec, PIN_INPUT_PULLUP, 0) /* (B24) I2C1_SDA */ /* SODIMM 53 */
+               >;
+       };
+
+       /* Verdin I2C_4_CSI */
+       pinctrl_main_i2c3: main-i2c3-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01d0, PIN_INPUT_PULLUP, 2) /* (A23) UART0_CTSn.I2C3_SCL */ /* SODIMM 95 */
+                       AM62PX_IOPAD(0x01d4, PIN_INPUT_PULLUP, 2) /* (C22) UART0_RTSn.I2C3_SDA */ /* SODIMM 93 */
+               >;
+       };
+
+       /* Verdin CAN_1 */
+       pinctrl_main_mcan0: main-mcan0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01dc, PIN_INPUT, 0)  /* (F20) MCAN0_RX */ /* SODIMM 22 */
+                       AM62PX_IOPAD(0x01d8, PIN_OUTPUT, 0) /* (B23) MCAN0_TX */ /* SODIMM 20 */
+               >;
+       };
+
+       /* Verdin MSP_3/MSP_8 as CAN */
+       pinctrl_main_mcan1: main-mcan1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00b4, PIN_INPUT, 5)  /* (U25) GPMC0_CSn3.MCAN1_RX */ /* SODIMM 92  */
+                       AM62PX_IOPAD(0x00b0, PIN_OUTPUT, 5) /* (T22) GPMC0_CSn2.MCAN1_TX */ /* SODIMM 104 */
+               >;
+       };
+
+       /* Verdin SD_1 */
+       pinctrl_sdhci1: main-mmc1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x023c, PIN_INPUT,  0) /* (H20) MMC1_CMD  */ /* SODIMM 74 */
+                       AM62PX_IOPAD(0x0234, PIN_OUTPUT, 0) /* (J24) MMC1_CLK  */ /* SODIMM 78 */
+                       AM62PX_IOPAD(0x0230, PIN_INPUT,  0) /* (H21) MMC1_DAT0 */ /* SODIMM 80 */
+                       AM62PX_IOPAD(0x022c, PIN_INPUT,  0) /* (H23) MMC1_DAT1 */ /* SODIMM 82 */
+                       AM62PX_IOPAD(0x0228, PIN_INPUT,  0) /* (H22) MMC1_DAT2 */ /* SODIMM 70 */
+                       AM62PX_IOPAD(0x0224, PIN_INPUT,  0) /* (H25) MMC1_DAT3 */ /* SODIMM 72 */
+               >;
+       };
+
+       /* On-module Wi-Fi on WB SKUs, module-specific SDIO otherwise */
+       pinctrl_sdhci2: main-mmc2-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0120, PIN_INPUT,  0) /* (K24) MMC2_CMD  */ /* SODIMM 160, WiFi_SDIO_CMD   */
+                       AM62PX_IOPAD(0x0118, PIN_OUTPUT, 0) /* (K21) MMC2_CLK  */ /* SODIMM 156, WiFi_SDIO_CLK   */
+                       AM62PX_IOPAD(0x011C, PIN_INPUT,  0) /* () MMC2_CLKLB   */
+                       AM62PX_IOPAD(0x0114, PIN_INPUT,  0) /* (K23) MMC2_DAT0 */ /* SODIMM 162, WiFi_SDIO_DATA0 */
+                       AM62PX_IOPAD(0x0110, PIN_INPUT,  0) /* (K22) MMC2_DAT1 */ /* SODIMM 164, WiFi_SDIO_DATA1 */
+                       AM62PX_IOPAD(0x010c, PIN_INPUT,  0) /* (L20) MMC2_DAT2 */ /* SODIMM 166, WiFi_SDIO_DATA2 */
+                       AM62PX_IOPAD(0x0108, PIN_INPUT,  0) /* (L21) MMC2_DAT3 */ /* SODIMM 168, WiFi_SDIO_DATA3 */
+               >;
+       };
+
+       /* Verdin QSPI_1 */
+       pinctrl_ospi0: main-ospi0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0000, PIN_OUTPUT, 0) /* (P23) OSPI0_CLK  */ /* SODIMM 52 */
+                       AM62PX_IOPAD(0x002c, PIN_OUTPUT, 0) /* (M25) OSPI0_CSn0 */ /* SODIMM 54 */
+                       AM62PX_IOPAD(0x0030, PIN_OUTPUT, 0) /* (L24) OSPI0_CSn1 */ /* SODIMM 64 */
+                       AM62PX_IOPAD(0x000c, PIN_INPUT,  0) /* (L25) OSPI0_D0   */ /* SODIMM 56 */
+                       AM62PX_IOPAD(0x0010, PIN_INPUT,  0) /* (N24) OSPI0_D1   */ /* SODIMM 58 */
+                       AM62PX_IOPAD(0x0014, PIN_INPUT,  0) /* (N25) OSPI0_D2   */ /* SODIMM 60 */
+                       AM62PX_IOPAD(0x0018, PIN_INPUT,  0) /* (M24) OSPI0_D3   */ /* SODIMM 62 */
+                       AM62PX_IOPAD(0x0008, PIN_INPUT,  0) /* (P22) OSPI0_DQS  */ /* SODIMM 66 */
+               >;
+       };
+
+       /* Verdin ETH_1 RGMII (On-module PHY) */
+       pinctrl_rgmii1: main-rgmii1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x014c, PIN_INPUT, 0) /* (B15) RGMII1_RD0    */ /* RGMII_RXD0   */
+                       AM62PX_IOPAD(0x0150, PIN_INPUT, 0) /* (B16) RGMII1_RD1    */ /* RGMII_RXD1   */
+                       AM62PX_IOPAD(0x0154, PIN_INPUT, 0) /* (A14) RGMII1_RD2    */ /* RGMII_RXD2   */
+                       AM62PX_IOPAD(0x0158, PIN_INPUT, 0) /* (B14) RGMII1_RD3    */ /* RGMII_RXD3   */
+                       AM62PX_IOPAD(0x0148, PIN_INPUT, 0) /* (A16) RGMII1_RXC    */ /* RGMII_RXC    */
+                       AM62PX_IOPAD(0x0144, PIN_INPUT, 0) /* (A15) RGMII1_RX_CTL */ /* RGMII_RX_CTL */
+                       AM62PX_IOPAD(0x0134, PIN_INPUT, 0) /* (A18) RGMII1_TD0    */ /* RGMII_TXD0   */
+                       AM62PX_IOPAD(0x0138, PIN_INPUT, 0) /* (C17) RGMII1_TD1    */ /* RGMII_TXD1   */
+                       AM62PX_IOPAD(0x013c, PIN_INPUT, 0) /* (A17) RGMII1_TD2    */ /* RGMII_TXD2   */
+                       AM62PX_IOPAD(0x0140, PIN_INPUT, 0) /* (C16) RGMII1_TD3    */ /* RGMII_TXD3   */
+                       AM62PX_IOPAD(0x0130, PIN_INPUT, 0) /* (B17) RGMII1_TXC    */ /* RGMII_TXC    */
+                       AM62PX_IOPAD(0x012c, PIN_INPUT, 0) /* (B18) RGMII1_TX_CTL */ /* RGMII_TX_CTL */
+               >;
+       };
+
+       /* Verdin ETH_2 RGMII */
+       pinctrl_rgmii2: main-rgmii2-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0184, PIN_INPUT, 0) /* (E19) RGMII2_RD0    */ /* SODIMM 201 */
+                       AM62PX_IOPAD(0x0188, PIN_INPUT, 0) /* (E16) RGMII2_RD1    */ /* SODIMM 203 */
+                       AM62PX_IOPAD(0x018c, PIN_INPUT, 0) /* (E17) RGMII2_RD2    */ /* SODIMM 205 */
+                       AM62PX_IOPAD(0x0190, PIN_INPUT, 0) /* (C19) RGMII2_RD3    */ /* SODIMM 207 */
+                       AM62PX_IOPAD(0x0180, PIN_INPUT, 0) /* (D19) RGMII2_RXC    */ /* SODIMM 197 */
+                       AM62PX_IOPAD(0x017c, PIN_INPUT, 0) /* (F19) RGMII2_RX_CTL */ /* SODIMM 199 */
+                       AM62PX_IOPAD(0x016c, PIN_INPUT, 0) /* (B19) RGMII2_TD0    */ /* SODIMM 221 */
+                       AM62PX_IOPAD(0x0170, PIN_INPUT, 0) /* (A21) RGMII2_TD1    */ /* SODIMM 219 */
+                       AM62PX_IOPAD(0x0174, PIN_INPUT, 0) /* (D17) RGMII2_TD2    */ /* SODIMM 217 */
+                       AM62PX_IOPAD(0x0178, PIN_INPUT, 0) /* (A19) RGMII2_TD3    */ /* SODIMM 215 */
+                       AM62PX_IOPAD(0x0168, PIN_INPUT, 0) /* (D16) RGMII2_TXC    */ /* SODIMM 213 */
+                       AM62PX_IOPAD(0x0164, PIN_INPUT, 0) /* (A20) RGMII2_TX_CTL */ /* SODIMM 211 */
+               >;
+       };
+
+       /* TPM SPI, Optional Module Specific SPI */
+       pinctrl_main_spi0: main-spi0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01bc, PIN_INPUT,  0) /* (B21) SPI0_CLK */ /* TPM_SPI_CLK  - SODIMM 148 */
+                       AM62PX_IOPAD(0x01c0, PIN_OUTPUT, 0) /* (B20) SPI0_D0  */ /* TPM_SPI_MOSI - SODIMM 150 */
+                       AM62PX_IOPAD(0x01c4, PIN_INPUT,  0) /* (C21) SPI0_D1  */ /* TPM_SPI_MISO - SODIMM 152 */
+                       AM62PX_IOPAD(0x01b4, PIN_INPUT,  0) /* (D20) SPI0_CS0 */ /* TPM_SPI_CS */
+               >;
+       };
+
+       /* Verdin SPI_1 */
+       pinctrl_main_spi1: main-spi1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0020, PIN_INPUT,  1) /* (N22) OSPI0_D5.SPI1_CLK */ /* SODIMM 196 */
+                       AM62PX_IOPAD(0x0024, PIN_OUTPUT, 1) /* (P21) OSPI0_D6.SPI1_D0  */ /* SODIMM 200 */
+                       AM62PX_IOPAD(0x0028, PIN_INPUT,  1) /* (N20) OSPI0_D7.SPI1_D1  */ /* SODIMM 198 */
+               >;
+       };
+
+       /* Verdin SPI_1_CS */
+       pinctrl_main_spi1_cs0: main-spi1-cs0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x001c, PIN_OUTPUT, 1) /* (N21) OSPI0_D4.SPI1_CS0 */ /* SODIMM 202 */
+               >;
+       };
+
+       /* Verdin I2S_1 MCLK */
+       pinctrl_i2s1_mclk: main-system-audio-ext-reflock0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00c4, PIN_OUTPUT, 5) /* (Y23) VOUT0_DATA3.AUDIO_EXT_REFCLK0 */ /* SODIMM 38 */
+               >;
+       };
+
+       pinctrl_eth_clock: main-system-clkout0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01f0, PIN_OUTPUT_PULLUP, 5) /* (C25) EXT_REFCLK1.CLKOUT0 */ /* ETH_25MHz_CLK */
+               >;
+       };
+
+       pinctrl_pmic_extint: main-system-extint-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01f4, PIN_INPUT, 0) /* (C23) EXTINTn */ /* PMIC_EXTINT# */
+               >;
+       };
+
+       /* Verdin UART_3, used as the Linux console */
+       pinctrl_uart0: main-uart0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x1c8, PIN_INPUT,  0) /* (A22) UART0_RXD */ /* SODIMM 147 */
+                       AM62PX_IOPAD(0x1cc, PIN_OUTPUT, 0) /* (B22) UART0_TXD */ /* SODIMM 149 */
+               >;
+       };
+
+       /* Verdin UART_1 */
+       pinctrl_uart1: main-uart1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01ac, PIN_INPUT,  2) /* (G23) MCASP0_AFSR.UART1_RXD  */ /* SODIMM 129 */
+                       AM62PX_IOPAD(0x01b0, PIN_OUTPUT, 2) /* (G20) MCASP0_ACLKR.UART1_TXD */ /* SODIMM 131 */
+                       AM62PX_IOPAD(0x0194, PIN_INPUT,  2) /* (D25) MCASP0_AXR3.UART1_CTSn */ /* SODIMM 135 */
+                       AM62PX_IOPAD(0x0198, PIN_OUTPUT, 2) /* (E25) MCASP0_AXR2.UART1_RTSn */ /* SODIMM 133 */
+               >;
+       };
+
+       /* Verdin MSP 41, 42, 44 and 45 as UART */
+       pinctrl_uart2: main-uart2-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00b8, PIN_INPUT,  4) /* (AE24) VOUT0_DATA0.UART2_RXD */ /* SODIMM 192 */
+                       AM62PX_IOPAD(0x00bc, PIN_OUTPUT, 4) /* (W23) VOUT0_DATA1.UART2_TXD  */ /* SODIMM 190 */
+                       AM62PX_IOPAD(0x0104, PIN_INPUT,  4) /* (Y21) VOUT0_PCLK.UART2_CTSn  */ /* SODIMM 184 */
+                       AM62PX_IOPAD(0x0100, PIN_OUTPUT, 4) /* (W20) VOUT0_VSYNC.UART2_RTSn */ /* SODIMM 186 */
+               >;
+       };
+
+       /* Bluetooth on WB SKUs */
+       pinctrl_uart6: main-uart6-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x00d8, PIN_INPUT,  4) /* (AE22) VOUT0_DATA8.UART6_RXD   */ /* WiFi_UART_RXD */
+                       AM62PX_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (AC22) VOUT0_DATA9.UART6_TXD   */ /* WiFi_UART_TXD */
+                       AM62PX_IOPAD(0x00e4, PIN_INPUT,  4) /* (AE21) VOUT0_DATA11.UART6_CTSn */ /* WiFi_UART_CTS */
+                       AM62PX_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (W22)  VOUT0_DATA10.UART6_RTSn */ /* WiFi_UART_RTS */
+               >;
+       };
+
+       /* Verdin USB_2_EN */
+       pinctrl_usb1: main-usb1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0258, PIN_OUTPUT, 0) /* (G21) USB1_DRVVBUS */ /* SODIMM 185 */
+               >;
+       };
+
+       /* Verdin I2S_1 */
+       pinctrl_mcasp0: mcasp0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01a4, PIN_INPUT, 0) /* (F24) MCASP0_ACLKX */ /* SODIMM 30 */
+                       AM62PX_IOPAD(0x01a8, PIN_INPUT, 0) /* (F25) MCASP0_AFSX  */ /* SODIMM 32 */
+                       AM62PX_IOPAD(0x01a0, PIN_INPUT, 0) /* (F23) MCASP0_AXR0  */ /* SODIMM 34 */
+                       AM62PX_IOPAD(0x019c, PIN_INPUT, 0) /* (E24) MCASP0_AXR1  */ /* SODIMM 36 */
+               >;
+       };
+
+       /* Verdin I2S_2 */
+       pinctrl_mcasp1: mcasp1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0090, PIN_INPUT, 2) /* (U24)  GPMC0_BE0n_CLE.MCASP1_ACLKX */ /* SODIMM 42 */
+                       AM62PX_IOPAD(0x0098, PIN_INPUT, 2) /* (AA24) GPMC0_WAIT0.MCASP1_AFSX     */ /* SODIMM 44 */
+                       AM62PX_IOPAD(0x008c, PIN_INPUT, 2) /* (T25)  GPMC0_WEn.MCASP1_AXR0       */ /* SODIMM 46 */
+                       AM62PX_IOPAD(0x0088, PIN_INPUT, 2) /* (R24)  GPMC0_OEn_REn.MCASP1_AXR1   */ /* SODIMM 48 */
+               >;
+       };
+
+       /* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
+       pinctrl_mdio: mdio0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x0160, PIN_OUTPUT, 0) /* (F17) MDIO0_MDC  */ /* SODIMM 193 */
+                       AM62PX_IOPAD(0x015c, PIN_INPUT,  0) /* (F16) MDIO0_MDIO */ /* SODIMM 191 */
+               >;
+       };
+};
+
+&mcu_pmx0 {
+       /* Verdin GPIO_1 */
+       pinctrl_gpio_1: mcu-gpio0-1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x0004, PIN_INPUT, 7) /* (E10) MCU_SPI0_CS1.MCU_GPIO0_1 */ /* SODIMM 206 */
+               >;
+       };
+
+       /* Verdin GPIO_2 */
+       pinctrl_gpio_2: mcu-gpio0-2-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x0008, PIN_INPUT, 7) /* (C10) MCU_SPI0_CLK.MCU_GPIO0_2 */ /* SODIMM 208 */
+               >;
+       };
+
+       /* Verdin GPIO_3 */
+       pinctrl_gpio_3: mcu-gpio0-3-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x000c, PIN_INPUT, 7) /* (B11) MCU_SPI0_D0.MCU_GPIO0_3 */ /* SODIMM 210 */
+               >;
+       };
+
+       /* Verdin GPIO_4 */
+       pinctrl_gpio_4: mcu-gpio0-4-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x0010, PIN_INPUT, 7) /* (D10) MCU_SPI0_D1.MCU_GPIO0_4 */ /* SODIMM 212 */
+               >;
+       };
+
+       /* Verdin I2C_3_HDMI */
+       pinctrl_mcu_i2c0: mcu-i2c0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x0044, PIN_INPUT, 0) /* (E11) MCU_I2C0_SCL */ /* SODIMM 59 */
+                       AM62PX_MCU_IOPAD(0x0048, PIN_INPUT, 0) /* (D11) MCU_I2C0_SDA */ /* SODIMM 57 */
+               >;
+       };
+
+       /* Verdin CAN_2 */
+       pinctrl_mcu_mcan0: mcu-mcan0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x0038, PIN_INPUT,  0) /* (D6) MCU_MCAN0_RX */ /* SODIMM 22 */
+                       AM62PX_MCU_IOPAD(0x0034, PIN_OUTPUT, 0) /* (E8) MCU_MCAN0_TX */ /* SODIMM 20 */
+               >;
+       };
+
+       /* Verdin MSP_13/MSP_18 as CAN */
+       pinctrl_mcu_mcan1: mcu-mcan1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x0040, PIN_INPUT,  0) /* (E7) MCU_MCAN1_RX */ /* SODIMM 116 */
+                       AM62PX_MCU_IOPAD(0x003c, PIN_OUTPUT, 0) /* (F8) MCU_MCAN1_TX */ /* SODIMM 128 */
+               >;
+       };
+
+       /* Verdin UART_4 */
+       pinctrl_mcu_uart0: mcu-uart0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x0014, PIN_INPUT,  0) /* (B6) MCU_UART0_RXD */ /* SODIMM 151 */
+                       AM62PX_MCU_IOPAD(0x0018, PIN_OUTPUT, 0) /* (C8) MCU_UART0_TXD */ /* SODIMM 153 */
+               >;
+       };
+
+       /* On-module I2C - PMIC_I2C */
+       pinctrl_wkup_i2c0: wkup-i2c0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x004c, PIN_INPUT, 0) /* (A13) WKUP_I2C0_SCL */ /* PMIC_I2C_SCL */
+                       AM62PX_MCU_IOPAD(0x0050, PIN_INPUT, 0) /* (C11) WKUP_I2C0_SDA */ /* PMIC_I2C_SDA */
+               >;
+       };
+
+       /* Verdin CSI_1_MCLK */
+       pinctrl_wkup_clkout0: wkup-system-clkout0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x0084, PIN_OUTPUT, 0) /* (F13) WKUP_CLKOUT0 */ /* SODIMM 91 */
+               >;
+       };
+
+       /* Verdin UART_2 */
+       pinctrl_wkup_uart0: wkup-uart0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_MCU_IOPAD(0x002c, PIN_INPUT,  0) /* (C7) WKUP_UART0_CTSn */ /* SODIMM 143 */
+                       AM62PX_MCU_IOPAD(0x0030, PIN_OUTPUT, 0) /* (C6) WKUP_UART0_RTSn */ /* SODIMM 141 */
+                       AM62PX_MCU_IOPAD(0x0024, PIN_INPUT,  0) /* (D8) WKUP_UART0_RXD  */ /* SODIMM 137 */
+                       AM62PX_MCU_IOPAD(0x0028, PIN_OUTPUT, 0) /* (D7) WKUP_UART0_TXD  */ /* SODIMM 139 */
+               >;
+       };
+};
+
+/* Verdin I2S_1_MCLK */
+&audio_refclk0 {
+       assigned-clock-rates = <25000000>;
+};
+
+&cpsw3g {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_rgmii1>;
+       status = "disabled";
+};
+
+/* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
+&cpsw3g_mdio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mdio>, <&pinctrl_eth_clock>;
+       assigned-clocks = <&k3_clks 157 36>;
+       assigned-clock-parents = <&k3_clks 157 38>;
+       assigned-clock-rates = <25000000>;
+       status = "disabled";
+
+       som_eth_phy: ethernet-phy@0 {
+               reg = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_eth_int>;
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <36 IRQ_TYPE_EDGE_FALLING>;
+               ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+       };
+};
+
+/* Verdin ETH_1 (On-module PHY) */
+&cpsw_port1 {
+       phy-handle = <&som_eth_phy>;
+       phy-mode = "rgmii-rxid";
+       status = "disabled";
+};
+
+/* Verdin ETH_2_RGMII */
+&cpsw_port2 {
+       status = "disabled";
+};
+
+/* Verdin PWM_3_DSI */
+&epwm0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_epwm0_b>;
+       status = "disabled";
+};
+
+/* Verdin PWM_1, PWM_2 */
+&epwm2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_epwm2_a>, <&pinctrl_epwm2_b>;
+       status = "disabled";
+};
+
+&mailbox0_cluster0 {
+       status = "okay";
+
+       mbox_r5_0: mbox-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&mailbox0_cluster1 {
+       status = "okay";
+
+       mbox_mcu_r5_0: mbox-mcu-r5-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+};
+
+&main_gpio0 {
+       gpio-line-names =
+               "SODIMM_52",
+               "SODIMM_252",
+               "SODIMM_66",
+               "SODIMM_56",
+               "SODIMM_58",
+               "SODIMM_60",
+               "SODIMM_62",
+               "",
+               "",
+               "",
+               "", /* 10 */
+               "SODIMM_54",
+               "SODIMM_64",
+               "SODIMM_174",
+               "SODIMM_244",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 20 */
+               "PMIC_SD_VSEL",
+               "",
+               "",
+               "",
+               "TPM_EXTINT#",
+               "",
+               "",
+               "",
+               "WiFi_WKUP_BT#",
+               "WiFi_WKUP_WLAN#", /* 30 */
+               "SODIMM_161",
+               "SODIMM_157",
+               "",
+               "",
+               "",
+               "ETH_INT#",
+               "",
+               "SODIMM_17",
+               "SODIMM_21",
+               "", /* 40 */
+               "SODIMM_187",
+               "SODIMM_189",
+               "",
+               "",
+               "",
+               "",
+               "SODIMM_76",
+               "",
+               "SODIMM_216",
+               "SODIMM_218", /* 50 */
+               "SODIMM_220",
+               "SODIMM_222",
+               "",
+               "",
+               "",
+               "",
+               "SODIMM_172",
+               "",
+               "WIFI_SD_INT",
+               "WIFI_SPI_CS#", /* 60 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 70 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 80 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 90 */
+               "";
+
+       verdin_pcie_1_reset_hog: pcie-1-reset-hog {
+               gpio-hog;
+               /* Verdin PCIE_1_RESET# (SODIMM 244) */
+               gpios = <14 GPIO_ACTIVE_LOW>;
+               line-name = "PCIE_1_RESET#";
+               output-low;
+               status = "disabled";
+       };
+};
+
+&main_gpio1 {
+       gpio-line-names =
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 10 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 20 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 30 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 40 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "SODIMM_84",
+               "SODIMM_154",
+               "SODIMM_155", /* 50 */
+               "";
+};
+
+/* Verdin I2C_1 */
+&main_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_main_i2c0>;
+       status = "disabled";
+};
+
+/* Verdin I2C_2_DSI */
+&main_i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_main_i2c1>;
+       status = "disabled";
+};
+
+/* Verdin I2C_4_CSI */
+&main_i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_main_i2c3>;
+       status = "disabled";
+};
+
+/* Verdin CAN_1 */
+&main_mcan0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_main_mcan0>;
+       status = "disabled";
+};
+
+/* TPM SPI, optional SPI on module specific pins */
+&main_spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_main_spi0>;
+       ti,pindir-d0-out-d1-in;
+       status = "okay";
+
+       tpm@0 {
+               compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+               reg = <0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_tpm_extint>;
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
+               spi-max-frequency = <18500000>;
+       };
+};
+
+/* Verdin SPI_1 */
+&main_spi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_main_spi1>, <&pinctrl_main_spi1_cs0>;
+       ti,pindir-d0-out-d1-in;
+       status = "disabled";
+};
+
+/* Verdin UART_3, used as the Linux console */
+&main_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart0>;
+       status = "disabled";
+};
+
+/* Verdin UART_1 */
+&main_uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1>;
+       uart-has-rtscts;
+       status = "disabled";
+};
+
+/* Verdin I2S_1 */
+&mcasp0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mcasp0>;
+       op-mode = <0>; /* I2S mode */
+       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+              1 2 0 0
+              0 0 0 0
+              0 0 0 0
+              0 0 0 0
+       >;
+       tdm-slots = <2>;
+       rx-num-evt = <0>;
+       tx-num-evt = <0>;
+       #sound-dai-cells = <0>;
+       status = "disabled";
+};
+
+/* Verdin I2S_2 */
+&mcasp1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mcasp1>;
+       op-mode = <0>; /* I2S mode */
+       serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+              1 2 0 0
+              0 0 0 0
+              0 0 0 0
+              0 0 0 0
+       >;
+       tdm-slots = <2>;
+       rx-num-evt = <0>;
+       tx-num-evt = <0>;
+       #sound-dai-cells = <0>;
+       status = "disabled";
+};
+
+&mcu_gpio0 {
+       gpio-line-names =
+               "",
+               "SODIMM_206",
+               "SODIMM_208",
+               "SODIMM_210",
+               "SODIMM_212",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 10 */
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "",
+               "", /* 20 */
+               "",
+               "",
+               "";
+};
+
+/* Verdin I2C_3_HDMI */
+&mcu_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mcu_i2c0>;
+       status = "disabled";
+};
+
+/* Verdin CAN_2 */
+&mcu_mcan0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mcu_mcan0>;
+       status = "disabled";
+};
+
+/* Verdin UART_4 */
+&mcu_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mcu_uart0>;
+       status = "disabled";
+};
+
+/* Verdin QSPI_1 */
+&ospi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ospi0>;
+       status = "disabled";
+};
+
+/* On-module eMMC */
+&sdhci0 {
+       no-mmc-hs400;
+       non-removable;
+       ti,driver-strength-ohm = <50>;
+       status = "okay";
+};
+
+/* Verdin SD_1 */
+&sdhci1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sdhci1>, <&pinctrl_sd1_cd>;
+       cd-gpios = <&main_gpio1 48 GPIO_ACTIVE_LOW>;
+       disable-wp;
+       vmmc-supply = <&reg_sd1_vmmc>;
+       vqmmc-supply = <&reg_sd1_vqmmc>;
+       ti,fails-without-test-cd;
+       status = "disabled";
+};
+
+/* Verdin USB_1 */
+&usbss0 {
+       ti,vbus-divider;
+       status = "disabled";
+};
+
+&usb0 {
+       adp-disable;
+       usb-role-switch;
+       status = "disabled";
+
+       port {
+               usb0_ep: endpoint {
+                       remote-endpoint = <&usb_dr_connector>;
+               };
+       };
+};
+
+/* Verdin USB_2 */
+&usbss1 {
+       ti,vbus-divider;
+       status = "disabled";
+};
+
+&usb1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usb1>;
+       dr_mode = "host";
+       status = "disabled";
+};
+
+/* On-module I2C - PMIC_I2C */
+&wkup_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wkup_i2c0>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       som_gpio_expander: gpio@21 {
+               compatible = "nxp,pcal6408";
+               reg = <0x21>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               gpio-line-names = "SODIMM_256";
+       };
+
+       pmic@30 {
+               compatible = "ti,tps65219";
+               reg = <0x30>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pmic_extint>;
+               interrupt-parent = <&gic500>;
+               interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
+
+               buck1-supply = <&reg_vsodimm>;
+               buck2-supply = <&reg_vsodimm>;
+               buck3-supply = <&reg_vsodimm>;
+               ldo1-supply = <&reg_3v3>;
+               ldo2-supply = <&reg_1v8>;
+               ldo3-supply = <&reg_3v3>;
+               ldo4-supply = <&reg_3v3>;
+               system-power-controller;
+               ti,power-button;
+
+               regulators {
+                       reg_3v3: buck1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-name = "+V3.3 (PMIC BUCK1)";
+                       };
+
+                       reg_1v8: buck2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "+V1.8 (PMIC BUCK2)"; /* On-module and SODIMM 214 */
+                       };
+
+                       buck3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-min-microvolt = <1100000>;
+                               regulator-name = "+VDD_DDR (PMIC BUCK3)";
+                       };
+
+                       reg_sd_3v3_1v8: ldo1 {
+                               regulator-allow-bypass;
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-name = "+V3.3_1.8_SD (PMIC LDO1)";
+                       };
+
+                       ldo2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <850000>;
+                               regulator-min-microvolt = <850000>;
+                               regulator-name = "+V_PMIC_LDO2 (PMIC LDO4)"; // +VDDR_CORE
+                       };
+
+                       ldo3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-name = "+V1.8A (PMIC LDO3)";
+                       };
+
+                       ldo4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-min-microvolt = <2500000>;
+                               regulator-name = "+V2.5_ETH (PMIC LDO4)";
+                       };
+               };
+       };
+
+       som_rtc_i2c: rtc@32 {
+               compatible = "epson,rx8130";
+               reg = <0x32>;
+       };
+
+       temperature-sensor@48 {
+               compatible = "ti,tmp1075";
+               reg = <0x48>;
+       };
+
+       som_adc: adc@49 {
+               compatible = "ti,tla2024";
+               reg = <0x49>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #io-channel-cells = <1>;
+
+               /* Verdin (ADC_4 - ADC_3) */
+               channel@0 {
+                       reg = <0>;
+                       ti,datarate = <4>;
+                       ti,gain = <2>;
+               };
+
+               /* Verdin (ADC_4 - ADC_1) */
+               channel@1 {
+                       reg = <1>;
+                       ti,datarate = <4>;
+                       ti,gain = <2>;
+               };
+
+               /* Verdin (ADC_3 - ADC_1) */
+               channel@2 {
+                       reg = <2>;
+                       ti,datarate = <4>;
+                       ti,gain = <2>;
+               };
+
+               /* Verdin (ADC_2 - ADC_1) */
+               channel@3 {
+                       reg = <3>;
+                       ti,datarate = <4>;
+                       ti,gain = <2>;
+               };
+
+               /* Verdin ADC_4 */
+               channel@4 {
+                       reg = <4>;
+                       ti,datarate = <4>;
+                       ti,gain = <2>;
+               };
+
+               /* Verdin ADC_3 */
+               channel@5 {
+                       reg = <5>;
+                       ti,datarate = <4>;
+                       ti,gain = <2>;
+               };
+
+               /* Verdin ADC_2 */
+               channel@6 {
+                       reg = <6>;
+                       ti,datarate = <4>;
+                       ti,gain = <2>;
+               };
+
+               /* Verdin ADC_1 */
+               channel@7 {
+                       reg = <7>;
+                       ti,datarate = <4>;
+                       ti,gain = <2>;
+               };
+       };
+
+       som_eeprom: eeprom@50 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x50>;
+               pagesize = <16>;
+       };
+};
+
+/* Verdin UART_2 */
+&wkup_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_wkup_uart0>;
+       uart-has-rtscts;
+       status = "disabled";
+};
index d29f524600af017af607e2cb6122d3a581575ffc..83c37de7d338dbf10a16017834e69b37b5d41987 100644 (file)
                #size-cells = <2>;
                ranges;
 
-               secure_tfa_ddr: tfa@9e780000 {
-                       reg = <0x00 0x9e780000 0x00 0x80000>;
+               mcu_r5fss0_core0_dma_memory_region: mcu-r5fss-dma-memory-region@9b800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9b800000 0x00 0x100000>;
                        no-map;
                };
 
-               secure_ddr: optee@9e800000 {
-                       reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
+               mcu_r5fss0_core0_memory_region: mcu-r5fss-memory-region@9b900000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9b900000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9c800000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9c800000 0x00 0x100000>;
                        no-map;
                };
 
-               wkup_r5fss0_core0_memory_region: r5f-dma-memory@9c900000 {
+               wkup_r5fss0_core0_memory_region: r5f-memory@9c900000 {
                        compatible = "shared-dma-pool";
-                       reg = <0x00 0x9c900000 0x00 0x01e00000>;
+                       reg = <0x00 0x9c900000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               secure_tfa_ddr: tfa@9e780000 {
+                       reg = <0x00 0x9e780000 0x00 0x80000>;
+                       no-map;
+               };
+
+               secure_ddr: optee@9e800000 {
+                       reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
                        no-map;
                };
        };
                bootph-all;
        };
 
+       vcc_3v3_main: regulator-4 {
+               /* output of LM5141-Q1 */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_3v3_main";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vmain_pd>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vcc_3v3_sys: regulator-5 {
+               /* output of TPS222965DSGT */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_3v3_sys";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_3v3_main>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
                        AM62PX_IOPAD(0x0124, PIN_INPUT, 7) /* (J25) MMC2_SDCD.GPIO0_71 */
                >;
        };
+
+       main_ecap1_pins_default: main-ecap1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x019c, PIN_OUTPUT, 2) /* (E24) MCASP0_AXR1.ECAP1_IN_APWM_OUT */
+               >;
+       };
+
+       main_ecap2_pins_default: main-ecap2-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01a4, PIN_OUTPUT, 2) /* (F24) MCASP0_ACLKX.ECAP2_IN_APWM_OUT */
+               >;
+       };
+
+       main_epwm0_pins_default: main-epwm0-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01b4, PIN_OUTPUT, 2) /* (D20) SPI0_CS0.EHRPWM0_A */
+                       AM62PX_IOPAD(0x01b8, PIN_OUTPUT, 2) /* (E20) SPI0_CS1.EHRPWM0_B */
+               >;
+       };
+
+       main_epwm1_pins_default: main-epwm1-default-pins {
+               pinctrl-single,pins = <
+                       AM62PX_IOPAD(0x01bc, PIN_OUTPUT, 2) /* (B21) SPI0_CLK.EHRPWM1_A */
+                       AM62PX_IOPAD(0x01c0, PIN_OUTPUT, 2) /* (B20) SPI0_D0.EHRPWM1_B */
+               >;
+       };
 };
 
 &main_i2c0 {
 
 &sdhci0 {
        status = "okay";
+       non-removable;
        ti,driver-strength-ohm = <50>;
-       disable-wp;
        bootph-all;
 };
 
        };
 };
 
+&wkup_r5fss0 {
+       status = "okay";
+};
+
+&wkup_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
+       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
+                       <&wkup_r5fss0_core0_memory_region>;
+};
+
+&mcu_r5fss0 {
+       status = "okay";
+};
+
+&mcu_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster1 &mbox_mcu_r5_0>;
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+};
+
 &main_uart0 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_uart0_pins_default>;
 &mcu_gpio_intr {
        status = "reserved";
 };
+
+&ecap1 {
+       /* P36 of J4 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_ecap1_pins_default>;
+       status = "okay";
+};
+
+&ecap2 {
+       /* P11 of J4 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_ecap2_pins_default>;
+       status = "okay";
+};
+
+&epwm0 {
+       /* P24/P26 of J4 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_epwm0_pins_default>;
+       status = "okay";
+};
+
+&epwm1 {
+       /* P23/P19 of J4 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_epwm1_pins_default>;
+       status = "okay";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-nonwifi-dahlia.dts b/src/arm64/ti/k3-am62p5-verdin-nonwifi-dahlia.dts
new file mode 100644 (file)
index 0000000..1790e57
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/dahlia-carrier-board-kit
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-nonwifi.dtsi"
+#include "k3-am62p-verdin-dahlia.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P on Dahlia Board";
+       compatible = "toradex,verdin-am62p-nonwifi-dahlia",
+                    "toradex,verdin-am62p-nonwifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-nonwifi-dev.dts b/src/arm64/ti/k3-am62p5-verdin-nonwifi-dev.dts
new file mode 100644 (file)
index 0000000..5794f65
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/verdin-development-board-kit
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-nonwifi.dtsi"
+#include "k3-am62p-verdin-dev.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P on Verdin Development Board";
+       compatible = "toradex,verdin-am62p-nonwifi-dev",
+                    "toradex,verdin-am62p-nonwifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-nonwifi-ivy.dts b/src/arm64/ti/k3-am62p5-verdin-nonwifi-ivy.dts
new file mode 100644 (file)
index 0000000..a777513
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/ivy-carrier-board
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-nonwifi.dtsi"
+#include "k3-am62p-verdin-ivy.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P on Ivy Board";
+       compatible = "toradex,verdin-am62p-nonwifi-ivy",
+                    "toradex,verdin-am62p-nonwifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-nonwifi-mallow.dts b/src/arm64/ti/k3-am62p5-verdin-nonwifi-mallow.dts
new file mode 100644 (file)
index 0000000..5282387
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/mallow-carrier-board
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-nonwifi.dtsi"
+#include "k3-am62p-verdin-mallow.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P on Mallow Board";
+       compatible = "toradex,verdin-am62p-nonwifi-mallow",
+                    "toradex,verdin-am62p-nonwifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-nonwifi-yavia.dts b/src/arm64/ti/k3-am62p5-verdin-nonwifi-yavia.dts
new file mode 100644 (file)
index 0000000..c27bda7
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/yavia
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-nonwifi.dtsi"
+#include "k3-am62p-verdin-yavia.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P on Yavia Board";
+       compatible = "toradex,verdin-am62p-nonwifi-yavia",
+                    "toradex,verdin-am62p-nonwifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-wifi-dahlia.dts b/src/arm64/ti/k3-am62p5-verdin-wifi-dahlia.dts
new file mode 100644 (file)
index 0000000..12b5798
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/dahlia-carrier-board-kit
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-wifi.dtsi"
+#include "k3-am62p-verdin-dahlia.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P WB on Dahlia Board";
+       compatible = "toradex,verdin-am62p-wifi-dahlia",
+                    "toradex,verdin-am62p-wifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-wifi-dev.dts b/src/arm64/ti/k3-am62p5-verdin-wifi-dev.dts
new file mode 100644 (file)
index 0000000..bbc2770
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/verdin-development-board-kit
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-wifi.dtsi"
+#include "k3-am62p-verdin-dev.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P WB on Verdin Development Board";
+       compatible = "toradex,verdin-am62p-wifi-dev",
+                    "toradex,verdin-am62p-wifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-wifi-ivy.dts b/src/arm64/ti/k3-am62p5-verdin-wifi-ivy.dts
new file mode 100644 (file)
index 0000000..2746728
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/ivy-carrier-board
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-wifi.dtsi"
+#include "k3-am62p-verdin-ivy.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P WB on Ivy Board";
+       compatible = "toradex,verdin-am62p-wifi-ivy",
+                    "toradex,verdin-am62p-wifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-wifi-mallow.dts b/src/arm64/ti/k3-am62p5-verdin-wifi-mallow.dts
new file mode 100644 (file)
index 0000000..e358514
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/mallow-carrier-board
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-wifi.dtsi"
+#include "k3-am62p-verdin-mallow.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P WB on Mallow Board";
+       compatible = "toradex,verdin-am62p-wifi-mallow",
+                    "toradex,verdin-am62p-wifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
diff --git a/src/arm64/ti/k3-am62p5-verdin-wifi-yavia.dts b/src/arm64/ti/k3-am62p5-verdin-wifi-yavia.dts
new file mode 100644 (file)
index 0000000..25e0842
--- /dev/null
@@ -0,0 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2025 Toradex
+ *
+ * https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
+ * https://www.toradex.com/products/carrier-board/yavia
+ */
+
+/dts-v1/;
+
+#include "k3-am62p5.dtsi"
+#include "k3-am62p-verdin.dtsi"
+#include "k3-am62p-verdin-wifi.dtsi"
+#include "k3-am62p-verdin-yavia.dtsi"
+
+/ {
+       model = "Toradex Verdin AM62P WB on Yavia Board";
+       compatible = "toradex,verdin-am62p-wifi-yavia",
+                    "toradex,verdin-am62p-wifi",
+                    "toradex,verdin-am62p",
+                    "ti,am62p5";
+};
index f0b2fd4165a753a065a82ca662dec37a9508bb2c..1fd0aaff3193a5cd361b67fdbcbda4c08226b043 100644 (file)
@@ -33,7 +33,7 @@
 &thermal_zones {
        main0_thermal: main0-thermal {
                trips {
-                       main0_thermal_trip0: main0-thermal-trip {
+                       main0_fan: main0-fan {
                                temperature = <65000>;  /* millicelsius */
                                hysteresis = <2000>;    /* millicelsius */
                                type = "active";
 
                cooling-maps {
                        map0 {
-                               trip = <&main0_thermal_trip0>;
+                               trip = <&main0_alert>;
+                               cooling-device =
+                                       <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                       <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+
+                       map1 {
+                               trip = <&main0_fan>;
                                cooling-device = <&fan THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
                        };
                };
index d52cb2a5a589a8e5eb325fd90324d57ec1e3783b..ee8337bfbbfd3a0ecfd61ebac9ddb5a7501e686d 100644 (file)
                        no-map;
                };
 
+               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9da00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9da00000 0x00 0x100000>;
+                       no-map;
+               };
+
+               wkup_r5fss0_core0_memory_region: r5f-memory@9db00000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0x9db00000 0x00 0xc00000>;
+                       no-map;
+               };
+
                secure_tfa_ddr: tfa@9e780000 {
                        reg = <0x00 0x9e780000 0x00 0x80000>;
                        alignment = <0x1000>;
                        no-map;
                };
 
-               wkup_r5fss0_core0_dma_memory_region: r5f-dma-memory@9db00000 {
-                       compatible = "shared-dma-pool";
-                       reg = <0x00 0x9db00000 0x00 0xc00000>;
-                       no-map;
-               };
        };
 
        leds {
                        AM62X_IOPAD(0x078, PIN_OUTPUT, 1) /* (U24) GPMC0_AD15.VOUT0_DATA23 */
                >;
        };
+
+       main_ecap0_pins_default: main-ecap0-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x01b8, PIN_OUTPUT, 3) /* (C13) SPI0_CS1.ECAP0_IN_APWM_OUT */
+               >;
+       };
+
+       main_ecap2_pins_default: main-ecap2-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x01a4, PIN_OUTPUT, 2) /* (B20) MCASP0_ACLKX.ECAP2_IN_APWM_OUT */
+               >;
+       };
+
+       main_epwm1_pins_default: main-epwm1-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x019c, PIN_OUTPUT, 6) /* (B18) MCASP0_AXR1.EHRPWM1_A */
+                       AM62X_IOPAD(0x01a0, PIN_OUTPUT, 6) /* (E18) MCASP0_AXR0.EHRPWM1_B */
+               >;
+       };
 };
 
 &mcu_pmx0 {
 &sdhci0 {
        bootph-all;
        status = "okay";
+       non-removable;
        pinctrl-names = "default";
        pinctrl-0 = <&main_mmc0_pins_default>;
-       disable-wp;
 };
 
 &sdhci1 {
 };
 
 &mailbox0_cluster0 {
+       status = "okay";
+
        mbox_m4_0: mbox-m4-0 {
                ti,mbox-rx = <0 0 0>;
                ti,mbox-tx = <1 0 0>;
        };
+
+       mbox_r5_0: mbox-r5-0 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
 };
 
 &mcu_m4fss {
        status = "okay";
 };
 
+&wkup_r5fss0 {
+       status = "okay";
+};
+
+&wkup_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0 &mbox_r5_0>;
+       memory-region = <&wkup_r5fss0_core0_dma_memory_region>,
+                       <&wkup_r5fss0_core0_memory_region>;
+};
+
 &usbss0 {
        bootph-all;
        status = "okay";
 &mcu_gpio_intr {
        status = "reserved";
 };
+
+&ecap0 {
+       /* P26 of J3 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_ecap0_pins_default>;
+       status = "okay";
+};
+
+&ecap2 {
+       /* P11 of J3 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_ecap2_pins_default>;
+       status = "okay";
+};
+
+&epwm1 {
+       /* P36/P33 of J3 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_epwm1_pins_default>;
+       status = "okay";
+};
index 76ca02127f95ff90dbeedf5107fd89cc606de1f9..149c59c071823afb9befc7fe79387718605dd0dd 100644 (file)
                #clock-cells = <0>;
                clock-frequency = <24000000>;
        };
+
+       reg_2p8v: regulator-2p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P8V";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
+
+       reg_1p2v: regulator-1p2v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P2V";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
 };
 
 &main_i2c2 {
@@ -22,7 +49,7 @@
        #size-cells = <0>;
        status = "okay";
 
-       i2c-switch@71 {
+       i2c-mux@71 {
                compatible = "nxp,pca9543";
                #address-cells = <1>;
                #size-cells = <0>;
                                reg = <0x10>;
 
                                clocks = <&clk_imx219_fixed>;
-                               clock-names = "xclk";
+
+                               VANA-supply = <&reg_2p8v>;
+                               VDIG-supply = <&reg_1p8v>;
+                               VDDL-supply = <&reg_1p2v>;
 
                                reset-gpios = <&exp1 13 GPIO_ACTIVE_HIGH>;
 
index ccc7f5e43184fa8c5580065ae2fd0e1f0f914c0a..fc77fc77fe0b169f034087ea42f5749f2a201a5d 100644 (file)
                #clock-cells = <0>;
                clock-frequency = <12000000>;
        };
+
+       reg_2p8v: regulator-2p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P8V";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
+
+       reg_1p5v: regulator-1p5v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P5V";
+               regulator-min-microvolt = <1500000>;
+               regulator-max-microvolt = <1500000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
 };
 
 &main_i2c2 {
@@ -22,7 +49,7 @@
        #size-cells = <0>;
        status = "okay";
 
-       i2c-switch@71 {
+       i2c-mux@71 {
                compatible = "nxp,pca9543";
                #address-cells = <1>;
                #size-cells = <0>;
 
                                clocks = <&clk_ov5640_fixed>;
                                clock-names = "xclk";
+
+                               AVDD-supply = <&reg_2p8v>;
+                               DOVDD-supply = <&reg_1p8v>;
+                               DVDD-supply = <&reg_1p5v>;
+
                                powerdown-gpios = <&exp1 13 GPIO_ACTIVE_LOW>;
 
                                port {
index 4eaf9d757dd0ad3ba9b575f7355f7419bddcad6c..fe3bc29632fa905669cfbecac16c5c961409b80c 100644 (file)
                #clock-cells = <0>;
                clock-frequency = <24000000>;
        };
+
+       reg_2p8v: regulator-2p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P8V";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_3v3_sys>;
+               regulator-always-on;
+       };
 };
 
 &main_i2c2 {
@@ -22,7 +49,7 @@
        #size-cells = <0>;
        status = "okay";
 
-       i2c-switch@71 {
+       i2c-mux@71 {
                compatible = "nxp,pca9543";
                #address-cells = <1>;
                #size-cells = <0>;
 
                                clocks = <&clk_ov5640_fixed>;
                                clock-names = "xclk";
+
+                               AVDD-supply = <&reg_2p8v>;
+                               DOVDD-supply = <&reg_1p8v>;
+                               DVDD-supply = <&reg_3p3v>;
+
                                powerdown-gpios = <&exp1 13 GPIO_ACTIVE_LOW>;
 
                                port {
index 324eb44c258d37bb2da7f7152da93df51070fce4..c7e5da37486ae2c535c42d55da65aa2fb67dba78 100644 (file)
                        reg = <0x00000014 0x4>;
                };
 
+               pcie0_ctrl: pcie-ctrl@4070 {
+                       compatible = "ti,j784s4-pcie-ctrl", "syscon";
+                       reg = <0x4070 0x4>;
+               };
+
                serdes_ln_ctrl: mux-controller@4080 {
                        compatible = "reg-mux";
                        reg = <0x4080 0x4>;
                reg = <0x00 0x0f102000 0x00 0x1000>,
                      <0x00 0x0f100000 0x00 0x400>,
                      <0x00 0x0d000000 0x00 0x00800000>,
-                     <0x00 0x68000000 0x00 0x00001000>;
+                     <0x06 0x00000000 0x00 0x00001000>; /* ECAM (4 KB) */
                reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 203 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&main_conf 0x4070>;
+               ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x0>;
                max-link-speed = <2>;
                num-lanes = <1>;
                power-domains = <&k3_pds 114 TI_SCI_PD_EXCLUSIVE>;
                vendor-id = <0x104c>;
                device-id = <0xb010>;
                msi-map = <0x0 &gic_its 0x0 0x10000>;
-               ranges = <0x01000000 0x00 0x68001000  0x00 0x68001000  0x00 0x0010000>,
-                        <0x02000000 0x00 0x68011000  0x00 0x68011000  0x00 0x7fef000>;
+               ranges = <0x01000000 0x00 0x00001000 0x06 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
+                        <0x02000000 0x00 0x00101000 0x06 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
                dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x00000010 0x0>;
                status = "disabled";
        };
index 6b029539e0dbb421495b666f13a97b050824a83c..43275177485341f2a20792997103dcae0defbc84 100644 (file)
@@ -46,6 +46,6 @@
                max-functions = /bits/ 8 <1>;
                phys = <&serdes0_pcie_link>;
                phy-names = "pcie-phy";
-               ti,syscon-pcie-ctrl = <&main_conf 0x4070>;
+               ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x0>;
        };
 };
index f8ec40523254ba1ee9b0bec7c00541dceef25526..e01866372293babcbe6687f32a094e9daaa815ec 100644 (file)
        status = "okay";
        non-removable;
        ti,driver-strength-ohm = <50>;
-       disable-wp;
        bootph-all;
 };
 
        status = "okay";
 };
 
+/* main_timer8 is used by r5f0-0 */
+&main_timer8 {
+       status = "reserved";
+};
+
+/* main_timer9 is used by r5f0-1 */
+&main_timer9 {
+       status = "reserved";
+};
+
+/* main_timer10 is used by r5f1-0 */
+&main_timer10 {
+       status = "reserved";
+};
+
+/* main_timer11 is used by r5f1-1 */
+&main_timer11 {
+       status = "reserved";
+};
+
 &serdes_ln_ctrl {
        idle-states = <AM64_SERDES0_LANE0_PCIE0>;
 };
index 33e421ec18abbc5d3f6090494d4f823bbd63f35c..1deaa0be0085c4e64136d3e8f68fdcd62ca7e068 100644 (file)
        status = "okay";
 };
 
+/* main_timer8 is used by r5f0-0 */
+&main_timer8 {
+       status = "reserved";
+};
+
+/* main_timer9 is used by r5f0-1 */
+&main_timer9 {
+       status = "reserved";
+};
+
+/* main_timer10 is used by r5f1-0 */
+&main_timer10 {
+       status = "reserved";
+};
+
+/* main_timer11 is used by r5f1-1 */
+&main_timer11 {
+       status = "reserved";
+};
+
 &ecap0 {
        status = "okay";
        /* PWM is available on Pin 1 of header J3 */
index 94a812a1355baf5119c0b1cbbdf0b673eb19b9a0..b085e736111660ed0dad5f127ef0c3d79c52fe1d 100644 (file)
                ti,otap-del-sel-mmc-hs = <0x0>;
                ti,otap-del-sel-ddr52 = <0x5>;
                ti,otap-del-sel-hs200 = <0x5>;
+               ti,itap-del-sel-legacy = <0xa>;
+               ti,itap-del-sel-mmc-hs = <0x1>;
                ti,itap-del-sel-ddr52 = <0x0>;
                dma-coherent;
                status = "disabled";
        };
 
        scm_conf: scm-conf@100000 {
-               compatible = "syscon", "simple-mfd";
+               compatible = "ti,am654-system-controller", "syscon", "simple-mfd";
                reg = <0 0x00100000 0 0x1c000>;
                #address-cells = <1>;
                #size-cells = <1>;
index 364c57b3b3a0612f1ad89f945aeccf1f9f384ffc..7a3953d64fd84f6c6f7b78055d57b82cdf1ff7c5 100644 (file)
 #include <dt-bindings/interrupt-controller/irq.h>
 
 &{/} {
+       vcc_5v0: lcd-regulator {
+               /* Output of LM5140 */
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&evm_12v0>;
+       };
+
        display0 {
                compatible = "rocktech,rk101ii01d-ct";
+               power-supply = <&vcc_5v0>;
                backlight = <&lcd_bl>;
                enable-gpios = <&pca9555 8 GPIO_ACTIVE_HIGH>;
                port {
index aa7139cc8a92b44fe94b556d392038edf6e9f35e..c30425960398ebb75ebda44726ed90cd78947d58 100644 (file)
        bus-width = <8>;
        non-removable;
        ti,driver-strength-ohm = <50>;
-       disable-wp;
 };
 
 /*
index ae842b85b70de0b0524e9429f4e1c338c5425d40..12af6cb7f65cfb5045e756080f3970971101f18e 100644 (file)
@@ -50,5 +50,4 @@
        bus-width = <8>;
        non-removable;
        ti,driver-strength-ohm = <50>;
-       disable-wp;
 };
index 9be6bba28c26fb182e07b9fc88fb378dd72541c4..bf9b23df1da2ab06b9409fc68a0841bc03cfd1ea 100644 (file)
 };
 
 &main_gpio1 {
+       bootph-all;
        status = "okay";
 };
 
diff --git a/src/arm64/ti/k3-am68-phyboard-izar.dts b/src/arm64/ti/k3-am68-phyboard-izar.dts
new file mode 100644 (file)
index 0000000..41c8f85
--- /dev/null
@@ -0,0 +1,575 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Dominik Haller <d.haller@phytec.de>
+ *
+ * https://www.phytec.eu/en/produkte/development-kits/phyboard-izar/
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/leds-pca9532.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include <dt-bindings/phy/phy-cadence.h>
+#include <dt-bindings/phy/phy.h>
+#include "k3-am68-phycore-som.dtsi"
+
+#include "k3-serdes.h"
+
+/ {
+       compatible = "phytec,am68-phyboard-izar",
+                    "phytec,am68-phycore-som", "ti,j721s2";
+       model = "PHYTEC phyBOARD-Izar-AM68x";
+
+       aliases {
+               serial0 = &mcu_uart0;
+               serial1 = &main_uart1;
+               serial2 = &main_uart8;
+               serial3 = &main_uart2;
+               mmc1 = &main_sdhci1;
+               ethernet0 = &cpsw_port1;
+       };
+
+       chosen {
+               stdout-path = &main_uart8;
+       };
+
+       transceiver1: can-phy1 {
+               compatible = "ti,tcan1043";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+       };
+
+       transceiver2: can-phy2 {
+               compatible = "ti,tcan1043";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+       };
+
+       transceiver3: can-phy3 {
+               compatible = "ti,tcan1043";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+       };
+
+       transceiver4: can-phy4 {
+               compatible = "ti,tcan1043";
+               #phy-cells = <0>;
+               max-bitrate = <8000000>;
+       };
+
+       vcc_12v0: regulator-12v0 {
+               /* main supply */
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_IN";
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vcc_1v8: regulator-vcc-1v8 {
+               /* Output of TLV7158P */
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_1V8";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_3v3>;
+       };
+
+       vcc_3v3: regulator-vcc-3v3 {
+               /* Output of SiC431 */
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_5v0>;
+       };
+
+       vcc_5v0: regulator-vcc-5v0 {
+               /* Output of LM5116 */
+               compatible = "regulator-fixed";
+               regulator-name = "VCC_5V0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_12v0>;
+       };
+};
+
+&main_pmx0 {
+       main_i2c2_pins_default: main-i2c2-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x04c, PIN_INPUT_PULLUP, 13) /* (V27) MCASP1_AXR1.I2C2_SCL */
+                       J721S2_IOPAD(0x050, PIN_INPUT_PULLUP, 13) /* (W27) MCASP1_AXR2.I2C2_SDA */
+               >;
+       };
+
+       main_i2c4_pins_default: main-i2c4-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x014, PIN_INPUT_PULLUP, 8) /* (AD25) MCAN14_TX.I2C4_SCL */
+                       J721S2_IOPAD(0x010, PIN_INPUT_PULLUP, 8) /* (AF28) MCAN13_RX.I2C4_SDA */
+               >;
+       };
+
+       main_i2c5_pins_default: main-i2c5-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x01c, PIN_INPUT_PULLUP, 8) /* (Y24) MCAN15_TX.I2C5_SCL */
+                       J721S2_IOPAD(0x018, PIN_INPUT_PULLUP, 8) /* (W23) MCAN14_RX.I2C5_SDA */
+               >;
+       };
+
+       main_gpio0_ioexp_intr_pins_default: main-gpio0-ioexp-intr-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x020, PIN_INPUT, 7) /* (AA23) MCAN15_RX.GPIO0_8 */
+               >;
+       };
+
+       main_mcan1_pins_default: main-mcan1-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x0c8, PIN_INPUT, 4) /* (AD28) EXT_REFCLK1.MCAN1_RX */
+                       J721S2_IOPAD(0x06c, PIN_OUTPUT, 0) /* (V26) MCAN1_TX */
+               >;
+       };
+
+       main_mcan13_pins_default: main-mcan13-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x0ec, PIN_INPUT, 9) /* (AG25) TIMER_IO1.MCAN13_RX */
+                       J721S2_IOPAD(0x00c, PIN_OUTPUT, 0) /* (AE28) MCAN13_TX */
+               >;
+       };
+
+       main_mcan16_pins_default: main-mcan16-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x028, PIN_INPUT, 0) /* (AB24) MCAN16_RX */
+                       J721S2_IOPAD(0x024, PIN_OUTPUT, 0) /* (Y28) MCAN16_TX */
+               >;
+       };
+
+       main_mmc1_pins_default: main-mmc1-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x104, PIN_INPUT, 0) /* (P23) MMC1_CLK */
+                       J721S2_IOPAD(0x108, PIN_INPUT, 0) /* (N24) MMC1_CMD */
+                       J721S2_IOPAD(0x100, PIN_INPUT, 0) /* (###) MMC1_CLKLB */
+                       J721S2_IOPAD(0x0fc, PIN_INPUT, 0) /* (M23) MMC1_DAT0 */
+                       J721S2_IOPAD(0x0f8, PIN_INPUT, 0) /* (P24) MMC1_DAT1 */
+                       J721S2_IOPAD(0x0f4, PIN_INPUT, 0) /* (R24) MMC1_DAT2 */
+                       J721S2_IOPAD(0x0f0, PIN_INPUT, 0) /* (R22) MMC1_DAT3 */
+                       J721S2_IOPAD(0x0e8, PIN_INPUT, 8) /* (AE25) TIMER_IO0.MMC1_SDCD */
+               >;
+               bootph-all;
+       };
+
+       main_spi6_pins_default: main-spi6-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x030, PIN_INPUT, 8) /* (T26) GPIO0_12.SPI6_CLK */
+                       J721S2_IOPAD(0x080, PIN_INPUT, 8) /* (U26) MCASP0_AXR4.SPI6_CS2 */
+                       J721S2_IOPAD(0x0c4, PIN_OUTPUT, 8) /* (AB26) ECAP0_IN_APWM_OUT.SPI6_D0 */
+                       J721S2_IOPAD(0x074, PIN_INPUT, 8) /* (R28) MCAN2_TX.SPI6_D1 */
+                       J721S2_IOPAD(0x0dc, PIN_OUTPUT, 7) /* (AH26) SPI0_D1.GPIO0_55 */
+               >;
+       };
+
+       main_uart1_pins_default: main-uart1-default-pins {
+                       pinctrl-single,pins = <
+                       J721S2_IOPAD(0x05c, PIN_INPUT, 11) /* (AA26) MCASP2_AXR0.UART1_CTSn */
+                       J721S2_IOPAD(0x060, PIN_OUTPUT, 11) /* (AC27) MCASP2_AXR1.UART1_RTSn */
+                       J721S2_IOPAD(0x054, PIN_INPUT, 11) /* (Y27) MCASP2_ACLKX.UART1_RXD */
+                       J721S2_IOPAD(0x058, PIN_OUTPUT, 11) /* (AA27) MCASP2_AFSX.UART1_TXD */
+               >;
+       };
+
+       main_uart2_pins_default: main-uart2-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x0d8, PIN_INPUT, 11) /* (AG26) SPI0_D0.UART2_RXD */
+                       J721S2_IOPAD(0x068, PIN_OUTPUT, 11) /* (U28) MCAN0_RX.UART2_TXD */
+               >;
+       };
+
+       main_uart8_pins_default: main-uart8-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x0d0, PIN_INPUT, 11) /* (AF26) SPI0_CS1.UART8_RXD */
+                       J721S2_IOPAD(0x0d4, PIN_OUTPUT, 11) /* (AH27) SPI0_CLK.UART8_TXD */
+               >;
+               bootph-all;
+       };
+};
+
+&wkup_pmx1 {
+       mcu_fss0_ospi1_pins_default: mcu-fss0-ospi1-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x008, PIN_OUTPUT, 0) /* (A19) MCU_OSPI1_CLK */
+                       J721S2_WKUP_IOPAD(0x024, PIN_OUTPUT, 0) /* (D20) MCU_OSPI1_CSn0 */
+                       J721S2_WKUP_IOPAD(0x014, PIN_INPUT, 0) /* (D21) MCU_OSPI1_D0 */
+                       J721S2_WKUP_IOPAD(0x018, PIN_INPUT, 0) /* (G20) MCU_OSPI1_D1 */
+                       J721S2_WKUP_IOPAD(0x01c, PIN_INPUT, 0) /* (C20) MCU_OSPI1_D2 */
+                       J721S2_WKUP_IOPAD(0x020, PIN_INPUT, 0) /* (A20) MCU_OSPI1_D3 */
+               >;
+       };
+};
+
+&wkup_pmx2 {
+       mcu_cpsw_pins_default: mcu-cpsw-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x02c, PIN_INPUT, 0) /* (B22) MCU_RGMII1_RD0 */
+                       J721S2_WKUP_IOPAD(0x028, PIN_INPUT, 0) /* (B21) MCU_RGMII1_RD1 */
+                       J721S2_WKUP_IOPAD(0x024, PIN_INPUT, 0) /* (C22) MCU_RGMII1_RD2 */
+                       J721S2_WKUP_IOPAD(0x020, PIN_INPUT, 0) /* (D23) MCU_RGMII1_RD3 */
+                       J721S2_WKUP_IOPAD(0x01c, PIN_INPUT, 0) /* (D22) MCU_RGMII1_RXC */
+                       J721S2_WKUP_IOPAD(0x004, PIN_INPUT, 0) /* (E23) MCU_RGMII1_RX_CTL */
+                       J721S2_WKUP_IOPAD(0x014, PIN_OUTPUT, 0) /* (F23) MCU_RGMII1_TD0 */
+                       J721S2_WKUP_IOPAD(0x010, PIN_OUTPUT, 0) /* (G22) MCU_RGMII1_TD1 */
+                       J721S2_WKUP_IOPAD(0x00c, PIN_OUTPUT, 0) /* (E21) MCU_RGMII1_TD2 */
+                       J721S2_WKUP_IOPAD(0x008, PIN_OUTPUT, 0) /* (E22) MCU_RGMII1_TD3 */
+                       J721S2_WKUP_IOPAD(0x018, PIN_OUTPUT, 0) /* (F21) MCU_RGMII1_TXC */
+                       J721S2_WKUP_IOPAD(0x000, PIN_OUTPUT, 0) /* (F22) MCU_RGMII1_TX_CTL */
+               >;
+       };
+
+       mcu_i2c1_pins_default: mcu-i2c1-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x078, PIN_INPUT_PULLUP, 0) /* (F24) WKUP_GPIO0_8.MCU_I2C1_SCL */
+                       J721S2_WKUP_IOPAD(0x07c, PIN_INPUT_PULLUP, 0) /* (H26) WKUP_GPIO0_9.MCU_I2C1_SDA */
+               >;
+       };
+
+       mcu_mcan0_pins_default: mcu-mcan0-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x054, PIN_INPUT, 0) /* (E28) MCU_MCAN0_RX */
+                       J721S2_WKUP_IOPAD(0x050, PIN_OUTPUT, 0) /* (E27) MCU_MCAN0_TX */
+               >;
+       };
+
+       mcu_mdio_pins_default: mcu-mdio-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x034, PIN_OUTPUT, 0) /* (A21) MCU_MDIO0_MDC */
+                       J721S2_WKUP_IOPAD(0x030, PIN_INPUT, 0) /* (A22) MCU_MDIO0_MDIO */
+               >;
+       };
+
+       mcu_spi0_pins_default: mcu-spi0-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x038, PIN_INPUT, 0) /* (B27) MCU_SPI0_CLK */
+                       J721S2_WKUP_IOPAD(0x044, PIN_INPUT, 0) /* (B26) MCU_SPI0_CS0 */
+                       J721S2_WKUP_IOPAD(0x068, PIN_INPUT, 2) /* (C23) WKUP_GPIO0_4.MCU_SPI0_CS3 */
+                       J721S2_WKUP_IOPAD(0x03c, PIN_INPUT, 0) /* (D24) MCU_SPI0_D0 */
+                       J721S2_WKUP_IOPAD(0x040, PIN_INPUT, 0) /* (B25) MCU_SPI0_D1 */
+               >;
+       };
+
+       mcu_uart0_pins_default: mcu-uart0-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x090, PIN_INPUT, 0) /* (B24) WKUP_GPIO0_14.MCU_UART0_CTSn */
+                       J721S2_WKUP_IOPAD(0x094, PIN_OUTPUT, 0) /* (D25) WKUP_GPIO0_15.MCU_UART0_RTSn */
+                       J721S2_WKUP_IOPAD(0x08c, PIN_INPUT, 0) /* (C24) WKUP_GPIO0_13.MCU_UART0_RXD */
+                       J721S2_WKUP_IOPAD(0x088, PIN_OUTPUT, 0) /* (C25) WKUP_GPIO0_12.MCU_UART0_TXD */
+               >;
+       };
+
+       wkup_uart0_pins_default: wkup-uart0-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x048, PIN_INPUT, 0) /* (D28) WKUP_UART0_RXD */
+                       J721S2_WKUP_IOPAD(0x04c, PIN_OUTPUT, 0) /* (D27) WKUP_UART0_TXD */
+               >;
+               bootph-all;
+       };
+};
+
+&cpsw_port1 {
+       phy-mode = "rgmii-rxid";
+       phy-handle = <&phy0>;
+};
+
+&davinci_mdio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_mdio_pins_default>;
+
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+               ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,min-output-impedance;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+       };
+};
+
+&i2c_som_rtc {
+       trickle-resistor-ohms = <3000>;
+};
+
+&main_i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c2_pins_default>;
+       status = "okay";
+
+       exp1: gpio@20 {
+               compatible = "nxp,pca9672";
+               reg = <0x20>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-line-names = "HALF/nFULL_EN", "RS485/nRS232_EN", "MCU_ETH_nRESET", "",
+                               "PCIe_nRESET", "USB2.0-Hub_nRESET", "USB3.0-Hub_nRESET", "PEB_AV_BL_EN";
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       exp2: gpio@22 {
+               compatible = "ti,tca6424";
+               reg = <0x22>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               gpio-line-names = "RPI_GPIO4", "RPI_GPIO5", "RPI_GPIO6", "RPI_GPIO19",
+                               "RPI_GPIO20", "RPI_GPIO21", "RPI_GPIO22", "RPI_GPIO23",
+                               "RPI_GPIO24", "RPI_GPIO25", "RPI_GPIO26", "RPI_GPIO20",
+                               "LVDS_BL_nEN", "LVDS_REG_nEN", "CSI_CAM0_nRESET", "CSI_CAM1_nRESET",
+                               "CSI0_CTRL1", "CSI0_CTRL2", "CSI0_CTRL3", "CSI0_CTRL4",
+                               "CSI1_CTRL1", "CSI1_CTRL2", "CSI1_CTRL3", "CSI1_CTRL4";
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&main_gpio0_ioexp_intr_pins_default>;
+       };
+};
+
+/* CSI0 + RPI */
+&main_i2c4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c4_pins_default>;
+};
+
+/* CSI1 + PCIe */
+&main_i2c5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c5_pins_default>;
+};
+
+&main_mcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mcan1_pins_default>;
+       phys = <&transceiver1>;
+       status = "okay";
+};
+
+&main_mcan13 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mcan13_pins_default>;
+       phys = <&transceiver2>;
+       status = "okay";
+};
+
+&main_mcan16 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_mcan16_pins_default>;
+       phys = <&transceiver3>;
+       status = "okay";
+};
+
+/* SD-Card */
+&main_sdhci1 {
+       pinctrl-0 = <&main_mmc1_pins_default>;
+       pinctrl-names = "default";
+       disable-wp;
+       vmmc-supply = <&vcc_3v3>;
+       status = "okay";
+};
+
+&main_spi6 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_spi6_pins_default>;
+       cs-gpios = <&main_gpio0 55 GPIO_ACTIVE_LOW>;
+       ti,spi-num-cs = <1>;
+       ti,pindir-d0-out-d1-in;
+       status = "okay";
+
+       tpm@0 {
+               compatible = "infineon,slb9670", "tcg,tpm_tis-spi";
+               reg = <0>;
+               spi-max-frequency = <10000000>;
+       };
+};
+
+&main_uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart1_pins_default>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&main_uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart2_pins_default>;
+       status = "okay";
+};
+
+&main_uart8 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_uart8_pins_default>;
+       /* Shared with TFA on this platform */
+       power-domains = <&k3_pds 357 TI_SCI_PD_SHARED>;
+       bootph-all;
+       status = "okay";
+};
+
+&mcu_cpsw {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_cpsw_pins_default>;
+};
+
+&mcu_i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_i2c1_pins_default>;
+       status = "okay";
+};
+
+&mcu_mcan0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_mcan0_pins_default>;
+       phys = <&transceiver4>;
+       status = "okay";
+};
+
+/* RPI-Header */
+&mcu_spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_spi0_pins_default>;
+};
+
+/* RPI-Header */
+&mcu_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_uart0_pins_default>;
+       uart-has-rtscts;
+       status = "okay";
+};
+
+&ospi1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_fss0_ospi1_pins_default>;
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               spi-tx-bus-width = <4>;
+               spi-rx-bus-width = <4>;
+               spi-max-frequency = <40000000>;
+               cdns,tshsl-ns = <60>;
+               cdns,tsd2d-ns = <60>;
+               cdns,tchsh-ns = <60>;
+               cdns,tslch-ns = <60>;
+               cdns,read-delay = <2>;
+       };
+};
+
+&pcie1_rc {
+       num-lanes = <1>;
+       phys = <&serdes0_pcie_link>;
+       phy-names = "pcie-phy";
+       reset-gpios = <&exp1 4 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+&serdes_ln_ctrl {
+       idle-states = <J721S2_SERDES0_LANE0_PCIE1_LANE0>, <J721S2_SERDES0_LANE1_USB>,
+                     <J721S2_SERDES0_LANE2_EDP_LANE2>, <J721S2_SERDES0_LANE3_EDP_LANE3>;
+};
+
+&serdes_refclk {
+       clock-frequency = <100000000>;
+};
+
+&serdes0 {
+       status = "okay";
+
+       serdes0_pcie_link: phy@0 {
+               reg = <0>;
+               cdns,num-lanes = <1>;
+               #phy-cells = <0>;
+               resets = <&serdes_wiz0 1>;
+               cdns,phy-type = <PHY_TYPE_PCIE>;
+       };
+
+       serdes0_usb_link: phy@1 {
+               reg = <1>;
+               cdns,num-lanes = <1>;
+               #phy-cells = <0>;
+               resets = <&serdes_wiz0 2>;
+               cdns,phy-type = <PHY_TYPE_USB3>;
+       };
+};
+
+&tscadc0 {
+       status = "okay";
+
+       adc {
+               ti,adc-channels = <0 1 2 3 4 5 6 7>;
+       };
+};
+
+&tscadc1 {
+       status = "okay";
+
+       adc {
+               ti,adc-channels = <3 4 5 6 7>;
+       };
+};
+
+&usbss0 {
+       ti,vbus-divider;
+       status = "okay";
+};
+
+&usb0 {
+       dr_mode = "host";
+       phys = <&serdes0_usb_link>;
+       phy-names = "cdns3,usb3-phy";
+};
+
+&usb_serdes_mux {
+       idle-states = <1>; /* USB0 to SERDES lane 1 */
+};
+
+&wkup_i2c0 {
+       eeprom@57 {
+               compatible = "atmel,24c32";
+               reg = <0x57>;
+               pagesize = <32>;
+       };
+
+       led-controller@62 {
+               compatible = "nxp,pca9533";
+               reg = <0x62>;
+
+               led-1 {
+                       label = "user-led1";
+                       type = <PCA9532_TYPE_LED>;
+               };
+
+               led-2 {
+                       label = "user-led2";
+                       type = <PCA9532_TYPE_LED>;
+               };
+
+               led-3 {
+                       label = "user-led3";
+                       type = <PCA9532_TYPE_LED>;
+               };
+       };
+};
+
+/* Shared with TIFS */
+&wkup_uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&wkup_uart0_pins_default>;
+       bootph-all;
+       status = "reserved";
+};
diff --git a/src/arm64/ti/k3-am68-phycore-som.dtsi b/src/arm64/ti/k3-am68-phycore-som.dtsi
new file mode 100644 (file)
index 0000000..fd715fe
--- /dev/null
@@ -0,0 +1,601 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * Copyright (C) 2025 PHYTEC Messtechnik GmbH
+ * Author: Dominik Haller <d.haller@phytec.de>
+ *
+ * https://www.phytec.eu/en/produkte/system-on-modules/phycore-am68x-tda4x/
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/net/ti-dp83867.h>
+#include "k3-j721s2.dtsi"
+
+/ {
+       compatible = "phytec,am68-phycore-som", "ti,j721s2";
+       model = "PHYTEC phyCORE-AM68x";
+
+       aliases {
+               ethernet1 = &main_cpsw_port1;
+               mmc0 = &main_sdhci0;
+               rtc0 = &i2c_som_rtc;
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               /* 4GB RAM */
+               reg = <0x00000000 0x80000000 0x00000000 0x80000000>,
+                     <0x00000008 0x80000000 0x00000000 0x80000000>;
+               bootph-all;
+       };
+
+       reserved_memory: reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               /* global cma region */
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0x00 0x20000000>;
+                       linux,cma-default;
+               };
+
+               secure_ddr: optee@9e800000 {
+                       reg = <0x00 0x9e800000 0x00 0x01800000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa0000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core0_memory_region: r5f-memory@a0100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa0100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa1000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               mcu_r5fss0_core1_memory_region: r5f-memory@a1100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa1100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a2000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa2000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss0_core0_memory_region: r5f-memory@a2100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa2100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a3000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa3000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss0_core1_memory_region: r5f-memory@a3100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa3100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a4000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa4000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss1_core0_memory_region: r5f-memory@a4100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa4100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a5000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa5000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               main_r5fss1_core1_memory_region: r5f-memory@a5100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa5100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               c71_0_dma_memory_region: c71-dma-memory@a6000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa6000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               c71_0_memory_region: c71-memory@a6100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa6100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               c71_1_dma_memory_region: c71-dma-memory@a7000000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa7000000 0x00 0x100000>;
+                       no-map;
+               };
+
+               c71_1_memory_region: c71-memory@a7100000 {
+                       compatible = "shared-dma-pool";
+                       reg = <0x00 0xa7100000 0x00 0xf00000>;
+                       no-map;
+               };
+
+               rtos_ipc_memory_region: ipc-memories@a8000000 {
+                       reg = <0x00 0xa8000000 0x00 0x01c00000>;
+                       alignment = <0x1000>;
+                       no-map;
+               };
+       };
+
+       vdd_sd_dv: regulator-sd {
+               /* Output of TLV71033 */
+               compatible = "regulator-gpio";
+               regulator-name = "VDD_SD_DV";
+               pinctrl-names = "default";
+               pinctrl-0 = <&vdd_sd_dv_pins_default>;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               gpios = <&main_gpio0 1 GPIO_ACTIVE_HIGH>;
+               states = <3300000 0x0>,
+                        <1800000 0x1>;
+       };
+};
+
+&main_pmx0 {
+       main_cpsw_mdio_pins_default: main-cpsw-mdio-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x0c0, PIN_OUTPUT, 6) /* (T28) MCASP1_AXR0.MDIO0_MDC */
+                       J721S2_IOPAD(0x0bc, PIN_INPUT, 6) /* (V28) MCASP1_AFSX.MDIO0_MDIO */
+               >;
+       };
+
+       main_i2c0_pins_default: main-i2c0-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x0e0, PIN_INPUT_PULLUP, 0) /* (AH25) I2C0_SCL */
+                       J721S2_IOPAD(0x0e4, PIN_INPUT_PULLUP, 0) /* (AE24) I2C0_SDA */
+               >;
+       };
+
+       rgmii1_pins_default: rgmii1-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x0b8, PIN_INPUT, 6) /* (AA24) MCASP1_ACLKX.RGMII1_RD0 */
+                       J721S2_IOPAD(0x0a0, PIN_INPUT, 6) /* (AB25) MCASP0_AXR12.RGMII1_RD1 */
+                       J721S2_IOPAD(0x0a4, PIN_INPUT, 6) /* (T23) MCASP0_AXR13.RGMII1_RD2 */
+                       J721S2_IOPAD(0x0a8, PIN_INPUT, 6) /* (U24) MCASP0_AXR14.RGMII1_RD3 */
+                       J721S2_IOPAD(0x0b0, PIN_INPUT, 6) /* (AD26) MCASP1_AXR3.RGMII1_RXC */
+                       J721S2_IOPAD(0x0ac, PIN_INPUT, 6) /* (AC25) MCASP0_AXR15.RGMII1_RX_CTL */
+                       J721S2_IOPAD(0x08c, PIN_OUTPUT, 6) /* (T25) MCASP0_AXR7.RGMII1_TD0 */
+                       J721S2_IOPAD(0x090, PIN_OUTPUT, 6) /* (W24) MCASP0_AXR8.RGMII1_TD1 */
+                       J721S2_IOPAD(0x094, PIN_OUTPUT, 6) /* (AA25) MCASP0_AXR9.RGMII1_TD2 */
+                       J721S2_IOPAD(0x098, PIN_OUTPUT, 6) /* (V25) MCASP0_AXR10.RGMII1_TD3 */
+                       J721S2_IOPAD(0x0b4, PIN_OUTPUT, 6) /* (U25) MCASP1_AXR4.RGMII1_TXC */
+                       J721S2_IOPAD(0x09c, PIN_OUTPUT, 6) /* (T24) MCASP0_AXR11.RGMII1_TX_CTL */
+               >;
+       };
+
+       vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_IOPAD(0x004, PIN_OUTPUT, 7) /* (W25) MCAN12_TX.GPIO0_1 */
+               >;
+       };
+};
+
+&wkup_pmx0 {
+       mcu_fss0_ospi0_pins_default: mcu-fss0-ospi0-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x000, PIN_OUTPUT, 0) /* (D19) MCU_OSPI0_CLK */
+                       J721S2_WKUP_IOPAD(0x02c, PIN_OUTPUT, 0) /* (F15) MCU_OSPI0_CSn0 */
+                       J721S2_WKUP_IOPAD(0x00c, PIN_INPUT, 0) /* (C19) MCU_OSPI0_D0 */
+                       J721S2_WKUP_IOPAD(0x010, PIN_INPUT, 0) /* (F16) MCU_OSPI0_D1 */
+                       J721S2_WKUP_IOPAD(0x014, PIN_INPUT, 0) /* (G15) MCU_OSPI0_D2 */
+                       J721S2_WKUP_IOPAD(0x018, PIN_INPUT, 0) /* (F18) MCU_OSPI0_D3 */
+                       J721S2_WKUP_IOPAD(0x01c, PIN_INPUT, 0) /* (E19) MCU_OSPI0_D4 */
+                       J721S2_WKUP_IOPAD(0x020, PIN_INPUT, 0) /* (G19) MCU_OSPI0_D5 */
+                       J721S2_WKUP_IOPAD(0x024, PIN_INPUT, 0) /* (F19) MCU_OSPI0_D6 */
+                       J721S2_WKUP_IOPAD(0x028, PIN_INPUT, 0) /* (F20) MCU_OSPI0_D7 */
+                       J721S2_WKUP_IOPAD(0x008, PIN_INPUT, 0) /* (E18) MCU_OSPI0_DQS */
+               >;
+               bootph-all;
+       };
+};
+
+&wkup_pmx1 {
+       pmic_irq_pins_default: pmic-irq-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x028, PIN_INPUT, 7) /* (C21) MCU_OSPI1_CSn1.WKUP_GPIO0_39 */
+               >;
+       };
+};
+
+&wkup_pmx2 {
+       wkup_i2c0_pins_default: wkup-i2c0-default-pins {
+               pinctrl-single,pins = <
+                       J721S2_WKUP_IOPAD(0x098, PIN_INPUT_PULLUP, 0) /* (H24) WKUP_I2C0_SCL */
+                       J721S2_WKUP_IOPAD(0x09c, PIN_INPUT_PULLUP, 0) /* (H27) WKUP_I2C0_SDA */
+               >;
+               bootph-all;
+       };
+};
+
+&c71_0 {
+       mboxes = <&mailbox0_cluster4 &mbox_c71_0>;
+       memory-region = <&c71_0_dma_memory_region>,
+                       <&c71_0_memory_region>;
+       status = "okay";
+};
+
+&c71_1 {
+       mboxes = <&mailbox0_cluster4 &mbox_c71_1>;
+       memory-region = <&c71_1_dma_memory_region>,
+                       <&c71_1_memory_region>;
+       status = "okay";
+};
+
+&mailbox0_cluster0 {
+       interrupts = <436>;
+       status = "okay";
+
+       mbox_mcu_r5fss0_core0: mbox-mcu-r5fss0-core0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+
+       mbox_mcu_r5fss0_core1: mbox-mcu-r5fss0-core1 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
+};
+
+&mailbox0_cluster1 {
+       interrupts = <432>;
+       status = "okay";
+
+       mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+
+       mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
+};
+
+&mailbox0_cluster2 {
+       interrupts = <428>;
+       status = "okay";
+
+       mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+
+       mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
+};
+
+&mailbox0_cluster4 {
+       interrupts = <420>;
+       status = "okay";
+
+       mbox_c71_0: mbox-c71-0 {
+               ti,mbox-rx = <0 0 0>;
+               ti,mbox-tx = <1 0 0>;
+       };
+
+       mbox_c71_1: mbox-c71-1 {
+               ti,mbox-rx = <2 0 0>;
+               ti,mbox-tx = <3 0 0>;
+       };
+};
+
+&main_cpsw {
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmii1_pins_default>;
+       status = "okay";
+};
+
+&main_cpsw_mdio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_cpsw_mdio_pins_default>;
+       status = "okay";
+
+       phy1: ethernet-phy@0 {
+               reg = <0>;
+               ti,clk-output-sel = <DP83867_CLK_O_SEL_OFF>;
+               ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
+               ti,min-output-impedance;
+               ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
+       };
+};
+
+&main_cpsw_port1 {
+       phy-handle = <&phy1>;
+       phy-mode = "rgmii-rxid";
+       status = "okay";
+};
+
+&main_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_i2c0_pins_default>;
+
+       temperature-sensor@48 {
+               compatible = "ti,tmp102";
+               reg = <0x48>;
+       };
+
+       temperature-sensor@49 {
+               compatible = "ti,tmp102";
+               reg = <0x49>;
+       };
+
+       i2c_som_rtc: rtc@52 {
+               compatible = "microcrystal,rv3028";
+               reg = <0x52>;
+       };
+};
+
+&main_gpio0 {
+       status = "okay";
+};
+
+&main_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster1 &mbox_main_r5fss0_core0>;
+       memory-region = <&main_r5fss0_core0_dma_memory_region>,
+                       <&main_r5fss0_core0_memory_region>;
+};
+
+&main_r5fss0_core1 {
+       mboxes = <&mailbox0_cluster1 &mbox_main_r5fss0_core1>;
+       memory-region = <&main_r5fss0_core1_dma_memory_region>,
+                       <&main_r5fss0_core1_memory_region>;
+};
+
+&main_r5fss1_core0 {
+       mboxes = <&mailbox0_cluster2 &mbox_main_r5fss1_core0>;
+       memory-region = <&main_r5fss1_core0_dma_memory_region>,
+                       <&main_r5fss1_core0_memory_region>;
+};
+
+&main_r5fss1_core1 {
+       mboxes = <&mailbox0_cluster2 &mbox_main_r5fss1_core1>;
+       memory-region = <&main_r5fss1_core1_dma_memory_region>,
+                       <&main_r5fss1_core1_memory_region>;
+};
+
+/* eMMC */
+&main_sdhci0 {
+       non-removable;
+       ti,driver-strength-ohm = <50>;
+       bootph-all;
+       status = "okay";
+};
+
+/* SD card */
+&main_sdhci1 {
+       vqmmc-supply = <&vdd_sd_dv>;
+       bootph-all;
+};
+
+&main_r5fss0 {
+       ti,cluster-mode = <0>;
+};
+
+&main_r5fss1 {
+       ti,cluster-mode = <0>;
+};
+
+/* Timers are used by Remoteproc firmware */
+&main_timer0 {
+       status = "reserved";
+};
+
+&main_timer1 {
+       status = "reserved";
+};
+
+&main_timer2 {
+       status = "reserved";
+};
+
+&main_timer3 {
+       status = "reserved";
+};
+
+&main_timer4 {
+       status = "reserved";
+};
+
+&main_timer5 {
+       status = "reserved";
+};
+
+&mcu_r5fss0_core0 {
+       mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core0>;
+       memory-region = <&mcu_r5fss0_core0_dma_memory_region>,
+                       <&mcu_r5fss0_core0_memory_region>;
+};
+
+&mcu_r5fss0_core1 {
+       mboxes = <&mailbox0_cluster0 &mbox_mcu_r5fss0_core1>;
+       memory-region = <&mcu_r5fss0_core1_dma_memory_region>,
+                       <&mcu_r5fss0_core1_memory_region>;
+};
+
+&ospi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_fss0_ospi0_pins_default>;
+       status = "okay";
+
+       serial_flash: flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0x0>;
+               spi-tx-bus-width = <8>;
+               spi-rx-bus-width = <8>;
+               spi-max-frequency = <25000000>;
+               cdns,tshsl-ns = <60>;
+               cdns,tsd2d-ns = <60>;
+               cdns,tchsh-ns = <60>;
+               cdns,tslch-ns = <60>;
+               cdns,read-delay = <2>;
+               bootph-all;
+       };
+};
+
+&wkup_gpio0 {
+       status = "okay";
+};
+
+&wkup_i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&wkup_i2c0_pins_default>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       vdd_cpu_avs: regulator@40 {
+               compatible = "ti,tps62873";
+               reg = <0x40>;
+               regulator-name = "VDD_CPU_AVS";
+               regulator-min-microvolt = <600000>;
+               regulator-max-microvolt = <900000>;
+               regulator-boot-on;
+               regulator-always-on;
+               bootph-pre-ram;
+       };
+
+       pmic@48 {
+               compatible = "ti,tps6594-q1";
+               reg = <0x48>;
+               system-power-controller;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_irq_pins_default>;
+               interrupt-parent = <&wkup_gpio0>;
+               interrupts = <39 IRQ_TYPE_EDGE_FALLING>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               buck12-supply = <&vcc_3v3>;
+               buck3-supply = <&vcc_3v3>;
+               buck4-supply = <&vcc_3v3>;
+               buck5-supply = <&vcc_3v3>;
+               ldo1-supply = <&vcc_3v3>;
+               ldo2-supply = <&vcc_3v3>;
+               ldo3-supply = <&vcc_3v3>;
+               ldo4-supply = <&vcc_3v3>;
+               ti,primary-pmic;
+
+               regulators {
+                       bucka12: buck12 {
+                               regulator-name = "VDD_DDR_1V1";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               bootph-all;
+                       };
+
+                       bucka3: buck3 {
+                               regulator-name = "VDD_RAM_0V85";
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               bootph-all;
+                       };
+
+                       bucka4: buck4 {
+                               regulator-name = "VDD_IO_1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               bootph-all;
+                       };
+
+                       bucka5: buck5 {
+                               regulator-name = "VDD_MCU_0V85";
+                               regulator-min-microvolt = <850000>;
+                               regulator-max-microvolt = <850000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               bootph-all;
+                       };
+
+                       ldoa1: ldo1 {
+                               regulator-name = "VDD_MCUIO_1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               bootph-all;
+                       };
+
+                       ldoa2: ldo2 {
+                               regulator-name = "VDD_MCUIO_3V3";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               bootph-all;
+                       };
+
+                       ldoa3: ldo3 {
+                               regulator-name = "VDDA_DLL_0V8";
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               bootph-all;
+                       };
+
+                       ldoa4: ldo4 {
+                               regulator-name = "VDDA_MCU_1V8";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                               bootph-all;
+                       };
+               };
+       };
+
+       eeprom@50 {
+               compatible = "atmel,24c32";
+               reg = <0x50>;
+               pagesize = <32>;
+               bootph-all;
+       };
+
+       som_eeprom_opt: eeprom@51 {
+               compatible = "atmel,24c32";
+               reg = <0x51>;
+               pagesize = <32>;
+       };
+};
index 455736e378ccfe1d82dbdd470b15e17e639d389f..ba521d6611449c6f0b30b50c711057d160bd2091 100644 (file)
@@ -48,6 +48,6 @@
                dma-coherent;
                phys = <&serdes0_pcie_link>;
                phy-names = "pcie-phy";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x074>;
+               ti,syscon-pcie-ctrl = <&pcie1_ctrl 0x0>;
        };
 };
index 11522b36e0cece248571b27819c8a87e0ffe06e2..5fa70a874d7b4dcd07be9ae46fa0af7f9837d006 100644 (file)
                regulator-boot-on;
        };
 
+       vsys_5v0: regulator-vsys5v0 {
+               /* Output of LM61460 */
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vusb_main>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        vsys_3v3: regulator-vsys3v3 {
                /* Output of LM5141 */
                compatible = "regulator-fixed";
@@ -76,7 +87,7 @@
                regulator-min-microvolt = <1800000>;
                regulator-max-microvolt = <3300000>;
                regulator-boot-on;
-               vin-supply = <&vsys_3v3>;
+               vin-supply = <&vsys_5v0>;
                gpios = <&main_gpio0 49 GPIO_ACTIVE_HIGH>;
                states = <1800000 0x0>,
                         <3300000 0x1>;
index b85227052f97eab2ac22e95d30ec3f6bfde85c0d..f28375629739cbb76567a805d9655a1cd19d4d83 100644 (file)
        status = "okay";
        non-removable;
        ti,driver-strength-ohm = <50>;
-       disable-wp;
 };
 
 &main_sdhci1 {
index 3cc315a0e0844d632d463ca314fe382d0d042903..281076d905f346b068d2fc978f1e328f5b3d50f6 100644 (file)
@@ -48,6 +48,6 @@
                dma-coherent;
                phys = <&serdes0_pcie_link>;
                phy-names = "pcie-phy";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x4074>;
+               ti,syscon-pcie-ctrl = <&pcie1_ctrl 0x0>;
        };
 };
index 5ab510a0605fd43b8b9bc0b2128d17f2afd0e4f1..5ce5f0a3d6f5a06a9801d7c63c581fc4bfcaa47c 100644 (file)
                #size-cells = <1>;
                ranges = <0x00 0x00 0x00100000 0x1c000>;
 
+               pcie1_ctrl: pcie-ctrl@4074 {
+                       compatible = "ti,j784s4-pcie-ctrl", "syscon";
+                       reg = <0x4074 0x4>;
+               };
+
                serdes_ln_ctrl: mux-controller@4080 {
                        compatible = "reg-mux";
                        reg = <0x4080 0x20>;
                reg = <0x00 0x02910000 0x00 0x1000>,
                      <0x00 0x02917000 0x00 0x400>,
                      <0x00 0x0d800000 0x00 0x00800000>,
-                     <0x00 0x18000000 0x00 0x00001000>;
+                     <0x41 0x00000000 0x00 0x00001000>; /* ECAM (4 KB) */
                reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x4074>;
+               ti,syscon-pcie-ctrl = <&pcie1_ctrl 0x0>;
                max-link-speed = <3>;
                num-lanes = <4>;
                power-domains = <&k3_pds 240 TI_SCI_PD_EXCLUSIVE>;
                device-id = <0xb00f>;
                msi-map = <0x0 &gic_its 0x0 0x10000>;
                dma-coherent;
-               ranges = <0x01000000 0x0 0x18001000  0x00 0x18001000  0x0 0x0010000>,
-                        <0x02000000 0x0 0x18011000  0x00 0x18011000  0x0 0x7fef000>;
+               ranges = <0x01000000 0x00 0x00001000 0x41 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
+                        <0x02000000 0x00 0x00101000 0x41 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
                dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
                status = "disabled";
        };
index 65a7e54f088418cce47f9cbab0dac22a1db7f67f..e4e5f941f20bd54bf6964ac1d44960096c15e330 100644 (file)
 #include "k3-pinctrl.h"
 
 &{/} {
-       hdmi-connector {
+       connector-hdmi {
                compatible = "hdmi-connector";
                label = "hdmi";
                type = "a";
                ddc-i2c-bus = <&main_i2c1>;
-               digital;
                /* P12 - HDMI_HPD */
                hpd-gpios = <&exp6 10 GPIO_ACTIVE_HIGH>;
 
                };
        };
 
-       dvi-bridge {
-               #address-cells = <1>;
-               #size-cells = <0>;
+       bridge-dvi {
                compatible = "ti,tfp410";
                /* P10 - HDMI_PDn */
                powerdown-gpios = <&exp6 8 GPIO_ACTIVE_LOW>;
+               ti,deskew = <0>;
 
-               port@0 {
-                       reg = <0>;
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
 
-                       tfp410_in: endpoint {
-                               remote-endpoint = <&dpi_out0>;
-                               pclk-sample = <1>;
+                               tfp410_in: endpoint {
+                                       remote-endpoint = <&dpi_out0>;
+                                       pclk-sample = <1>;
+                               };
                        };
-               };
 
-               port@1 {
-                       reg = <1>;
+                       port@1 {
+                               reg = <1>;
 
-                       tfp410_out: endpoint {
-                               remote-endpoint =
-                                       <&hdmi_connector_in>;
+                               tfp410_out: endpoint {
+                                       remote-endpoint =
+                                               <&hdmi_connector_in>;
+                               };
                        };
                };
        };
 &dss {
        pinctrl-names = "default";
        pinctrl-0 = <&dss_vout0_pins_default>;
-};
 
-&dss_ports {
-       #address-cells = <1>;
-       #size-cells = <0>;
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
 
-       port@1 {
-               reg = <1>;
+               port@0 {
+                       reg = <0>;
+                       dpi0_out: endpoint {
+                               remote-endpoint = <&dp0_in>;
+                       };
+               };
 
-               dpi_out0: endpoint {
-                       remote-endpoint = <&tfp410_in>;
+               port@1 {
+                       reg = <1>;
+                       dpi_out0: endpoint {
+                               remote-endpoint = <&tfp410_in>;
+                       };
                };
        };
 };
index 4421852161dd65b30df96ac2dc5a5b2dfb921991..45311438315f23f771b11b4f2b0b86eb054c0d59 100644 (file)
 &ospi1 {
        pinctrl-names = "default";
        pinctrl-0 = <&mcu_fss0_ospi1_pins_default>;
+       status = "okay";
 
        flash@0 {
                compatible = "jedec,spi-nor";
 };
 
 &dss_ports {
-       port {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       port@0 {
+               reg = <0>;
                dpi0_out: endpoint {
                        remote-endpoint = <&dp0_in>;
                };
index 4062709d65792f7f6d361c92a1030d1c6749e295..a8a502a6207f668e81889c2e55bc892d869e28fc 100644 (file)
@@ -38,7 +38,7 @@
                reg-names = "intd_cfg", "user_cfg", "reg", "mem";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
-               ti,syscon-pcie-ctrl = <&scm_conf 0x4070>;
+               ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x0>;
                max-link-speed = <3>;
                num-lanes = <1>;
                power-domains = <&k3_pds 239 TI_SCI_PD_EXCLUSIVE>;
index a8cccdcf3e3b9a0843d3fe17fe6f8a9bdfee774c..436085157a69debd5607c341b2965f495f68765f 100644 (file)
@@ -48,6 +48,6 @@
                dma-coherent;
                phys = <&serdes1_pcie_link>;
                phy-names = "pcie-phy";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x4074>;
+               ti,syscon-pcie-ctrl = <&pcie1_ctrl 0x0>;
        };
 };
index af3d730154ac542d1b6cb53da602660dafa605cd..5bd0d36bf33ef84c0f7decd523d8d6be19111958 100644 (file)
                #size-cells = <1>;
                ranges = <0x0 0x0 0x00100000 0x1c000>;
 
+               pcie0_ctrl: pcie-ctrl@4070 {
+                       compatible = "ti,j784s4-pcie-ctrl", "syscon";
+                       reg = <0x4070 0x4>;
+               };
+
+               pcie1_ctrl: pcie-ctrl@4074 {
+                       compatible = "ti,j784s4-pcie-ctrl", "syscon";
+                       reg = <0x4074 0x4>;
+               };
+
+               pcie2_ctrl: pcie-ctrl@4078 {
+                       compatible = "ti,j784s4-pcie-ctrl", "syscon";
+                       reg = <0x4078 0x4>;
+               };
+
+               pcie3_ctrl: pcie-ctrl@407c {
+                       compatible = "ti,j784s4-pcie-ctrl", "syscon";
+                       reg = <0x407c 0x4>;
+               };
+
                serdes_ln_ctrl: mux-controller@4080 {
                        compatible = "reg-mux";
                        reg = <0x4080 0x50>;
                reg = <0x00 0x02900000 0x00 0x1000>,
                      <0x00 0x02907000 0x00 0x400>,
                      <0x00 0x0d000000 0x00 0x00800000>,
-                     <0x00 0x10000000 0x00 0x00001000>;
+                     <0x40 0x00000000 0x00 0x00001000>; /* ECAM (4 KB) */
                reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x4070>;
+               ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x0>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 239 TI_SCI_PD_EXCLUSIVE>;
                device-id = <0xb00d>;
                msi-map = <0x0 &gic_its 0x0 0x10000>;
                dma-coherent;
-               ranges = <0x01000000 0x0 0x10001000 0x0 0x10001000 0x0 0x0010000>,
-                        <0x02000000 0x0 0x10011000 0x0 0x10011000 0x0 0x7fef000>;
+               ranges = <0x01000000 0x00 0x00001000 0x40 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
+                        <0x02000000 0x00 0x00101000 0x40 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
                dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
                status = "disabled";
        };
                reg = <0x00 0x02910000 0x00 0x1000>,
                      <0x00 0x02917000 0x00 0x400>,
                      <0x00 0x0d800000 0x00 0x00800000>,
-                     <0x00 0x18000000 0x00 0x00001000>;
+                     <0x41 0x00000000 0x00 0x00001000>; /* ECAM (4 KB) */
                reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x4074>;
+               ti,syscon-pcie-ctrl = <&pcie1_ctrl 0x0>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 240 TI_SCI_PD_EXCLUSIVE>;
                device-id = <0xb00d>;
                msi-map = <0x0 &gic_its 0x10000 0x10000>;
                dma-coherent;
-               ranges = <0x01000000 0x0 0x18001000 0x0 0x18001000 0x0 0x0010000>,
-                        <0x02000000 0x0 0x18011000 0x0 0x18011000 0x0 0x7fef000>;
+               ranges = <0x01000000 0x00 0x00001000 0x41 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
+                        <0x02000000 0x00 0x00101000 0x41 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
                dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
                status = "disabled";
        };
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 342 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x4078>;
+               ti,syscon-pcie-ctrl = <&pcie2_ctrl 0x0>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 241 TI_SCI_PD_EXCLUSIVE>;
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 354 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x407c>;
+               ti,syscon-pcie-ctrl = <&pcie3_ctrl 0x0>;
                max-link-speed = <3>;
                num-lanes = <2>;
                power-domains = <&k3_pds 242 TI_SCI_PD_EXCLUSIVE>;
index 47bb5480b5b0064de76c06152e9687c10d1f626a..4eb3cffab0321d96526922ef57a3a545ebb6e075 100644 (file)
                #clock-cells = <0>;
                clock-frequency = <24000000>;
        };
+
+       reg_2p8v: regulator-2p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P8V";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vdd_sd_dv>;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vdd_sd_dv>;
+               regulator-always-on;
+       };
+
+       reg_1p2v: regulator-1p2v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P2V";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               vin-supply = <&vdd_sd_dv>;
+               regulator-always-on;
+       };
 };
 
 &csi_mux {
@@ -34,7 +61,9 @@
                reg = <0x10>;
 
                clocks = <&clk_imx219_fixed>;
-               clock-names = "xclk";
+               VANA-supply = <&reg_2p8v>;
+               VDIG-supply = <&reg_1p8v>;
+               VDDL-supply = <&reg_1p2v>;
 
                port {
                        csi2_cam0: endpoint {
@@ -56,7 +85,9 @@
                reg = <0x10>;
 
                clocks = <&clk_imx219_fixed>;
-               clock-names = "xclk";
+               VANA-supply = <&reg_2p8v>;
+               VDIG-supply = <&reg_1p8v>;
+               VDDL-supply = <&reg_1p2v>;
 
                port {
                        csi2_cam1: endpoint {
index 440ef57be2943caa778a877bb5133dbd882d6ed8..ffef3d1cfd5532262f551ab28cd39112616b5733 100644 (file)
                regulator-boot-on;
        };
 
+       vsys_5v0: fixedregulator-vsys5v0 {
+               /* Output of LM61460 */
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_5v0";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&vusb_main>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        vdd_mmc1: fixedregulator-sd {
                compatible = "regulator-fixed";
                pinctrl-names = "default";
                         <3300000 0x1>;
        };
 
+       vdd_sd_dv: gpio-regulator-TLV71033 {
+               compatible = "regulator-gpio";
+               pinctrl-names = "default";
+               pinctrl-0 = <&vdd_sd_dv_pins_default>;
+               regulator-name = "tlv71033";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               vin-supply = <&vsys_5v0>;
+               gpios = <&main_gpio0 118 GPIO_ACTIVE_HIGH>;
+               states = <1800000 0x0>,
+                        <3300000 0x1>;
+       };
+
        transceiver1: can-phy1 {
                compatible = "ti,tcan1042";
                #phy-cells = <0>;
                >;
        };
 
+       vdd_sd_dv_pins_default: vdd-sd-dv-default-pins {
+               pinctrl-single,pins = <
+                       J721E_IOPAD(0x1dc, PIN_OUTPUT, 7) /* (Y1) SPI1_CLK.GPIO0_118 */
+               >;
+       };
+
        wkup_uart0_pins_default: wkup-uart0-default-pins {
                pinctrl-single,pins = <
                        J721E_WKUP_IOPAD(0xa0, PIN_INPUT, 0) /* (J29) WKUP_UART0_RXD */
index a7f2f52f42f71b42005498cc5970727079d79b15..b6e22c24295104d4e4449d36116e014cd446b9ed 100644 (file)
                         <0x00 0x10000000 0x00 0x10000000 0x00 0x10000000>, /* PCIe DAT */
                         <0x00 0x64800000 0x00 0x64800000 0x00 0x00800000>, /* C71 */
                         <0x00 0x6f000000 0x00 0x6f000000 0x00 0x00310000>, /* A72 PERIPHBASE */
+                        <0x40 0x00000000 0x40 0x00000000 0x01 0x00000000>, /* PCIe0 DAT1 */
+                        <0x41 0x00000000 0x41 0x00000000 0x01 0x00000000>, /* PCIe1 DAT1 */
                         <0x44 0x00000000 0x44 0x00000000 0x00 0x08000000>, /* PCIe2 DAT */
                         <0x44 0x10000000 0x44 0x10000000 0x00 0x08000000>, /* PCIe3 DAT */
                         <0x4d 0x80800000 0x4d 0x80800000 0x00 0x00800000>, /* C66_0 */
index 5ff390915b75b938fbf568feac665778af13318d..8c2cd99cf2b42baddcb2b5fec6244741ba05f62f 100644 (file)
@@ -38,7 +38,7 @@
                reg-names = "intd_cfg", "user_cfg", "reg", "mem";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
-               ti,syscon-pcie-ctrl = <&scm_conf 0x074>;
+               ti,syscon-pcie-ctrl = <&pcie1_ctrl 0x0>;
                max-link-speed = <3>;
                num-lanes = <1>;
                power-domains = <&k3_pds 276 TI_SCI_PD_EXCLUSIVE>;
index 92bf48fdbeba45ecca8c854db5f72fd3666239c5..83cf0adb2cb71f854314534faf8fba813b1892a6 100644 (file)
                        #phy-cells = <1>;
                };
 
+               pcie1_ctrl: pcie-ctrl@74 {
+                       compatible = "ti,j784s4-pcie-ctrl", "syscon";
+                       reg = <0x74 0x4>;
+               };
+
                serdes_ln_ctrl: mux-controller@80 {
                        compatible = "reg-mux";
                        reg = <0x80 0x10>;
                reg = <0x00 0x02910000 0x00 0x1000>,
                      <0x00 0x02917000 0x00 0x400>,
                      <0x00 0x0d800000 0x00 0x800000>,
-                     <0x00 0x18000000 0x00 0x1000>;
+                     <0x41 0x00000000 0x00 0x1000>; /* ECAM (4 KB) */
                reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
                device_type = "pci";
-               ti,syscon-pcie-ctrl = <&scm_conf 0x074>;
+               ti,syscon-pcie-ctrl = <&pcie1_ctrl 0x0>;
                max-link-speed = <3>;
                num-lanes = <4>;
                power-domains = <&k3_pds 276 TI_SCI_PD_EXCLUSIVE>;
                device-id = <0xb013>;
                msi-map = <0x0 &gic_its 0x0 0x10000>;
                dma-coherent;
-               ranges = <0x01000000 0x0 0x18001000  0x00 0x18001000  0x0 0x0010000>,
-                        <0x02000000 0x0 0x18011000  0x00 0x18011000  0x0 0x7fef000>;
+               ranges = <0x01000000 0x00 0x00001000 0x41 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
+                        <0x02000000 0x00 0x00101000 0x41 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
                dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
                #interrupt-cells = <1>;
                interrupt-map-mask = <0 0 0 7>;
                /* reserved for MAIN_R5F1_1 */
                status = "reserved";
        };
+
+       gpu: gpu@4e20000000 {
+               compatible = "ti,j721s2-gpu", "img,img-bxs-4-64", "img,img-rogue";
+               reg = <0x4e 0x20000000 0x00 0x80000>;
+               clocks = <&k3_clks 130 1>;
+               clock-names = "core";
+               assigned-clocks = <&k3_clks 130 1>;
+               assigned-clock-rates = <800000000>;
+               interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+               power-domains = <&k3_pds 130 TI_SCI_PD_EXCLUSIVE>,
+                               <&k3_pds 373 TI_SCI_PD_EXCLUSIVE>;
+               power-domain-names = "a", "b";
+               dma-coherent;
+       };
 };
diff --git a/src/arm64/ti/k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtso b/src/arm64/ti/k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtso
new file mode 100644 (file)
index 0000000..4107ef8
--- /dev/null
@@ -0,0 +1,329 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * DT Overlay for 4 x RPi Camera V2.1 on J722S-EVM board.
+ *
+ * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
+ *
+ * Schematics: https://datasheets.raspberrypi.com/camera/camera-v2-schematics.pdf
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "k3-pinctrl.h"
+
+&main_pmx0 {
+       cam0_reset_pins_default: cam0-default-reset-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x03c, PIN_OUTPUT, 7) /* (R22) GPIO0_15 */
+               >;
+       };
+
+       cam1_reset_pins_default: cam1-default-reset-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x044, PIN_OUTPUT, 7) /* (R26) GPIO0_17 */
+               >;
+       };
+
+       cam2_reset_pins_default: cam2-default-reset-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x04c, PIN_OUTPUT, 7) /* (T25) GPIO0_19 */
+               >;
+       };
+
+       cam3_reset_pins_default: cam3-default-reset-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x054, PIN_OUTPUT, 7) /* (T21) GPIO0_21 */
+               >;
+       };
+};
+
+&{/} {
+       clk_imx219_fixed: clock-24000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+       };
+
+       reg_2p8v: regulator-2p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P8V";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vsys_3v3_exp>;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vsys_3v3_exp>;
+               regulator-always-on;
+       };
+
+       reg_1p2v: regulator-1p2v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P2V";
+               regulator-min-microvolt = <1200000>;
+               regulator-max-microvolt = <1200000>;
+               vin-supply = <&vsys_3v3_exp>;
+               regulator-always-on;
+       };
+};
+
+&csi01_mux {
+       idle-state = <1>;
+};
+
+&csi23_mux {
+       idle-state = <1>;
+};
+
+&pca9543_0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       /* CAM0 I2C */
+       i2c@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+
+               imx219_0: sensor@10 {
+                       compatible = "sony,imx219";
+                       reg = <0x10>;
+
+                       clocks = <&clk_imx219_fixed>;
+
+                       VANA-supply = <&reg_2p8v>;
+                       VDIG-supply = <&reg_1p8v>;
+                       VDDL-supply = <&reg_1p2v>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cam0_reset_pins_default>;
+
+                       reset-gpios = <&main_gpio0 15 GPIO_ACTIVE_HIGH>;
+
+                       port {
+                               csi2_cam0: endpoint {
+                                       remote-endpoint = <&csi2rx0_in_sensor>;
+                                       link-frequencies = /bits/ 64 <456000000>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                               };
+                       };
+               };
+       };
+
+       /* CAM1 I2C */
+       i2c@1 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <1>;
+
+               imx219_1: sensor@10 {
+                       compatible = "sony,imx219";
+                       reg = <0x10>;
+
+                       clocks = <&clk_imx219_fixed>;
+
+                       VANA-supply = <&reg_2p8v>;
+                       VDIG-supply = <&reg_1p8v>;
+                       VDDL-supply = <&reg_1p2v>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cam1_reset_pins_default>;
+
+                       reset-gpios = <&main_gpio0 17 GPIO_ACTIVE_HIGH>;
+
+                       port {
+                               csi2_cam1: endpoint {
+                                       remote-endpoint = <&csi2rx1_in_sensor>;
+                                       link-frequencies = /bits/ 64 <456000000>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                               };
+                       };
+               };
+       };
+};
+
+&pca9543_1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       /* CAM0 I2C */
+       i2c@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+
+               imx219_2: sensor@10 {
+                       compatible = "sony,imx219";
+                       reg = <0x10>;
+
+                       clocks = <&clk_imx219_fixed>;
+
+                       VANA-supply = <&reg_2p8v>;
+                       VDIG-supply = <&reg_1p8v>;
+                       VDDL-supply = <&reg_1p2v>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cam2_reset_pins_default>;
+
+                       reset-gpios = <&main_gpio0 19 GPIO_ACTIVE_HIGH>;
+
+                       port {
+                               csi2_cam2: endpoint {
+                                       remote-endpoint = <&csi2rx2_in_sensor>;
+                                       link-frequencies = /bits/ 64 <456000000>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                               };
+                       };
+               };
+       };
+
+       /* CAM1 I2C */
+       i2c@1 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <1>;
+
+               imx219_3: sensor@10 {
+                       compatible = "sony,imx219";
+                       reg = <0x10>;
+
+                       clocks = <&clk_imx219_fixed>;
+
+                       VANA-supply = <&reg_2p8v>;
+                       VDIG-supply = <&reg_1p8v>;
+                       VDDL-supply = <&reg_1p2v>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cam3_reset_pins_default>;
+
+                       reset-gpios = <&main_gpio0 21 GPIO_ACTIVE_HIGH>;
+
+                       port {
+                               csi2_cam3: endpoint {
+                                       remote-endpoint = <&csi2rx3_in_sensor>;
+                                       link-frequencies = /bits/ 64 <456000000>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                               };
+                       };
+               };
+       };
+};
+
+&cdns_csi2rx0 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               csi0_port0: port@0 {
+                       reg = <0>;
+                       status = "okay";
+
+                       csi2rx0_in_sensor: endpoint {
+                               remote-endpoint = <&csi2_cam0>;
+                               bus-type = <4>; /* CSI2 DPHY */
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&cdns_csi2rx1 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               csi1_port0: port@0 {
+                       reg = <0>;
+                       status = "okay";
+
+                       csi2rx1_in_sensor: endpoint {
+                               remote-endpoint = <&csi2_cam1>;
+                               bus-type = <4>; /* CSI2 DPHY */
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&cdns_csi2rx2 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               csi2_port0: port@0 {
+                       reg = <0>;
+                       status = "okay";
+
+                       csi2rx2_in_sensor: endpoint {
+                               remote-endpoint = <&csi2_cam2>;
+                               bus-type = <4>; /* CSI2 DPHY */
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&cdns_csi2rx3 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               csi3_port0: port@0 {
+                       reg = <0>;
+                       status = "okay";
+
+                       csi2rx3_in_sensor: endpoint {
+                               remote-endpoint = <&csi2_cam3>;
+                               bus-type = <4>; /* CSI2 DPHY */
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&ti_csi2rx0 {
+       status = "okay";
+};
+
+&dphy0 {
+       status = "okay";
+};
+
+&ti_csi2rx1 {
+       status = "okay";
+};
+
+&dphy1 {
+       status = "okay";
+};
+
+&ti_csi2rx2 {
+       status = "okay";
+};
+
+&dphy2 {
+       status = "okay";
+};
+
+&ti_csi2rx3 {
+       status = "okay";
+};
+
+&dphy3 {
+       status = "okay";
+};
diff --git a/src/arm64/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso b/src/arm64/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
new file mode 100644 (file)
index 0000000..575113d
--- /dev/null
@@ -0,0 +1,323 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * DT Overlay for 4 x TEVI OV5640 MIPI Camera module on J722S-EVM board.
+ *
+ * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "k3-pinctrl.h"
+
+&main_pmx0 {
+       cam0_reset_pins_default: cam0-default-reset-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x03c, PIN_OUTPUT, 7) /* (R22) GPIO0_15 */
+               >;
+       };
+
+       cam1_reset_pins_default: cam1-default-reset-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x044, PIN_OUTPUT, 7) /* (R26) GPIO0_17 */
+               >;
+       };
+
+       cam2_reset_pins_default: cam2-default-reset-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x04c, PIN_OUTPUT, 7) /* (T25) GPIO0_19 */
+               >;
+       };
+
+       cam3_reset_pins_default: cam3-default-reset-pins {
+               pinctrl-single,pins = <
+                       J722S_IOPAD(0x054, PIN_OUTPUT, 7) /* (T21) GPIO0_21 */
+               >;
+       };
+};
+
+&{/} {
+       clk_ov5640_fixed: clock-24000000 {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <24000000>;
+       };
+
+       reg_2p8v: regulator-2p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "2P8V";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               vin-supply = <&vsys_3v3_exp>;
+               regulator-always-on;
+       };
+
+       reg_1p8v: regulator-1p8v {
+               compatible = "regulator-fixed";
+               regulator-name = "1P8V";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vsys_3v3_exp>;
+               regulator-always-on;
+       };
+
+       reg_3p3v: regulator-3p3v {
+               compatible = "regulator-fixed";
+               regulator-name = "3P3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vsys_3v3_exp>;
+               regulator-always-on;
+       };
+};
+
+&csi01_mux {
+       idle-state = <1>;
+};
+
+&csi23_mux {
+       idle-state = <1>;
+};
+
+&pca9543_0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       /* CAM0 I2C */
+       i2c@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+
+               ov5640_0: camera@3c {
+                       compatible = "ovti,ov5640";
+                       reg = <0x3c>;
+                       clocks = <&clk_ov5640_fixed>;
+                       clock-names = "xclk";
+
+                       AVDD-supply = <&reg_2p8v>;
+                       DOVDD-supply = <&reg_1p8v>;
+                       DVDD-supply = <&reg_3p3v>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cam0_reset_pins_default>;
+
+                       reset-gpios = <&main_gpio0 15 GPIO_ACTIVE_HIGH>;
+
+                       port {
+                               csi2_cam0: endpoint {
+                                       remote-endpoint = <&csi2rx0_in_sensor>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                               };
+                       };
+               };
+       };
+
+       /* CAM1 I2C */
+       i2c@1 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <1>;
+
+               ov5640_1: camera@3c {
+                       compatible = "ovti,ov5640";
+                       reg = <0x3c>;
+                       clocks = <&clk_ov5640_fixed>;
+                       clock-names = "xclk";
+
+                       AVDD-supply = <&reg_2p8v>;
+                       DOVDD-supply = <&reg_1p8v>;
+                       DVDD-supply = <&reg_3p3v>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cam1_reset_pins_default>;
+
+                       reset-gpios = <&main_gpio0 17 GPIO_ACTIVE_HIGH>;
+
+                       port {
+                               csi2_cam1: endpoint {
+                                       remote-endpoint = <&csi2rx1_in_sensor>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                               };
+                       };
+               };
+       };
+};
+
+&pca9543_1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       /* CAM0 I2C */
+       i2c@0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0>;
+
+               ov5640_2: camera@3c {
+                       compatible = "ovti,ov5640";
+                       reg = <0x3c>;
+                       clocks = <&clk_ov5640_fixed>;
+                       clock-names = "xclk";
+
+                       AVDD-supply = <&reg_2p8v>;
+                       DOVDD-supply = <&reg_1p8v>;
+                       DVDD-supply = <&reg_3p3v>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cam2_reset_pins_default>;
+
+                       reset-gpios = <&main_gpio0 19 GPIO_ACTIVE_HIGH>;
+
+                       port {
+                               csi2_cam2: endpoint {
+                                       remote-endpoint = <&csi2rx2_in_sensor>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                               };
+                       };
+               };
+       };
+
+       /* CAM1 I2C */
+       i2c@1 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <1>;
+
+               ov5640_3: camera@3c {
+                       compatible = "ovti,ov5640";
+                       reg = <0x3c>;
+                       clocks = <&clk_ov5640_fixed>;
+                       clock-names = "xclk";
+
+                       AVDD-supply = <&reg_2p8v>;
+                       DOVDD-supply = <&reg_1p8v>;
+                       DVDD-supply = <&reg_3p3v>;
+
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&cam3_reset_pins_default>;
+
+                       reset-gpios = <&main_gpio0 21 GPIO_ACTIVE_HIGH>;
+
+                       port {
+                               csi2_cam3: endpoint {
+                                       remote-endpoint = <&csi2rx3_in_sensor>;
+                                       clock-lanes = <0>;
+                                       data-lanes = <1 2>;
+                               };
+                       };
+               };
+       };
+};
+
+&cdns_csi2rx0 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               csi0_port0: port@0 {
+                       reg = <0>;
+                       status = "okay";
+
+                       csi2rx0_in_sensor: endpoint {
+                               remote-endpoint = <&csi2_cam0>;
+                               bus-type = <4>; /* CSI2 DPHY */
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&cdns_csi2rx1 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               csi1_port0: port@0 {
+                       reg = <0>;
+                       status = "okay";
+
+                       csi2rx1_in_sensor: endpoint {
+                               remote-endpoint = <&csi2_cam1>;
+                               bus-type = <4>; /* CSI2 DPHY */
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&cdns_csi2rx2 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               csi2_port0: port@0 {
+                       reg = <0>;
+                       status = "okay";
+
+                       csi2rx2_in_sensor: endpoint {
+                               remote-endpoint = <&csi2_cam2>;
+                               bus-type = <4>; /* CSI2 DPHY */
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&cdns_csi2rx3 {
+       ports {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               csi3_port0: port@0 {
+                       reg = <0>;
+                       status = "okay";
+
+                       csi2rx3_in_sensor: endpoint {
+                               remote-endpoint = <&csi2_cam3>;
+                               bus-type = <4>; /* CSI2 DPHY */
+                               clock-lanes = <0>;
+                               data-lanes = <1 2>;
+                       };
+               };
+       };
+};
+
+&ti_csi2rx0 {
+       status = "okay";
+};
+
+&dphy0 {
+       status = "okay";
+};
+
+&ti_csi2rx1 {
+       status = "okay";
+};
+
+&dphy1 {
+       status = "okay";
+};
+
+&ti_csi2rx2 {
+       status = "okay";
+};
+
+&dphy2 {
+       status = "okay";
+};
+
+&ti_csi2rx3 {
+       status = "okay";
+};
+
+&dphy3 {
+       status = "okay";
+};
index 2127316f36a34baf2bccce4d073945a51cefcdd7..a47852fdca70c49fbd090194292a6b8c256c1f7d 100644 (file)
                regulator-boot-on;
        };
 
+       vsys_3v3: regulator-vsys3v3 {
+               /* output of LM5141-Q1 */
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vmain_pd>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        vdd_mmc1: regulator-mmc1 {
                /* TPS22918DBVR */
                compatible = "regulator-fixed";
                bootph-all;
        };
 
+       vsys_3v3_exp: regulator-TPS22990 {
+               /* output of TPS22990 */
+               compatible = "regulator-fixed";
+               regulator-name = "vsys_3v3_exp";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vsys_3v3>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
        vdd_sd_dv: regulator-TLV71033 {
                compatible = "regulator-gpio";
                regulator-name = "tlv71033";
                max-bitrate = <5000000>;
                standby-gpios = <&exp1 17 GPIO_ACTIVE_HIGH>;
        };
+
+       csi01_mux: mux-controller-0 {
+               compatible = "gpio-mux";
+               #mux-state-cells = <1>;
+               mux-gpios = <&exp1 6 GPIO_ACTIVE_HIGH>;
+               idle-state = <0>;
+       };
+
+       csi23_mux: mux-controller-1 {
+               compatible = "gpio-mux";
+               #mux-state-cells = <1>;
+               mux-gpios = <&exp1 7 GPIO_ACTIVE_HIGH>;
+               idle-state = <0>;
+       };
 };
 
 &main_pmx0 {
                      <J722S_SERDES1_LANE0_PCIE0_LANE0>;
 };
 
-&serdes0 {
+&serdes_wiz0 {
        status = "okay";
+};
+
+&serdes0 {
        serdes0_usb_link: phy@0 {
                reg = <0>;
                cdns,num-lanes = <1>;
        };
 };
 
-&serdes1 {
+&serdes_wiz1 {
        status = "okay";
+};
+
+&serdes1 {
        serdes1_pcie_link: phy@0 {
                reg = <0>;
                cdns,num-lanes = <1>;
index 6850f50530f12b6e231a9e0c9fd74def3fd8a541..78d7e800b311549848097a8febab63d0851be57b 100644 (file)
@@ -32,6 +32,8 @@
                assigned-clocks = <&k3_clks 279 1>;
                assigned-clock-parents = <&k3_clks 279 5>;
 
+               status = "disabled";
+
                serdes0: serdes@f000000 {
                        compatible = "ti,j721e-serdes-10g";
                        reg = <0x0f000000 0x00010000>;
@@ -50,8 +52,6 @@
                        #address-cells = <1>;
                        #size-cells = <0>;
                        #clock-cells = <1>;
-
-                       status = "disabled"; /* Needs lane config */
                };
        };
 
@@ -70,6 +70,8 @@
                assigned-clocks = <&k3_clks 280 1>;
                assigned-clock-parents = <&k3_clks 280 5>;
 
+               status = "disabled";
+
                serdes1: serdes@f010000 {
                        compatible = "ti,j721e-serdes-10g";
                        reg = <0x0f010000 0x00010000>;
@@ -88,8 +90,6 @@
                        #address-cells = <1>;
                        #size-cells = <0>;
                        #clock-cells = <1>;
-
-                       status = "disabled"; /* Needs lane config */
                };
        };
 
                reg = <0x00 0x0f102000 0x00 0x1000>,
                      <0x00 0x0f100000 0x00 0x400>,
                      <0x00 0x0d000000 0x00 0x00800000>,
-                     <0x00 0x68000000 0x00 0x00001000>;
+                     <0x06 0x00000000 0x00 0x00001000>; /* ECAM (4 KB) */
                reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
-               ranges = <0x01000000 0x00 0x68001000  0x00 0x68001000  0x00 0x0010000>,
-                        <0x02000000 0x00 0x68011000  0x00 0x68011000  0x00 0x7fef000>;
+               ranges = <0x01000000 0x00 0x00001000 0x06 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
+                        <0x02000000 0x00 0x00101000 0x06 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
                dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 99 IRQ_TYPE_EDGE_RISING>;
index d5f8c85319235248c5b5a85418c6a5ddb38ff69a..424628c63c2dba9f7900978660684773ba9cf7c0 100644 (file)
@@ -24,7 +24,6 @@
 };
 
 &main_cpsw0 {
-       pinctrl-names = "default";
        status = "okay";
 };
 
index 2664f74a9c7a4dbf6625f12fe52ba4b57d5636c0..fa656b7b13a1d68af0cb0d95f67cee0b9c496023 100644 (file)
@@ -5,6 +5,9 @@
  * EVM Board Schematics(j784s4): https://www.ti.com/lit/zip/sprr458
  * EVM Board Schematics(j742s2): https://www.ti.com/lit/zip/SPAC001
  */
+
+#include <dt-bindings/phy/phy-cadence.h>
+
 / {
        chosen {
                stdout-path = "serial2:115200n8";
 
 &pcie1_rc {
        status = "okay";
+       clocks = <&k3_clks 333 0>, <&serdes0 CDNS_TORRENT_REFCLK_DRIVER>;
+       clock-names = "fck", "pcie_refclk";
        num-lanes = <2>;
        reset-gpios = <&exp1 2 GPIO_ACTIVE_HIGH>;
        phys = <&serdes0_pcie1_link>;
        phy-names = "pcie-phy";
+       ti,syscon-acspcie-proxy-ctrl = <&acspcie0_proxy_ctrl 0x1>;
 };
 
 &serdes1 {
diff --git a/src/arm64/ti/k3-j784s4-j742s2-evm-usb0-type-a.dtso b/src/arm64/ti/k3-j784s4-j742s2-evm-usb0-type-a.dtso
new file mode 100644 (file)
index 0000000..ba15d72
--- /dev/null
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/**
+ * DT Overlay for enabling USB0 instance of USB on J784S4 and J742S2 EVMs for
+ * Host Mode of operation with the Type-A Connector.
+ *
+ * J784S4 EVM Product Link: https://www.ti.com/tool/J784S4XEVM
+ * J742S2 EVM Product Link: https://www.ti.com/tool/J742S2XH01EVM
+ *
+ * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+&exp2 {
+       p12-hog {
+               /* P12 - USB2.0_MUX_SEL */
+               gpio-hog;
+               gpios = <12 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "USB2.0_MUX_SEL";
+       };
+};
+
+&usb0 {
+       dr_mode = "host";
+};
index 1944616ab3579a54b3221c67c6d8eb2d296751c2..363d68fec3879b96b345dcc5a82db0bb75d51265 100644 (file)
@@ -77,7 +77,7 @@
 
                serdes_ln_ctrl: mux-controller@4080 {
                        compatible = "reg-mux";
-                       reg = <0x00004080 0x30>;
+                       reg = <0x00004080 0x50>;
                        #mux-control-cells = <1>;
                        mux-reg-masks = <0x0 0x3>, <0x4 0x3>, /* SERDES0 lane0/1 select */
                                        <0x8 0x3>, <0xc 0x3>, /* SERDES0 lane2/3 select */
                        assigned-clock-parents = <&k3_clks 157 63>;
                        #clock-cells = <0>;
                };
+
+               acspcie0_proxy_ctrl: clock-controller@1a090 {
+                       compatible = "ti,j784s4-acspcie-proxy-ctrl", "syscon";
+                       reg = <0x1a090 0x4>;
+               };
        };
 
        main_ehrpwm0: pwm@3000000 {
                reg = <0x00 0x02900000 0x00 0x1000>,
                      <0x00 0x02907000 0x00 0x400>,
                      <0x00 0x0d000000 0x00 0x00800000>,
-                     <0x00 0x10000000 0x00 0x00001000>;
+                     <0x40 0x00000000 0x00 0x00001000>; /* ECAM (4 KB) */
                reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
                device-id = <0xb012>;
                msi-map = <0x0 &gic_its 0x0 0x10000>;
                dma-coherent;
-               ranges = <0x01000000 0x0 0x10001000 0x0 0x10001000 0x0 0x0010000>,
-                        <0x02000000 0x0 0x10011000 0x0 0x10011000 0x0 0x7fef000>;
+               ranges = <0x01000000 0x00 0x00001000 0x40 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
+                        <0x02000000 0x00 0x00101000 0x40 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
                dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
                status = "disabled";
        };
                reg = <0x00 0x02910000 0x00 0x1000>,
                      <0x00 0x02917000 0x00 0x400>,
                      <0x00 0x0d800000 0x00 0x00800000>,
-                     <0x00 0x18000000 0x00 0x00001000>;
+                     <0x41 0x00000000 0x00 0x00001000>; /* ECAM (4 KB) */
                reg-names = "intd_cfg", "user_cfg", "reg", "cfg";
                interrupt-names = "link_state";
                interrupts = <GIC_SPI 330 IRQ_TYPE_EDGE_RISING>;
                device-id = <0xb012>;
                msi-map = <0x0 &gic_its 0x10000 0x10000>;
                dma-coherent;
-               ranges = <0x01000000 0x0 0x18001000  0x00 0x18001000  0x0 0x0010000>,
-                        <0x02000000 0x0 0x18011000  0x00 0x18011000  0x0 0x7fef000>;
+               ranges = <0x01000000 0x00 0x00001000 0x41 0x00001000 0x00 0x00100000>, /* IO (1 MB) */
+                        <0x02000000 0x00 0x00101000 0x41 0x00101000 0x00 0xffeff000>; /* 32-bit Non-Prefetchable MEM (4 GB - 1 MB - 4 KB) */
                dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x10000 0x0>;
                status = "disabled";
        };
index 3b38ff8853a7d935d5d8cd42118fa08fda6529b0..760c60eebb896c103abf98d2641e429757140efb 100644 (file)
                        interrupts = <3>;
                };
 
+               pwm@1ff5c000 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c000 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c010 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c010 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c020 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c020 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c030 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c030 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c040 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c040 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c050 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c050 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c060 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c060 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c070 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c070 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c080 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c080 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c090 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c090 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c0a0 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c0a0 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c0b0 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c0b0 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c0c0 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c0c0 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c0d0 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c0d0 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c0e0 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c0e0 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1ff5c0f0 {
+                       compatible = "loongson,ls2k0500-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1ff5c0f0 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
                gmac0: ethernet@1f020000 {
                        compatible = "snps,dwmac-3.70a";
                        reg = <0x0 0x1f020000 0x0 0x10000>;
index 3514ea78f525651050f58765f9606fb675e3daac..78ea995abf1c6570f6c4086aaca7e248b006c08a 100644 (file)
@@ -5,6 +5,7 @@
 
 /dts-v1/;
 
+#include "dt-bindings/thermal/thermal.h"
 #include "loongson-2k1000.dtsi"
 
 / {
                        linux,cma-default;
                };
        };
+
+       fan0: pwm-fan {
+               compatible = "pwm-fan";
+               cooling-levels = <255 153 85 25>;
+               pwms = <&pwm1 0 100000 0>;
+               #cooling-cells = <2>;
+       };
 };
 
 &gmac0 {
        #size-cells = <0>;
 };
 
+&pwm1 {
+       status = "okay";
+
+       pinctrl-0 = <&pwm1_pins_default>;
+       pinctrl-names = "default";
+};
+
+&cpu_thermal {
+       cooling-maps {
+               map0 {
+                       trip = <&cpu_alert>;
+                       cooling-device = <&fan0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+               };
+       };
+};
+
 &ehci0 {
        status = "okay";
 };
index 8dff2aa5241717b0fb2a31637bd5f6a56c8ea902..1da3beb00f0ec1d672d3c3c68d71faf6ee9d2079 100644 (file)
@@ -68,7 +68,7 @@
        };
 
        thermal-zones {
-               cpu-thermal {
+               cpu_thermal: cpu-thermal {
                        polling-delay-passive = <1000>;
                        polling-delay = <5000>;
                        thermal-sensors = <&tsensor 0>;
                        status = "disabled";
                };
 
+               pwm@1fe22000 {
+                       compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1fe22000 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm1: pwm@1fe22010 {
+                       compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1fe22010 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1fe22020 {
+                       compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1fe22020 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@1fe22030 {
+                       compatible = "loongson,ls2k1000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x1fe22030 0x0 0x10>;
+                       interrupt-parent = <&liointc0>;
+                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_APB_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
                pmc: power-management@1fe27000 {
                        compatible = "loongson,ls2k1000-pmc", "loongson,ls2k0500-pmc", "syscon";
                        reg = <0x0 0x1fe27000 0x0 0x58>;
index b4ff55a33e90b993bc58c618760c67b81b0b021e..9e0411f2754c9b5d77610089bfd094dcbebc04a0 100644 (file)
                        interrupt-parent = <&eiointc>;
                };
 
+               pwm@100a0000 {
+                       compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x100a0000 0x0 0x10>;
+                       interrupt-parent = <&pic>;
+                       interrupts = <24 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_MISC_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@100a0100 {
+                       compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x100a0100 0x0 0x10>;
+                       interrupt-parent = <&pic>;
+                       interrupts = <25 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_MISC_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@100a0200 {
+                       compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x100a0200 0x0 0x10>;
+                       interrupt-parent = <&pic>;
+                       interrupts = <26 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_MISC_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@100a0300 {
+                       compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x100a0300 0x0 0x10>;
+                       interrupt-parent = <&pic>;
+                       interrupts = <27 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_MISC_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@100a0400 {
+                       compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x100a0400 0x0 0x10>;
+                       interrupt-parent = <&pic>;
+                       interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_MISC_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pwm@100a0500 {
+                       compatible = "loongson,ls2k2000-pwm", "loongson,ls7a-pwm";
+                       reg = <0x0 0x100a0500 0x0 0x10>;
+                       interrupt-parent = <&pic>;
+                       interrupts = <39 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk LOONGSON2_MISC_CLK>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
                rtc0: rtc@100d0100 {
                        compatible = "loongson,ls2k2000-rtc", "loongson,ls7a-rtc";
                        reg = <0x0 0x100d0100 0x0 0x100>;
diff --git a/src/mips/econet/en751221.dtsi b/src/mips/econet/en751221.dtsi
new file mode 100644 (file)
index 0000000..66197e7
--- /dev/null
@@ -0,0 +1,67 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/dts-v1/;
+
+/ {
+       compatible = "econet,en751221";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       hpt_clock: clock {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <200000000>;  /* 200 MHz */
+       };
+
+       cpus: cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "mips,mips24KEc";
+                       reg = <0>;
+               };
+       };
+
+       cpuintc: interrupt-controller {
+               compatible = "mti,cpu-interrupt-controller";
+               interrupt-controller;
+               #address-cells = <0>;
+               #interrupt-cells = <1>;
+       };
+
+       intc: interrupt-controller@1fb40000 {
+               compatible = "econet,en751221-intc";
+               reg = <0x1fb40000 0x100>;
+               interrupt-parent = <&cpuintc>;
+               interrupts = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <1>;
+               econet,shadow-interrupts = <7 2>, <8 3>, <13 12>, <30 29>;
+       };
+
+       uart: serial@1fbf0000 {
+               compatible = "ns16550";
+               reg = <0x1fbf0000 0x30>;
+               reg-io-width = <4>;
+               reg-shift = <2>;
+               interrupt-parent = <&intc>;
+               interrupts = <0>;
+               /*
+                * Conversion of baud rate to clock frequency requires a
+                * computation that is not in the ns16550 driver, so this
+                * uart is fixed at 115200 baud.
+                */
+               clock-frequency = <1843200>;
+       };
+
+       timer_hpt: timer@1fbf0400 {
+               compatible = "econet,en751221-timer";
+               reg = <0x1fbf0400 0x100>;
+
+               interrupt-parent = <&intc>;
+               interrupts = <30>;
+               clocks = <&hpt_clock>;
+       };
+};
diff --git a/src/mips/econet/en751221_smartfiber_xp8421-b.dts b/src/mips/econet/en751221_smartfiber_xp8421-b.dts
new file mode 100644 (file)
index 0000000..8223c5b
--- /dev/null
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+/dts-v1/;
+
+#include "en751221.dtsi"
+
+/ {
+       model = "SmartFiber XP8421-B";
+       compatible = "smartfiber,xp8421-b", "econet,en751221";
+
+       memory@0 {
+               device_type = "memory";
+               reg = <0x00000000 0x1c000000>;
+       };
+
+       chosen {
+               stdout-path = "/serial@1fbf0000:115200";
+               linux,usable-memory-range = <0x00020000 0x1bfe0000>;
+       };
+};
index c7ea4f1c0bb21f806610734521e9e425df4fa7ca..6c277ab83d4b94d838b851486a968df74866667f 100644 (file)
@@ -29,6 +29,7 @@
                compatible = "loongson,pch-msi-1.0";
                reg = <0 0x2ff00000 0 0x8>;
                interrupt-controller;
+               #interrupt-cells = <1>;
                msi-controller;
                loongson,msi-base-vec = <64>;
                loongson,msi-num-vecs = <64>;
index fdc721b414a88a12050497cd2ddf98ae2fbce035..feca35ba56a47adac0e2a906f4fe9c7a4e89cd4f 100644 (file)
                gpio-ranges = <&pic32_pinctrl 0 144 16>;
        };
 
-       sdhci: sdhci@1f8ec000 {
+       sdhci: mmc@1f8ec000 {
                compatible = "microchip,pic32mzda-sdhci";
                reg = <0x1f8ec000 0x100>;
                interrupts = <191 IRQ_TYPE_LEVEL_HIGH>;
index f2e57ea3a60ceaed8079a42b6af9b1e80785d4a7..101bab72a95f43c534a738facd0ecf8d81d2355a 100644 (file)
                        #size-cells = <0>;
                        status = "disabled";
                };
+
+               mdio_controller: mdio-controller@ca00 {
+                       compatible = "realtek,rtl9301-mdio";
+                       reg = <0xca00 0x200>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+
+                       mdio0: mdio-bus@0 {
+                               reg = <0>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+                       mdio1: mdio-bus@1 {
+                               reg = <1>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+                       mdio2: mdio-bus@2 {
+                               reg = <2>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+                       mdio3: mdio-bus@3 {
+                               reg = <3>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+               };
        };
 
        soc: soc@18000000 {
index c4e4d2a9b4606a689e3f9eefd1ca5bcf1aa3395f..b7eac4e56019eaa84d8afe70c639f2112defdd7d 100644 (file)
@@ -4,7 +4,7 @@
 / {
        #size-cells = <0x02>;
        #address-cells = <0x02>;
-       model-name = "microwatt";
+       model = "microwatt";
        compatible = "microwatt-soc";
 
        aliases {
index e09b37d7489d01bfd16a26e9786868f630fa0262..a89cb3139ca8c3d4f22e43838a4b7d2dd5109aa5 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 /dts-v1/;
+#include <dt-bindings/interrupt-controller/irq.h>
 
 / {
        compatible = "fsl,mpc8315erdb";
                        interrupt-parent = <&ipic>;
                        fsl,mpc8313-wakeup-timer = <&gtm1>;
                };
+
+               gpio: gpio-controller@c00 {
+                       compatible = "fsl,mpc8314-gpio";
+                       reg = <0xc00 0x100>;
+                       interrupts = <74 IRQ_TYPE_LEVEL_LOW>;
+                       interrupt-parent = <&ipic>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
        };
 
        pci0: pci@e0008500 {
index e0ddf8f602c79bc87253aff10925ad7edd08bf9c..a8bcb26f42700644a431958b5bff985bef3bd4c5 100644 (file)
        };
 
        l2cache: cache-controller@13400000 {
-               compatible = "andestech,ax45mp-cache", "cache";
+               compatible = "renesas,r9a07g043f-ax45mp-cache", "andestech,ax45mp-cache",
+                            "cache";
                reg = <0x0 0x13400000 0x0 0x100000>;
                interrupts = <SOC_PERIPHERAL_IRQ(476) IRQ_TYPE_LEVEL_HIGH>;
                cache-size = <0x40000>;
index aa1f5df100f0743a923269d48ab142a2cf433719..90de978f69c1923158ebd93c47030c846b80be63 100644 (file)
@@ -3,8 +3,11 @@
  * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
  */
 
+#define SOC_PERIPHERAL_IRQ(nr) ((nr) + 16)
+
 #include <dt-bindings/pinctrl/pinctrl-cv1800b.h>
-#include "cv18xx.dtsi"
+#include "cv180x-cpus.dtsi"
+#include "cv180x.dtsi"
 
 / {
        compatible = "sophgo,cv1800b";
        };
 
        soc {
+               interrupt-parent = <&plic>;
+               dma-noncoherent;
+
                pinctrl: pinctrl@3001000 {
                        compatible = "sophgo,cv1800b-pinctrl";
                        reg = <0x03001000 0x1000>,
                              <0x05027000 0x1000>;
                        reg-names = "sys", "rtc";
                };
-       };
-};
 
-&plic {
-       compatible = "sophgo,cv1800b-plic", "thead,c900-plic";
-};
+               clk: clock-controller@3002000 {
+                       compatible = "sophgo,cv1800b-clk";
+                       reg = <0x03002000 0x1000>;
+                       clocks = <&osc>;
+                       #clock-cells = <1>;
+               };
 
-&clint {
-       compatible = "sophgo,cv1800b-clint", "thead,c900-clint";
-};
+               plic: interrupt-controller@70000000 {
+                       compatible = "sophgo,cv1800b-plic", "thead,c900-plic";
+                       reg = <0x70000000 0x4000000>;
+                       interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>;
+                       interrupt-controller;
+                       #address-cells = <0>;
+                       #interrupt-cells = <2>;
+                       riscv,ndev = <101>;
+               };
 
-&clk {
-       compatible = "sophgo,cv1800-clk";
+               clint: timer@74000000 {
+                       compatible = "sophgo,cv1800b-clint", "thead,c900-clint";
+                       reg = <0x74000000 0x10000>;
+                       interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>;
+               };
+       };
 };
diff --git a/src/riscv/sophgo/cv180x-cpus.dtsi b/src/riscv/sophgo/cv180x-cpus.dtsi
new file mode 100644 (file)
index 0000000..93fd9e4
--- /dev/null
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
+ * Copyright (C) 2023 Inochi Amaoto <inochiama@outlook.com>
+ */
+
+/ {
+       cpus: cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               timebase-frequency = <25000000>;
+
+               cpu0: cpu@0 {
+                       compatible = "thead,c906", "riscv";
+                       device_type = "cpu";
+                       reg = <0>;
+                       d-cache-block-size = <64>;
+                       d-cache-sets = <512>;
+                       d-cache-size = <65536>;
+                       i-cache-block-size = <64>;
+                       i-cache-sets = <128>;
+                       i-cache-size = <32768>;
+                       mmu-type = "riscv,sv39";
+                       riscv,isa = "rv64imafdc";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
+                                              "zifencei", "zihpm";
+
+                       cpu0_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+       };
+};
similarity index 75%
rename from src/riscv/sophgo/cv18xx.dtsi
rename to src/riscv/sophgo/cv180x.dtsi
index 58cd546392e056a3bbdf9c27a73c050de1060fba..ed06c3609fb2236c1e4c29f4b097adabd5d5fbff 100644 (file)
        #address-cells = <1>;
        #size-cells = <1>;
 
-       cpus: cpus {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               timebase-frequency = <25000000>;
-
-               cpu0: cpu@0 {
-                       compatible = "thead,c906", "riscv";
-                       device_type = "cpu";
-                       reg = <0>;
-                       d-cache-block-size = <64>;
-                       d-cache-sets = <512>;
-                       d-cache-size = <65536>;
-                       i-cache-block-size = <64>;
-                       i-cache-sets = <128>;
-                       i-cache-size = <32768>;
-                       mmu-type = "riscv,sv39";
-                       riscv,isa = "rv64imafdc";
-                       riscv,isa-base = "rv64i";
-                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
-                                              "zifencei", "zihpm";
-
-                       cpu0_intc: interrupt-controller {
-                               compatible = "riscv,cpu-intc";
-                               interrupt-controller;
-                               #interrupt-cells = <1>;
-                       };
-               };
-       };
-
        osc: oscillator {
                compatible = "fixed-clock";
                clock-output-names = "osc_25m";
 
        soc {
                compatible = "simple-bus";
-               interrupt-parent = <&plic>;
                #address-cells = <1>;
                #size-cells = <1>;
-               dma-noncoherent;
                ranges;
 
-               clk: clock-controller@3002000 {
-                       reg = <0x03002000 0x1000>;
-                       clocks = <&osc>;
-                       #clock-cells = <1>;
-               };
-
                gpio0: gpio@3020000 {
                        compatible = "snps,dw-apb-gpio";
                        reg = <0x3020000 0x1000>;
@@ -75,7 +38,7 @@
                                reg = <0>;
                                interrupt-controller;
                                #interrupt-cells = <2>;
-                               interrupts = <60 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <SOC_PERIPHERAL_IRQ(44) IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
 
@@ -93,7 +56,7 @@
                                reg = <0>;
                                interrupt-controller;
                                #interrupt-cells = <2>;
-                               interrupts = <61 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <SOC_PERIPHERAL_IRQ(45) IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
 
                                reg = <0>;
                                interrupt-controller;
                                #interrupt-cells = <2>;
-                               interrupts = <62 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <SOC_PERIPHERAL_IRQ(46) IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
 
                                reg = <0>;
                                interrupt-controller;
                                #interrupt-cells = <2>;
-                               interrupts = <63 IRQ_TYPE_LEVEL_HIGH>;
+                               interrupts = <SOC_PERIPHERAL_IRQ(47) IRQ_TYPE_LEVEL_HIGH>;
                        };
                };
 
                        compatible = "sophgo,cv1800b-saradc";
                        reg = <0x030f0000 0x1000>;
                        clocks = <&clk CLK_SARADC>;
-                       interrupts = <100 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(84) IRQ_TYPE_LEVEL_HIGH>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "disabled";
                        #size-cells = <0>;
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C0>;
                        clock-names = "ref", "pclk";
-                       interrupts = <49 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(33) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C1>;
                        clock-names = "ref", "pclk";
-                       interrupts = <50 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(34) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C2>;
                        clock-names = "ref", "pclk";
-                       interrupts = <51 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(35) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C3>;
                        clock-names = "ref", "pclk";
-                       interrupts = <52 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(36) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        clocks = <&clk CLK_I2C>, <&clk CLK_APB_I2C4>;
                        clock-names = "ref", "pclk";
-                       interrupts = <53 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(37) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                uart0: serial@4140000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x04140000 0x100>;
-                       interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(28) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_UART0>, <&clk CLK_APB_UART0>;
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                uart1: serial@4150000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x04150000 0x100>;
-                       interrupts = <45 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(29) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_UART1>, <&clk CLK_APB_UART1>;
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                uart2: serial@4160000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x04160000 0x100>;
-                       interrupts = <46 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(30) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_UART2>, <&clk CLK_APB_UART2>;
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                uart3: serial@4170000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x04170000 0x100>;
-                       interrupts = <47 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(31) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_UART3>, <&clk CLK_APB_UART3>;
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                        #size-cells = <0>;
                        clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI0>;
                        clock-names = "ssi_clk", "pclk";
-                       interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(38) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI1>;
                        clock-names = "ssi_clk", "pclk";
-                       interrupts = <55 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(39) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI2>;
                        clock-names = "ssi_clk", "pclk";
-                       interrupts = <56 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(40) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                        #size-cells = <0>;
                        clocks = <&clk CLK_SPI>, <&clk CLK_APB_SPI3>;
                        clock-names = "ssi_clk", "pclk";
-                       interrupts = <57 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(41) IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
 
                uart4: serial@41c0000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x041c0000 0x100>;
-                       interrupts = <48 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(32) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_UART4>, <&clk CLK_APB_UART4>;
                        clock-names = "baudclk", "apb_pclk";
                        reg-shift = <2>;
                sdhci0: mmc@4310000 {
                        compatible = "sophgo,cv1800b-dwcmshc";
                        reg = <0x4310000 0x1000>;
-                       interrupts = <36 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(20) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_AXI4_SD0>,
                                 <&clk CLK_SD0>;
                        clock-names = "core", "bus";
                sdhci1: mmc@4320000 {
                        compatible = "sophgo,cv1800b-dwcmshc";
                        reg = <0x4320000 0x1000>;
-                       interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(22) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_AXI4_SD1>,
                                 <&clk CLK_SD1>;
                        clock-names = "core", "bus";
                dmac: dma-controller@4330000 {
                        compatible = "snps,axi-dma-1.01a";
                        reg = <0x04330000 0x1000>;
-                       interrupts = <29 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(13) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_SDMA_AXI>, <&clk CLK_SDMA_AXI>;
                        clock-names = "core-clk", "cfgr-clk";
                        #dma-cells = <1>;
                        snps,data-width = <2>;
                        status = "disabled";
                };
-
-               plic: interrupt-controller@70000000 {
-                       reg = <0x70000000 0x4000000>;
-                       interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>;
-                       interrupt-controller;
-                       #address-cells = <0>;
-                       #interrupt-cells = <2>;
-                       riscv,ndev = <101>;
-               };
-
-               clint: timer@74000000 {
-                       reg = <0x74000000 0x10000>;
-                       interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>;
-               };
        };
 };
index 8a1b95c5116bf60eb3082c80b114acb17fc48257..9a2a314d3347f63ed2a1d9031e79931b3cee35ae 100644 (file)
@@ -3,9 +3,12 @@
  * Copyright (C) 2023 Inochi Amaoto <inochiama@outlook.com>
  */
 
+#define SOC_PERIPHERAL_IRQ(nr) ((nr) + 16)
+
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/pinctrl/pinctrl-cv1812h.h>
-#include "cv18xx.dtsi"
+#include "cv180x-cpus.dtsi"
+#include "cv180x.dtsi"
 #include "cv181x.dtsi"
 
 / {
        };
 
        soc {
+               interrupt-parent = <&plic>;
+               dma-noncoherent;
+
                pinctrl: pinctrl@3001000 {
                        compatible = "sophgo,cv1812h-pinctrl";
                        reg = <0x03001000 0x1000>,
                              <0x05027000 0x1000>;
                        reg-names = "sys", "rtc";
                };
-       };
-};
 
-&plic {
-       compatible = "sophgo,cv1812h-plic", "thead,c900-plic";
-};
+               clk: clock-controller@3002000 {
+                       compatible = "sophgo,cv1812h-clk";
+                       reg = <0x03002000 0x1000>;
+                       clocks = <&osc>;
+                       #clock-cells = <1>;
+               };
 
-&clint {
-       compatible = "sophgo,cv1812h-clint", "thead,c900-clint";
-};
+               plic: interrupt-controller@70000000 {
+                       compatible = "sophgo,cv1812h-plic", "thead,c900-plic";
+                       reg = <0x70000000 0x4000000>;
+                       interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>;
+                       interrupt-controller;
+                       #address-cells = <0>;
+                       #interrupt-cells = <2>;
+                       riscv,ndev = <101>;
+               };
 
-&clk {
-       compatible = "sophgo,cv1810-clk";
+               clint: timer@74000000 {
+                       compatible = "sophgo,cv1812h-clint", "thead,c900-clint";
+                       reg = <0x74000000 0x10000>;
+                       interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>;
+               };
+       };
 };
index 5fd14dd1b14fcacceb51c21a50d4a4651f97a1b6..bbdb30653e9a2bba57fc0a840c837e020587bff3 100644 (file)
@@ -11,7 +11,7 @@
                emmc: mmc@4300000 {
                        compatible = "sophgo,cv1800b-dwcmshc";
                        reg = <0x4300000 0x1000>;
-                       interrupts = <34 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupts = <SOC_PERIPHERAL_IRQ(18) IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&clk CLK_AXI4_EMMC>,
                                 <&clk CLK_EMMC>;
                        clock-names = "core", "bus";
index 7f79de33163c86d7000916ac4f1a406673ad482b..98001cce238e8d6c7d4774d2e440d0b1b260b015 100644 (file)
@@ -3,9 +3,12 @@
  * Copyright (C) 2024 Thomas Bonnefille <thomas.bonnefille@bootlin.com>
  */
 
+#define SOC_PERIPHERAL_IRQ(nr) ((nr) + 16)
+
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/pinctrl/pinctrl-sg2002.h>
-#include "cv18xx.dtsi"
+#include "cv180x-cpus.dtsi"
+#include "cv180x.dtsi"
 #include "cv181x.dtsi"
 
 / {
        };
 
        soc {
+               interrupt-parent = <&plic>;
+               dma-noncoherent;
+
                pinctrl: pinctrl@3001000 {
                        compatible = "sophgo,sg2002-pinctrl";
                        reg = <0x03001000 0x1000>,
                              <0x05027000 0x1000>;
                        reg-names = "sys", "rtc";
                };
-       };
-};
 
-&plic {
-       compatible = "sophgo,sg2002-plic", "thead,c900-plic";
-};
+               clk: clock-controller@3002000 {
+                       compatible = "sophgo,sg2002-clk", "sophgo,sg2000-clk";
+                       reg = <0x03002000 0x1000>;
+                       clocks = <&osc>;
+                       #clock-cells = <1>;
+               };
 
-&clint {
-       compatible = "sophgo,sg2002-clint", "thead,c900-clint";
-};
+               plic: interrupt-controller@70000000 {
+                       compatible = "sophgo,sg2002-plic", "thead,c900-plic";
+                       reg = <0x70000000 0x4000000>;
+                       interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>;
+                       interrupt-controller;
+                       #address-cells = <0>;
+                       #interrupt-cells = <2>;
+                       riscv,ndev = <101>;
+               };
 
-&clk {
-       compatible = "sophgo,sg2000-clk";
+               clint: timer@74000000 {
+                       compatible = "sophgo,sg2002-clint", "thead,c900-clint";
+                       reg = <0x74000000 0x10000>;
+                       interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>;
+               };
+       };
 };
 
 &sdhci0 {
index 34645a5f6038389cd00d4940947c6bb71d39ec6f..ef3a602172b1e5bf3dcf54a8cacdad5172b7f50e 100644 (file)
@@ -42,6 +42,8 @@
 };
 
 &emmc {
+       pinctrl-0 = <&emmc_cfg>;
+       pinctrl-names = "default";
        bus-width = <4>;
        no-sdio;
        no-sd;
@@ -51,6 +53,8 @@
 };
 
 &i2c1 {
+       pinctrl-0 = <&i2c1_cfg>;
+       pinctrl-names = "default";
        status = "okay";
 
        mcu: syscon@17 {
        };
 };
 
+&pinctrl {
+       emmc_cfg: sdhci-emmc-cfg {
+               sdhci-emmc-wp-pins {
+                       pinmux = <PINMUX(PIN_EMMC_WP, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+
+               sdhci-emmc-cd-pins {
+                       pinmux = <PINMUX(PIN_EMMC_CD, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+
+               sdhci-emmc-rst-pwr-pins {
+                       pinmux = <PINMUX(PIN_EMMC_RST, 0)>,
+                                <PINMUX(PIN_EMMC_PWR_EN, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+       };
+
+       i2c1_cfg: i2c1-cfg {
+               i2c1-pins {
+                       pinmux = <PINMUX(PIN_IIC1_SDA, 0)>,
+                                <PINMUX(PIN_IIC1_SCL, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+       };
+
+       sd_cfg: sdhci-sd-cfg {
+               sdhci-sd-cd-wp-pins {
+                       pinmux = <PINMUX(PIN_SDIO_CD, 0)>,
+                                <PINMUX(PIN_SDIO_WP, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+
+               sdhci-sd-rst-pwr-pins {
+                       pinmux = <PINMUX(PIN_SDIO_RST, 0)>,
+                                <PINMUX(PIN_SDIO_PWR_EN, 0)>;
+                       bias-disable;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-disable;
+               };
+       };
+
+       uart0_cfg: uart0-cfg {
+               uart0-rx-pins {
+                       pinmux = <PINMUX(PIN_UART0_TX, 0)>,
+                                <PINMUX(PIN_UART0_RX, 0)>;
+                       bias-pull-up;
+                       drive-strength-microamp = <26800>;
+                       input-schmitt-enable;
+               };
+       };
+};
+
 &sd {
+       pinctrl-0 = <&sd_cfg>;
+       pinctrl-names = "default";
        bus-width = <4>;
        no-sdio;
        no-mmc;
 };
 
 &uart0 {
+       pinctrl-0 = <&uart0_cfg>;
+       pinctrl-names = "default";
        status = "okay";
 };
 
index aa8b7fcc125d71eec12b09493964d90f5dfed27c..85636d1798f11804546ed8606595ace1b4cb2a2f 100644 (file)
@@ -8,6 +8,7 @@
 #include <dt-bindings/clock/sophgo,sg2042-pll.h>
 #include <dt-bindings/clock/sophgo,sg2042-rpgate.h>
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/pinctrl-sg2042.h>
 #include <dt-bindings/reset/sophgo,sg2042-reset.h>
 
 #include "sg2042-cpus.dtsi"
                        #clock-cells = <1>;
                };
 
+               pinctrl: pinctrl@7030011000 {
+                       compatible = "sophgo,sg2042-pinctrl";
+                       reg = <0x70 0x30011000 0x0 0x1000>;
+               };
+
                clkgen: clock-controller@7030012000 {
                        compatible = "sophgo,sg2042-clkgen";
                        reg = <0x70 0x30012000 0x0 0x1000>;
                        status = "disabled";
                };
 
+               spi0: spi@7040004000 {
+                       compatible = "sophgo,sg2042-spi", "snps,dw-apb-ssi";
+                       reg = <0x70 0x40004000 0x00 0x1000>;
+                       clocks = <&clkgen GATE_CLK_APB_SPI>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <110 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       num-cs = <2>;
+                       resets = <&rstgen RST_SPI0>;
+                       status = "disabled";
+               };
+
+               spi1: spi@7040005000 {
+                       compatible = "sophgo,sg2042-spi", "snps,dw-apb-ssi";
+                       reg = <0x70 0x40005000 0x00 0x1000>;
+                       clocks = <&clkgen GATE_CLK_APB_SPI>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <111 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       num-cs = <2>;
+                       resets = <&rstgen RST_SPI1>;
+                       status = "disabled";
+               };
+
                emmc: mmc@704002a000 {
                        compatible = "sophgo,sg2042-dwcmshc";
                        reg = <0x70 0x4002a000 0x0 0x1000>;
diff --git a/src/riscv/sophgo/sg2044-cpus.dtsi b/src/riscv/sophgo/sg2044-cpus.dtsi
new file mode 100644 (file)
index 0000000..2a42670
--- /dev/null
@@ -0,0 +1,3002 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com>
+ */
+
+/ {
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               timebase-frequency = <50000000>;
+
+               cpu0: cpu@0 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <0>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache0>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu0_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu1: cpu@1 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <1>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache0>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu1_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu2: cpu@2 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <2>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache0>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu2_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu3: cpu@3 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <3>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache0>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu3_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu4: cpu@4 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <4>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache1>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu4_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu5: cpu@5 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <5>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache1>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu5_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu6: cpu@6 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <6>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache1>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu6_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu7: cpu@7 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <7>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache1>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu7_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu8: cpu@8 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <8>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache2>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu8_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu9: cpu@9 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <9>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache2>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu9_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu10: cpu@10 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <10>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache2>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu10_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu11: cpu@11 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <11>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache2>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu11_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu12: cpu@12 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <12>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache3>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu12_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu13: cpu@13 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <13>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache3>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu13_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu14: cpu@14 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <14>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache3>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu14_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu15: cpu@15 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <15>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache3>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu15_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu16: cpu@16 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <16>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache4>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu16_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu17: cpu@17 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <17>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache4>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu17_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu18: cpu@18 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <18>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache4>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu18_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu19: cpu@19 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <19>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache4>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu19_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu20: cpu@20 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <20>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache5>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu20_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu21: cpu@21 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <21>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache5>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu21_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu22: cpu@22 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <22>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache5>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu22_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu23: cpu@23 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <23>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache5>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu23_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu24: cpu@24 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <24>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache6>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu24_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu25: cpu@25 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <25>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache6>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu25_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu26: cpu@26 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <26>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache6>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu26_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu27: cpu@27 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <27>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache6>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu27_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu28: cpu@28 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <28>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache7>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu28_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu29: cpu@29 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <29>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache7>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu29_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu30: cpu@30 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <30>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache7>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu30_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu31: cpu@31 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <31>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache7>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu31_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu32: cpu@32 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <32>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache8>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu32_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu33: cpu@33 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <33>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache8>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu33_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu34: cpu@34 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <34>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache8>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu34_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu35: cpu@35 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <35>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache8>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu35_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu36: cpu@36 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <36>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache9>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu36_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu37: cpu@37 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <37>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache9>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu37_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu38: cpu@38 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <38>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache9>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu38_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu39: cpu@39 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <39>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache9>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu39_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu40: cpu@40 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <40>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache10>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu40_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu41: cpu@41 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <41>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache10>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu41_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu42: cpu@42 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <42>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache10>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu42_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu43: cpu@43 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <43>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache10>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu43_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu44: cpu@44 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <44>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache11>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu44_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu45: cpu@45 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <45>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache11>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu45_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu46: cpu@46 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <46>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache11>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu46_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu47: cpu@47 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <47>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache11>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu47_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu48: cpu@48 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <48>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache12>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu48_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu49: cpu@49 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <49>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache12>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu49_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu50: cpu@50 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <50>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache12>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu50_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu51: cpu@51 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <51>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache12>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu51_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu52: cpu@52 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <52>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache13>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu52_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu53: cpu@53 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <53>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache13>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu53_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu54: cpu@54 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <54>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache13>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu54_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu55: cpu@55 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <55>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache13>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu55_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu56: cpu@56 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <56>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache14>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu56_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu57: cpu@57 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <57>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache14>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu57_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu58: cpu@58 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <58>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache14>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu58_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu59: cpu@59 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <59>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache14>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu59_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu60: cpu@60 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <60>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache15>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu60_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu61: cpu@61 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <61>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache15>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu61_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu62: cpu@62 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <62>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache15>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu62_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu63: cpu@63 {
+                       compatible = "thead,c920", "riscv";
+                       reg = <63>;
+                       i-cache-block-size = <64>;
+                       i-cache-size = <65536>;
+                       i-cache-sets = <512>;
+                       d-cache-block-size = <64>;
+                       d-cache-size = <65536>;
+                       d-cache-sets = <512>;
+                       device_type = "cpu";
+                       mmu-type = "riscv,sv48";
+                       next-level-cache = <&l2_cache15>;
+                       riscv,isa = "rv64imafdcv";
+                       riscv,isa-base = "rv64i";
+                       riscv,isa-extensions = "i", "m", "a", "f", "d", "c",
+                                              "v", "sscofpmf", "sstc",
+                                              "svinval", "svnapot", "svpbmt",
+                                              "zawrs", "zba", "zbb", "zbc",
+                                              "zbs", "zca", "zcb", "zcd",
+                                              "zfa", "zfbfmin", "zfh", "zfhmin",
+                                              "zicbom", "zicbop", "zicboz",
+                                              "zicntr", "zicond","zicsr", "zifencei",
+                                              "zihintntl", "zihintpause", "zihpm",
+                                              "zvfbfmin", "zvfbfwma", "zvfh",
+                                              "zvfhmin";
+                       riscv,cbom-block-size = <64>;
+                       riscv,cboz-block-size = <64>;
+
+                       cpu63_intc: interrupt-controller {
+                               compatible = "riscv,cpu-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                       };
+               };
+
+               cpu-map {
+                       socket0 {
+                               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>;
+                                       };
+                               };
+
+                               cluster2 {
+                                       core0 {
+                                               cpu = <&cpu8>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu9>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu10>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu11>;
+                                       };
+                               };
+
+                               cluster3 {
+                                       core0 {
+                                               cpu = <&cpu12>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu13>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu14>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu15>;
+                                       };
+                               };
+
+                               cluster4 {
+                                       core0 {
+                                               cpu = <&cpu16>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu17>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu18>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu19>;
+                                       };
+                               };
+
+                               cluster5 {
+                                       core0 {
+                                               cpu = <&cpu20>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu21>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu22>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu23>;
+                                       };
+                               };
+
+                               cluster6 {
+                                       core0 {
+                                               cpu = <&cpu24>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu25>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu26>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu27>;
+                                       };
+                               };
+
+                               cluster7 {
+                                       core0 {
+                                               cpu = <&cpu28>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu29>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu30>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu31>;
+                                       };
+                               };
+
+                               cluster8 {
+                                       core0 {
+                                               cpu = <&cpu32>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu33>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu34>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu35>;
+                                       };
+                               };
+
+                               cluster9 {
+                                       core0 {
+                                               cpu = <&cpu36>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu37>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu38>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu39>;
+                                       };
+                               };
+
+                               cluster10 {
+                                       core0 {
+                                               cpu = <&cpu40>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu41>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu42>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu43>;
+                                       };
+                               };
+
+                               cluster11 {
+                                       core0 {
+                                               cpu = <&cpu44>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu45>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu46>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu47>;
+                                       };
+                               };
+
+                               cluster12 {
+                                       core0 {
+                                               cpu = <&cpu48>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu49>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu50>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu51>;
+                                       };
+                               };
+
+                               cluster13 {
+                                       core0 {
+                                               cpu = <&cpu52>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu53>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu54>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu55>;
+                                       };
+                               };
+
+                               cluster14 {
+                                       core0 {
+                                               cpu = <&cpu56>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu57>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu58>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu59>;
+                                       };
+                               };
+
+                               cluster15 {
+                                       core0 {
+                                               cpu = <&cpu60>;
+                                       };
+
+                                       core1 {
+                                               cpu = <&cpu61>;
+                                       };
+
+                                       core2 {
+                                               cpu = <&cpu62>;
+                                       };
+
+                                       core3 {
+                                               cpu = <&cpu63>;
+                                       };
+                               };
+                       };
+               };
+
+               l2_cache0: cache-controller-0 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache1: cache-controller-1 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache2: cache-controller-2 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache3: cache-controller-3 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache4: cache-controller-4 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache5: cache-controller-5 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache6: cache-controller-6 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache7: cache-controller-7 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache8: cache-controller-8 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache9: cache-controller-9 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache10: cache-controller-10 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache11: cache-controller-11 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache12: cache-controller-12 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache13: cache-controller-13 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache14: cache-controller-14 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l2_cache15: cache-controller-15 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <2>;
+                       cache-size = <2097152>;
+                       cache-sets = <2048>;
+                       cache-unified;
+                       next-level-cache = <&l3_cache>;
+               };
+
+               l3_cache: cache-controller-16 {
+                       compatible = "cache";
+                       cache-block-size = <64>;
+                       cache-level = <3>;
+                       cache-size = <67108864>;
+                       cache-sets = <4096>;
+                       cache-unified;
+               };
+       };
+
+       soc {
+               intc: interrupt-controller@6d40000000 {
+                       compatible = "sophgo,sg2044-plic", "thead,c900-plic";
+                       #address-cells = <0>;
+                       #interrupt-cells = <2>;
+                       reg = <0x6d 0x40000000 0x0 0x4000000>;
+                       interrupt-controller;
+                       interrupts-extended =
+                               <&cpu0_intc 11>, <&cpu0_intc 9>,
+                               <&cpu1_intc 11>, <&cpu1_intc 9>,
+                               <&cpu2_intc 11>, <&cpu2_intc 9>,
+                               <&cpu3_intc 11>, <&cpu3_intc 9>,
+                               <&cpu4_intc 11>, <&cpu4_intc 9>,
+                               <&cpu5_intc 11>, <&cpu5_intc 9>,
+                               <&cpu6_intc 11>, <&cpu6_intc 9>,
+                               <&cpu7_intc 11>, <&cpu7_intc 9>,
+                               <&cpu8_intc 11>, <&cpu8_intc 9>,
+                               <&cpu9_intc 11>, <&cpu9_intc 9>,
+                               <&cpu10_intc 11>, <&cpu10_intc 9>,
+                               <&cpu11_intc 11>, <&cpu11_intc 9>,
+                               <&cpu12_intc 11>, <&cpu12_intc 9>,
+                               <&cpu13_intc 11>, <&cpu13_intc 9>,
+                               <&cpu14_intc 11>, <&cpu14_intc 9>,
+                               <&cpu15_intc 11>, <&cpu15_intc 9>,
+                               <&cpu16_intc 11>, <&cpu16_intc 9>,
+                               <&cpu17_intc 11>, <&cpu17_intc 9>,
+                               <&cpu18_intc 11>, <&cpu18_intc 9>,
+                               <&cpu19_intc 11>, <&cpu19_intc 9>,
+                               <&cpu20_intc 11>, <&cpu20_intc 9>,
+                               <&cpu21_intc 11>, <&cpu21_intc 9>,
+                               <&cpu22_intc 11>, <&cpu22_intc 9>,
+                               <&cpu23_intc 11>, <&cpu23_intc 9>,
+                               <&cpu24_intc 11>, <&cpu24_intc 9>,
+                               <&cpu25_intc 11>, <&cpu25_intc 9>,
+                               <&cpu26_intc 11>, <&cpu26_intc 9>,
+                               <&cpu27_intc 11>, <&cpu27_intc 9>,
+                               <&cpu28_intc 11>, <&cpu28_intc 9>,
+                               <&cpu29_intc 11>, <&cpu29_intc 9>,
+                               <&cpu30_intc 11>, <&cpu30_intc 9>,
+                               <&cpu31_intc 11>, <&cpu31_intc 9>,
+                               <&cpu32_intc 11>, <&cpu32_intc 9>,
+                               <&cpu33_intc 11>, <&cpu33_intc 9>,
+                               <&cpu34_intc 11>, <&cpu34_intc 9>,
+                               <&cpu35_intc 11>, <&cpu35_intc 9>,
+                               <&cpu36_intc 11>, <&cpu36_intc 9>,
+                               <&cpu37_intc 11>, <&cpu37_intc 9>,
+                               <&cpu38_intc 11>, <&cpu38_intc 9>,
+                               <&cpu39_intc 11>, <&cpu39_intc 9>,
+                               <&cpu40_intc 11>, <&cpu40_intc 9>,
+                               <&cpu41_intc 11>, <&cpu41_intc 9>,
+                               <&cpu42_intc 11>, <&cpu42_intc 9>,
+                               <&cpu43_intc 11>, <&cpu43_intc 9>,
+                               <&cpu44_intc 11>, <&cpu44_intc 9>,
+                               <&cpu45_intc 11>, <&cpu45_intc 9>,
+                               <&cpu46_intc 11>, <&cpu46_intc 9>,
+                               <&cpu47_intc 11>, <&cpu47_intc 9>,
+                               <&cpu48_intc 11>, <&cpu48_intc 9>,
+                               <&cpu49_intc 11>, <&cpu49_intc 9>,
+                               <&cpu50_intc 11>, <&cpu50_intc 9>,
+                               <&cpu51_intc 11>, <&cpu51_intc 9>,
+                               <&cpu52_intc 11>, <&cpu52_intc 9>,
+                               <&cpu53_intc 11>, <&cpu53_intc 9>,
+                               <&cpu54_intc 11>, <&cpu54_intc 9>,
+                               <&cpu55_intc 11>, <&cpu55_intc 9>,
+                               <&cpu56_intc 11>, <&cpu56_intc 9>,
+                               <&cpu57_intc 11>, <&cpu57_intc 9>,
+                               <&cpu58_intc 11>, <&cpu58_intc 9>,
+                               <&cpu59_intc 11>, <&cpu59_intc 9>,
+                               <&cpu60_intc 11>, <&cpu60_intc 9>,
+                               <&cpu61_intc 11>, <&cpu61_intc 9>,
+                               <&cpu62_intc 11>, <&cpu62_intc 9>,
+                               <&cpu63_intc 11>, <&cpu63_intc 9>;
+                       riscv,ndev = <863>;
+               };
+
+               aclint_mswi: interrupt-controller@6d44000000 {
+                       compatible = "sophgo,sg2044-aclint-mswi", "thead,c900-aclint-mswi";
+                       reg = <0x6d 0x44000000 0x0 0x4000>;
+                       interrupts-extended = <&cpu0_intc 3>,
+                                             <&cpu1_intc 3>,
+                                             <&cpu2_intc 3>,
+                                             <&cpu3_intc 3>,
+                                             <&cpu4_intc 3>,
+                                             <&cpu5_intc 3>,
+                                             <&cpu6_intc 3>,
+                                             <&cpu7_intc 3>,
+                                             <&cpu8_intc 3>,
+                                             <&cpu9_intc 3>,
+                                             <&cpu10_intc 3>,
+                                             <&cpu11_intc 3>,
+                                             <&cpu12_intc 3>,
+                                             <&cpu13_intc 3>,
+                                             <&cpu14_intc 3>,
+                                             <&cpu15_intc 3>,
+                                             <&cpu16_intc 3>,
+                                             <&cpu17_intc 3>,
+                                             <&cpu18_intc 3>,
+                                             <&cpu19_intc 3>,
+                                             <&cpu20_intc 3>,
+                                             <&cpu21_intc 3>,
+                                             <&cpu22_intc 3>,
+                                             <&cpu23_intc 3>,
+                                             <&cpu24_intc 3>,
+                                             <&cpu25_intc 3>,
+                                             <&cpu26_intc 3>,
+                                             <&cpu27_intc 3>,
+                                             <&cpu28_intc 3>,
+                                             <&cpu29_intc 3>,
+                                             <&cpu30_intc 3>,
+                                             <&cpu31_intc 3>,
+                                             <&cpu32_intc 3>,
+                                             <&cpu33_intc 3>,
+                                             <&cpu34_intc 3>,
+                                             <&cpu35_intc 3>,
+                                             <&cpu36_intc 3>,
+                                             <&cpu37_intc 3>,
+                                             <&cpu38_intc 3>,
+                                             <&cpu39_intc 3>,
+                                             <&cpu40_intc 3>,
+                                             <&cpu41_intc 3>,
+                                             <&cpu42_intc 3>,
+                                             <&cpu43_intc 3>,
+                                             <&cpu44_intc 3>,
+                                             <&cpu45_intc 3>,
+                                             <&cpu46_intc 3>,
+                                             <&cpu47_intc 3>,
+                                             <&cpu48_intc 3>,
+                                             <&cpu49_intc 3>,
+                                             <&cpu50_intc 3>,
+                                             <&cpu51_intc 3>,
+                                             <&cpu52_intc 3>,
+                                             <&cpu53_intc 3>,
+                                             <&cpu54_intc 3>,
+                                             <&cpu55_intc 3>,
+                                             <&cpu56_intc 3>,
+                                             <&cpu57_intc 3>,
+                                             <&cpu58_intc 3>,
+                                             <&cpu59_intc 3>,
+                                             <&cpu60_intc 3>,
+                                             <&cpu61_intc 3>,
+                                             <&cpu62_intc 3>,
+                                             <&cpu63_intc 3>;
+               };
+
+               aclint_mtimer: timer@6d44004000 {
+                       compatible = "sophgo,sg2044-aclint-mtimer", "thead,c900-aclint-mtimer";
+                       reg = <0x6d 0x44004000 0x0 0x8000>;
+                       reg-names = "mtimecmp";
+                       interrupts-extended = <&cpu0_intc 7>,
+                                             <&cpu1_intc 7>,
+                                             <&cpu2_intc 7>,
+                                             <&cpu3_intc 7>,
+                                             <&cpu4_intc 7>,
+                                             <&cpu5_intc 7>,
+                                             <&cpu6_intc 7>,
+                                             <&cpu7_intc 7>,
+                                             <&cpu8_intc 7>,
+                                             <&cpu9_intc 7>,
+                                             <&cpu10_intc 7>,
+                                             <&cpu11_intc 7>,
+                                             <&cpu12_intc 7>,
+                                             <&cpu13_intc 7>,
+                                             <&cpu14_intc 7>,
+                                             <&cpu15_intc 7>,
+                                             <&cpu16_intc 7>,
+                                             <&cpu17_intc 7>,
+                                             <&cpu18_intc 7>,
+                                             <&cpu19_intc 7>,
+                                             <&cpu20_intc 7>,
+                                             <&cpu21_intc 7>,
+                                             <&cpu22_intc 7>,
+                                             <&cpu23_intc 7>,
+                                             <&cpu24_intc 7>,
+                                             <&cpu25_intc 7>,
+                                             <&cpu26_intc 7>,
+                                             <&cpu27_intc 7>,
+                                             <&cpu28_intc 7>,
+                                             <&cpu29_intc 7>,
+                                             <&cpu30_intc 7>,
+                                             <&cpu31_intc 7>,
+                                             <&cpu32_intc 7>,
+                                             <&cpu33_intc 7>,
+                                             <&cpu34_intc 7>,
+                                             <&cpu35_intc 7>,
+                                             <&cpu36_intc 7>,
+                                             <&cpu37_intc 7>,
+                                             <&cpu38_intc 7>,
+                                             <&cpu39_intc 7>,
+                                             <&cpu40_intc 7>,
+                                             <&cpu41_intc 7>,
+                                             <&cpu42_intc 7>,
+                                             <&cpu43_intc 7>,
+                                             <&cpu44_intc 7>,
+                                             <&cpu45_intc 7>,
+                                             <&cpu46_intc 7>,
+                                             <&cpu47_intc 7>,
+                                             <&cpu48_intc 7>,
+                                             <&cpu49_intc 7>,
+                                             <&cpu50_intc 7>,
+                                             <&cpu51_intc 7>,
+                                             <&cpu52_intc 7>,
+                                             <&cpu53_intc 7>,
+                                             <&cpu54_intc 7>,
+                                             <&cpu55_intc 7>,
+                                             <&cpu56_intc 7>,
+                                             <&cpu57_intc 7>,
+                                             <&cpu58_intc 7>,
+                                             <&cpu59_intc 7>,
+                                             <&cpu60_intc 7>,
+                                             <&cpu61_intc 7>,
+                                             <&cpu62_intc 7>,
+                                             <&cpu63_intc 7>;
+               };
+
+               aclint_sswi: interrupt-controller@6d4400c000 {
+                       compatible = "sophgo,sg2044-aclint-sswi", "thead,c900-aclint-sswi";
+                       reg = <0x6d 0x4400c000 0x0 0x1000>;
+                       #interrupt-cells = <0>;
+                       interrupt-controller;
+                       interrupts-extended = <&cpu0_intc 1>,
+                                             <&cpu1_intc 1>,
+                                             <&cpu2_intc 1>,
+                                             <&cpu3_intc 1>,
+                                             <&cpu4_intc 1>,
+                                             <&cpu5_intc 1>,
+                                             <&cpu6_intc 1>,
+                                             <&cpu7_intc 1>,
+                                             <&cpu8_intc 1>,
+                                             <&cpu9_intc 1>,
+                                             <&cpu10_intc 1>,
+                                             <&cpu11_intc 1>,
+                                             <&cpu12_intc 1>,
+                                             <&cpu13_intc 1>,
+                                             <&cpu14_intc 1>,
+                                             <&cpu15_intc 1>,
+                                             <&cpu16_intc 1>,
+                                             <&cpu17_intc 1>,
+                                             <&cpu18_intc 1>,
+                                             <&cpu19_intc 1>,
+                                             <&cpu20_intc 1>,
+                                             <&cpu21_intc 1>,
+                                             <&cpu22_intc 1>,
+                                             <&cpu23_intc 1>,
+                                             <&cpu24_intc 1>,
+                                             <&cpu25_intc 1>,
+                                             <&cpu26_intc 1>,
+                                             <&cpu27_intc 1>,
+                                             <&cpu28_intc 1>,
+                                             <&cpu29_intc 1>,
+                                             <&cpu30_intc 1>,
+                                             <&cpu31_intc 1>,
+                                             <&cpu32_intc 1>,
+                                             <&cpu33_intc 1>,
+                                             <&cpu34_intc 1>,
+                                             <&cpu35_intc 1>,
+                                             <&cpu36_intc 1>,
+                                             <&cpu37_intc 1>,
+                                             <&cpu38_intc 1>,
+                                             <&cpu39_intc 1>,
+                                             <&cpu40_intc 1>,
+                                             <&cpu41_intc 1>,
+                                             <&cpu42_intc 1>,
+                                             <&cpu43_intc 1>,
+                                             <&cpu44_intc 1>,
+                                             <&cpu45_intc 1>,
+                                             <&cpu46_intc 1>,
+                                             <&cpu47_intc 1>,
+                                             <&cpu48_intc 1>,
+                                             <&cpu49_intc 1>,
+                                             <&cpu50_intc 1>,
+                                             <&cpu51_intc 1>,
+                                             <&cpu52_intc 1>,
+                                             <&cpu53_intc 1>,
+                                             <&cpu54_intc 1>,
+                                             <&cpu55_intc 1>,
+                                             <&cpu56_intc 1>,
+                                             <&cpu57_intc 1>,
+                                             <&cpu58_intc 1>,
+                                             <&cpu59_intc 1>,
+                                             <&cpu60_intc 1>,
+                                             <&cpu61_intc 1>,
+                                             <&cpu62_intc 1>,
+                                             <&cpu63_intc 1>;
+               };
+       };
+};
diff --git a/src/riscv/sophgo/sg2044-reset.h b/src/riscv/sophgo/sg2044-reset.h
new file mode 100644 (file)
index 0000000..3a7bbfd
--- /dev/null
@@ -0,0 +1,128 @@
+/* SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause */
+/*
+ * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com>
+ */
+
+#ifndef _SG2044_RESET_H
+#define _SG2044_RESET_H
+
+#define RST_AP_SYS                     0
+#define RST_AP_SYS_CORE0               1
+#define RST_AP_SYS_CORE1               2
+#define RST_AP_SYS_CORE2               3
+#define RST_AP_SYS_CORE3               4
+#define RST_AP_PIC                     5
+#define RST_AP_TDT                     6
+#define RST_RP_PIC_TDT                 7
+#define RST_HSDMA                      8
+#define RST_SYSDMA                     9
+#define RST_EFUSE0                     10
+#define RST_EFUSE1                     11
+#define RST_RTC                                12
+#define RST_TIMER                      13
+#define RST_WDT                                14
+#define RST_AHB_ROM0                   15
+#define RST_AHB_ROM1                   16
+#define RST_I2C0                       17
+#define RST_I2C1                       18
+#define RST_I2C2                       19
+#define RST_I2C3                       20
+#define RST_GPIO0                      21
+#define RST_GPIO1                      22
+#define RST_GPIO2                      23
+#define RST_PWM                                24
+#define RST_AXI_SRAM0                  25
+#define RST_AXI_SRAM1                  26
+#define RST_SPIFMC0                    27
+#define RST_SPIFMC1                    28
+#define RST_MAILBOX                    29
+#define RST_ETH0                       30
+#define RST_EMMC                       31
+#define RST_SD                         32
+#define RST_UART0                      33
+#define RST_UART1                      34
+#define RST_UART2                      35
+#define RST_UART3                      36
+#define RST_SPI0                       37
+#define RST_SPI1                       38
+#define RST_MTLI                       39
+#define RST_DBG_I2C                    40
+#define RST_C2C0                       41
+#define RST_C2C1                       42
+#define RST_C2C2                       43
+#define RST_C2C3                       44
+#define RST_CXP                                45
+#define RST_DDR0                       46
+#define RST_DDR1                       47
+#define RST_DDR2                       48
+#define RST_DDR3                       49
+#define RST_DDR4                       50
+#define RST_DDR5                       51
+#define RST_DDR6                       52
+#define RST_DDR7                       53
+#define RST_DDR8                       54
+#define RST_DDR9                       55
+#define RST_DDR10                      56
+#define RST_DDR11                      57
+#define RST_DDR12                      58
+#define RST_DDR13                      59
+#define RST_DDR14                      60
+#define RST_DDR15                      61
+#define RST_BAR                                62
+#define RST_K2K                                63
+#define RST_CC_SYS_X1Y1                        64
+#define RST_CC_SYS_X1Y2                        65
+#define RST_CC_SYS_X1Y3                        66
+#define RST_CC_SYS_X1Y4                        67
+#define RST_CC_SYS_X0Y1                        68
+#define RST_CC_SYS_X0Y2                        69
+#define RST_CC_SYS_X0Y3                        70
+#define RST_CC_SYS_X0Y4                        71
+#define RST_SC_X1Y1                    80
+#define RST_SC_X1Y2                    81
+#define RST_SC_X1Y3                    82
+#define RST_SC_X1Y4                    83
+#define RST_SC_X0Y1                    84
+#define RST_SC_X0Y2                    85
+#define RST_SC_X0Y3                    86
+#define RST_SC_X0Y4                    87
+#define RST_RP_CLUSTER_X1Y1_S0         160
+#define RST_RP_CLUSTER_X1Y1_S1         161
+#define RST_RP_CLUSTER_X1Y2_S0         162
+#define RST_RP_CLUSTER_X1Y2_S1         163
+#define RST_RP_CLUSTER_X1Y3_S0         164
+#define RST_RP_CLUSTER_X1Y3_S1         165
+#define RST_RP_CLUSTER_X1Y4_S0         166
+#define RST_RP_CLUSTER_X1Y4_S1         167
+#define RST_RP_CLUSTER_X0Y1_W0         168
+#define RST_RP_CLUSTER_X0Y1_W1         169
+#define RST_RP_CLUSTER_X0Y2_W0         170
+#define RST_RP_CLUSTER_X0Y2_W1         171
+#define RST_RP_CLUSTER_X0Y3_W0         172
+#define RST_RP_CLUSTER_X0Y3_W1         173
+#define RST_RP_CLUSTER_X0Y4_W0         174
+#define RST_RP_CLUSTER_X0Y4_W1         175
+#define RST_TPSYS_X1Y1                 180
+#define RST_TPSYS_X1Y2                 181
+#define RST_TPSYS_X1Y3                 182
+#define RST_TPSYS_X1Y4                 183
+#define RST_TPSYS_X0Y1                 184
+#define RST_TPSYS_X0Y2                 185
+#define RST_TPSYS_X0Y3                 186
+#define RST_TPSYS_X0Y4                 187
+#define RST_SPACC                      188
+#define RST_PKA                                189
+#define RST_SE_TRNG                    190
+#define RST_SE_DBG                     191
+#define RST_SE_FAB_FW                  192
+#define RST_SE_CTRL                    193
+#define RST_MAILBOX0                   194
+#define RST_MAILBOX1                   195
+#define RST_MAILBOX2                   196
+#define RST_MAILBOX3                   197
+#define RST_INTC0                      198
+#define RST_INTC1                      199
+#define RST_INTC2                      200
+#define RST_INTC3                      201
+
+#endif /* _DT_BINDINGS_SG2044_RESET_H */
diff --git a/src/riscv/sophgo/sg2044-sophgo-srd3-10.dts b/src/riscv/sophgo/sg2044-sophgo-srd3-10.dts
new file mode 100644 (file)
index 0000000..54cdf42
--- /dev/null
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "sg2044.dtsi"
+
+/ {
+       model = "Sophgo SG2044 SRD3-10";
+       compatible = "sophgo,srd3-10", "sophgo,sg2044";
+
+       aliases {
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+       };
+
+       chosen {
+               stdout-path = "serial1:115200n8";
+       };
+};
+
+&osc {
+       clock-frequency = <25000000>;
+};
+
+&uart1 {
+       status = "okay";
+};
diff --git a/src/riscv/sophgo/sg2044.dtsi b/src/riscv/sophgo/sg2044.dtsi
new file mode 100644 (file)
index 0000000..d67e45f
--- /dev/null
@@ -0,0 +1,86 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2025 Inochi Amaoto <inochiama@gmail.com>
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+
+#include "sg2044-cpus.dtsi"
+#include "sg2044-reset.h"
+
+/ {
+       compatible = "sophgo,sg2044";
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x00000000 0x80000000 0x00000010 0x00000000>;
+       };
+
+       osc: oscillator {
+               compatible = "fixed-clock";
+               clock-output-names = "osc";
+               #clock-cells = <0>;
+       };
+
+       soc {
+               compatible = "simple-bus";
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               uart0: serial@7030000000 {
+                       compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart";
+                       reg = <0x70 0x30000000 0x0 0x1000>;
+                       clock-frequency = <500000000>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <41 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       resets = <&rst RST_UART0>;
+                       status = "disabled";
+               };
+
+               uart1: serial@7030001000 {
+                       compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart";
+                       reg = <0x70 0x30001000 0x0 0x1000>;
+                       clock-frequency = <500000000>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <42 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       resets = <&rst RST_UART1>;
+                       status = "disabled";
+               };
+
+               uart2: serial@7030002000 {
+                       compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart";
+                       reg = <0x70 0x30002000 0x0 0x1000>;
+                       clock-frequency = <500000000>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <43 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       resets = <&rst RST_UART2>;
+                       status = "disabled";
+               };
+
+               uart3: serial@7030003000 {
+                       compatible = "sophgo,sg2044-uart", "snps,dw-apb-uart";
+                       reg = <0x70 0x30003000 0x0 0x1000>;
+                       clock-frequency = <500000000>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <44 IRQ_TYPE_LEVEL_HIGH>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       resets = <&rst RST_UART3>;
+                       status = "disabled";
+               };
+
+               rst: reset-controller@7050003000 {
+                       compatible = "sophgo,sg2044-reset",
+                                    "sophgo,sg2042-reset";
+                       reg = <0x70 0x50003000 0x0 0x1000>;
+                       #reset-cells = <1>;
+               };
+       };
+};
index 1d617b40a2d51ee464b57234d248798aeb218643..816ef1bc358ec490aff184d5915d680dbd9f00cb 100644 (file)
        chosen {
                stdout-path = "serial0";
        };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led1 {
+                       label = "sys-led";
+                       gpios = <&gpio K1_GPIO(96) GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       default-state = "on";
+               };
+       };
 };
 
 &uart0 {
index a8eac5517f8578d60cb45214589ccb45ac376b9a..283663647a86ff137917ced8bfe79a129c86342a 100644 (file)
@@ -7,6 +7,9 @@
 
 #define K1_PADCONF(pin, func) (((pin) << 16) | (func))
 
+/* Map GPIO pin to each bank's <index, offset> */
+#define K1_GPIO(x)     (x / 32) (x % 32)
+
 &pinctrl {
        uart0_2_cfg: uart0-2-cfg {
                uart0-2-pins {
index c670ebf8fa12917aa6493fcd89fdd1409529538b..c0f8c5fca975d73b6ea6886da13fcf55289cb16c 100644 (file)
@@ -3,6 +3,8 @@
  * Copyright (C) 2024 Yangyu Chen <cyy@cyyself.name>
  */
 
+#include <dt-bindings/clock/spacemit,k1-syscon.h>
+
 /dts-v1/;
 / {
        #address-cells = <2>;
                };
        };
 
+       clocks {
+               vctcxo_1m: clock-1m {
+                       compatible = "fixed-clock";
+                       clock-frequency = <1000000>;
+                       clock-output-names = "vctcxo_1m";
+                       #clock-cells = <0>;
+               };
+
+               vctcxo_24m: clock-24m {
+                       compatible = "fixed-clock";
+                       clock-frequency = <24000000>;
+                       clock-output-names = "vctcxo_24m";
+                       #clock-cells = <0>;
+               };
+
+               vctcxo_3m: clock-3m {
+                       compatible = "fixed-clock";
+                       clock-frequency = <3000000>;
+                       clock-output-names = "vctcxo_3m";
+                       #clock-cells = <0>;
+               };
+
+               osc_32k: clock-32k {
+                       compatible = "fixed-clock";
+                       clock-frequency = <32000>;
+                       clock-output-names = "osc_32k";
+                       #clock-cells = <0>;
+               };
+       };
+
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&plic>;
                dma-noncoherent;
                ranges;
 
+               syscon_apbc: system-controller@d4015000 {
+                       compatible = "spacemit,k1-syscon-apbc";
+                       reg = <0x0 0xd4015000 0x0 0x1000>;
+                       clocks = <&osc_32k>, <&vctcxo_1m>, <&vctcxo_3m>,
+                                <&vctcxo_24m>;
+                       clock-names = "osc", "vctcxo_1m", "vctcxo_3m",
+                                     "vctcxo_24m";
+                       #clock-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
                uart0: serial@d4017000 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017000 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART0>,
+                                <&syscon_apbc CLK_UART0_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <42>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                uart2: serial@d4017100 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017100 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART2>,
+                                <&syscon_apbc CLK_UART2_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <44>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                uart3: serial@d4017200 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017200 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART3>,
+                                <&syscon_apbc CLK_UART3_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <45>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                uart4: serial@d4017300 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017300 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART4>,
+                                <&syscon_apbc CLK_UART4_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <46>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                uart5: serial@d4017400 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017400 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART5>,
+                                <&syscon_apbc CLK_UART5_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <47>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                uart6: serial@d4017500 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017500 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART6>,
+                                <&syscon_apbc CLK_UART6_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <48>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                uart7: serial@d4017600 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017600 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART7>,
+                                <&syscon_apbc CLK_UART7_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <49>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                uart8: serial@d4017700 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017700 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART8>,
+                                <&syscon_apbc CLK_UART8_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <50>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                uart9: serial@d4017800 {
                        compatible = "spacemit,k1-uart", "intel,xscale-uart";
                        reg = <0x0 0xd4017800 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_UART9>,
+                                <&syscon_apbc CLK_UART9_BUS>;
+                       clock-names = "core", "bus";
                        interrupts = <51>;
-                       clock-frequency = <14857000>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
                        status = "disabled";
                };
 
+               gpio: gpio@d4019000 {
+                       compatible = "spacemit,k1-gpio";
+                       reg = <0x0 0xd4019000 0x0 0x100>;
+                       clocks = <&syscon_apbc CLK_GPIO>,
+                                <&syscon_apbc CLK_GPIO_BUS>;
+                       clock-names = "core", "bus";
+                       gpio-controller;
+                       #gpio-cells = <3>;
+                       interrupts = <58>;
+                       interrupt-parent = <&plic>;
+                       interrupt-controller;
+                       #interrupt-cells = <3>;
+                       gpio-ranges = <&pinctrl 0 0 0 32>,
+                                     <&pinctrl 1 0 32 32>,
+                                     <&pinctrl 2 0 64 32>,
+                                     <&pinctrl 3 0 96 32>;
+               };
+
                pinctrl: pinctrl@d401e000 {
                        compatible = "spacemit,k1-pinctrl";
                        reg = <0x0 0xd401e000 0x0 0x400>;
+                       clocks = <&syscon_apbc CLK_AIB>,
+                                <&syscon_apbc CLK_AIB_BUS>;
+                       clock-names = "func", "bus";
+               };
+
+               syscon_mpmu: system-controller@d4050000 {
+                       compatible = "spacemit,k1-syscon-mpmu";
+                       reg = <0x0 0xd4050000 0x0 0x209c>;
+                       clocks = <&osc_32k>, <&vctcxo_1m>, <&vctcxo_3m>,
+                                <&vctcxo_24m>;
+                       clock-names = "osc", "vctcxo_1m", "vctcxo_3m",
+                                     "vctcxo_24m";
+                       #clock-cells = <1>;
+                       #power-domain-cells = <1>;
+                       #reset-cells = <1>;
+               };
+
+               pll: clock-controller@d4090000 {
+                       compatible = "spacemit,k1-pll";
+                       reg = <0x0 0xd4090000 0x0 0x1000>;
+                       clocks = <&vctcxo_24m>;
+                       spacemit,mpmu = <&syscon_mpmu>;
+                       #clock-cells = <1>;
+               };
+
+               syscon_apmu: system-controller@d4282800 {
+                       compatible = "spacemit,k1-syscon-apmu";
+                       reg = <0x0 0xd4282800 0x0 0x400>;
+                       clocks = <&osc_32k>, <&vctcxo_1m>, <&vctcxo_3m>,
+                                <&vctcxo_24m>;
+                       clock-names = "osc", "vctcxo_1m", "vctcxo_3m",
+                                     "vctcxo_24m";
+                       #clock-cells = <1>;
+                       #power-domain-cells = <1>;
+                       #reset-cells = <1>;
                };
 
                plic: interrupt-controller@e0000000 {
index c2f70f5e2918fcd30dc862d932dc6eec8b9fb1b7..4baeb981d4dfd1ee63ad9f82cd1bae74aa8c931a 100644 (file)
@@ -8,6 +8,7 @@
 #include "jh7110.dtsi"
 #include "jh7110-pinfunc.h"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/starfive,jh7110-pinctrl.h>
 
 / {
        aliases {
@@ -28,6 +29,7 @@
        memory@40000000 {
                device_type = "memory";
                reg = <0x0 0x40000000 0x1 0x0>;
+               bootph-pre-ram;
        };
 
        gpio-restart {
                        };
                };
        };
+
+       eeprom@50 {
+               compatible = "atmel,24c04";
+               reg = <0x50>;
+               bootph-pre-ram;
+               pagesize = <16>;
+       };
 };
 
 &i2c6 {
        assigned-clocks = <&syscrg JH7110_SYSCLK_SDIO0_SDCARD>;
        assigned-clock-rates = <50000000>;
        bus-width = <8>;
+       bootph-pre-ram;
        cap-mmc-highspeed;
        mmc-ddr-1_8v;
        mmc-hs200-1_8v;
        assigned-clocks = <&syscrg JH7110_SYSCLK_SDIO1_SDCARD>;
        assigned-clock-rates = <50000000>;
        bus-width = <4>;
+       bootph-pre-ram;
        no-sdio;
        no-mmc;
        cd-gpios = <&sysgpio 41 GPIO_ACTIVE_LOW>;
        nor_flash: flash@0 {
                compatible = "jedec,spi-nor";
                reg = <0>;
-               cdns,read-delay = <5>;
-               spi-max-frequency = <12000000>;
+               bootph-pre-ram;
+               cdns,read-delay = <2>;
+               spi-max-frequency = <100000000>;
                cdns,tshsl-ns = <1>;
                cdns,tsd2d-ns = <1>;
                cdns,tchsh-ns = <1>;
 };
 
 &syscrg {
-       assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>,
+       assigned-clocks = <&syscrg JH7110_SYSCLK_CPU_ROOT>,
+                         <&syscrg JH7110_SYSCLK_BUS_ROOT>,
+                         <&syscrg JH7110_SYSCLK_PERH_ROOT>,
+                         <&syscrg JH7110_SYSCLK_QSPI_REF>,
+                         <&syscrg JH7110_SYSCLK_CPU_CORE>,
                          <&pllclk JH7110_PLLCLK_PLL0_OUT>;
-       assigned-clock-rates = <500000000>, <1500000000>;
+       assigned-clock-parents = <&pllclk JH7110_PLLCLK_PLL0_OUT>,
+                                <&pllclk JH7110_PLLCLK_PLL2_OUT>,
+                                <&pllclk JH7110_PLLCLK_PLL2_OUT>,
+                                <&syscrg JH7110_SYSCLK_QSPI_REF_SRC>;
+       assigned-clock-rates = <0>, <0>, <0>, <0>, <500000000>, <1500000000>;
 };
 
 &sysgpio {
        };
 
        i2c5_pins: i2c5-0 {
+               bootph-pre-ram;
+
                i2c-pins {
                        pinmux = <GPIOMUX(19, GPOUT_LOW,
                                              GPOEN_SYS_I2C5_CLK,
                                              GPOEN_SYS_I2C5_DATA,
                                              GPI_SYS_I2C5_DATA)>;
                        bias-disable; /* external pull-up */
+                       bootph-pre-ram;
                        input-enable;
                        input-schmitt-enable;
                };
                };
 
                mmc-pins {
-                       pinmux = <PINMUX(64, 0)>,
-                                <PINMUX(65, 0)>,
-                                <PINMUX(66, 0)>,
-                                <PINMUX(67, 0)>,
-                                <PINMUX(68, 0)>,
-                                <PINMUX(69, 0)>,
-                                <PINMUX(70, 0)>,
-                                <PINMUX(71, 0)>,
-                                <PINMUX(72, 0)>,
-                                <PINMUX(73, 0)>;
+                       pinmux = <PINMUX(PAD_SD0_CLK, 0)>,
+                                <PINMUX(PAD_SD0_CMD, 0)>,
+                                <PINMUX(PAD_SD0_DATA0, 0)>,
+                                <PINMUX(PAD_SD0_DATA1, 0)>,
+                                <PINMUX(PAD_SD0_DATA2, 0)>,
+                                <PINMUX(PAD_SD0_DATA3, 0)>,
+                                <PINMUX(PAD_SD0_DATA4, 0)>,
+                                <PINMUX(PAD_SD0_DATA5, 0)>,
+                                <PINMUX(PAD_SD0_DATA6, 0)>,
+                                <PINMUX(PAD_SD0_DATA7, 0)>;
                        bias-pull-up;
                        drive-strength = <12>;
                        input-enable;
 };
 
 &uart0 {
+       bootph-pre-ram;
        pinctrl-names = "default";
        pinctrl-0 = <&uart0_pins>;
        status = "okay";
index 8d9ce8b69a71be78ca57618ae842c9f415648450..f2857d021d6812197dae5460a64dbc53155959a1 100644 (file)
                        slew-rate = <0>;
                };
        };
+
+       usb0_pins: usb0-0 {
+               vbus-pins {
+                       pinmux = <GPIOMUX(25,  GPOUT_SYS_USB_DRIVE_VBUS,
+                                              GPOEN_ENABLE,
+                                              GPI_NONE)>;
+                       bias-disable;
+                       input-disable;
+                       input-schmitt-disable;
+                       slew-rate = <0>;
+               };
+       };
 };
 
 &usb0 {
        dr_mode = "host";
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_pins>;
        status = "okay";
 };
+
+&usb_cdns3 {
+       phys = <&usbphy0>, <&pciephy0>;
+       phy-names = "cdns3,usb2-phy", "cdns3,usb3-phy";
+};
index 527336417765d8470426f2985e1bc22eeafb31aa..1db0054c4e093400e9dbebcee5fcfa5b5cae6e32 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <dt-bindings/interrupt-controller/irq.h>
 #include <dt-bindings/clock/thead,th1520-clk-ap.h>
+#include <dt-bindings/power/thead,th1520-power.h>
 
 / {
        compatible = "thead,th1520";
                snps,blen = <0 0 64 32 0 0 0>;
        };
 
+       aon: aon {
+               compatible = "thead,th1520-aon";
+               mboxes = <&mbox_910t 1>;
+               mbox-names = "aon";
+               #power-domain-cells = <1>;
+       };
+
        soc {
                compatible = "simple-bus";
                interrupt-parent = <&plic>;
                        #clock-cells = <1>;
                };
 
+               rst: reset-controller@ffef528000 {
+                       compatible = "thead,th1520-reset";
+                       reg = <0xff 0xef528000 0x0 0x4f>;
+                       #reset-cells = <1>;
+               };
+
+               clk_vo: clock-controller@ffef528050 {
+                       compatible = "thead,th1520-clk-vo";
+                       reg = <0xff 0xef528050 0x0 0xfb0>;
+                       clocks = <&clk CLK_VIDEO_PLL>;
+                       #clock-cells = <1>;
+               };
+
                dmac0: dma-controller@ffefc00000 {
                        compatible = "snps,axi-dma-1.01a";
                        reg = <0xff 0xefc00000 0x0 0x1000>;